diff --git a/application/.editorconfig b/.editorconfig similarity index 100% rename from application/.editorconfig rename to .editorconfig diff --git a/.gitignore b/.gitignore index cdb5bf8..5ea3b12 100644 --- a/.gitignore +++ b/.gitignore @@ -1,34 +1,49 @@ -# Node -node_modules/* -npm-debug.log +# See http://help.github.com/ignore-files/ for more about ignoring files. -# TypeScript -src/*.js -src/*.map -src/*.d.ts +# compiled output +/dist +/tmp +/out-tsc -# JetBrains -.idea +# dependencies +/node_modules + +# IDEs and editors +/.idea .project -.settings -.idea/* -*.iml +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace -# VS Code +# IDE - VSCode .vscode/* -# Windows +# misc +/.sass-cache +/connect.lock +/coverage +/libpeerconnection.log +npm-debug.log +yarn-error.log +testem.log +/typings + +# System Files +.DS_Store Thumbs.db Desktop.ini -# Mac -.DS_Store -**/.DS_Store +# JetBrains +.idea +.project +.settings +.idea/* +*.iml # Ngc generated files **/*.ngfactory.ts -# Build files -dist/* # Tests coverage/* \ No newline at end of file diff --git a/.npmignore b/.npmignore deleted file mode 100644 index 489b08c..0000000 --- a/.npmignore +++ /dev/null @@ -1,38 +0,0 @@ -# Node -node_modules/* -npm-debug.log -docs/* -# DO NOT IGNORE TYPESCRIPT FILES FOR NPM -# TypeScript -# *.js -# *.map -# *.d.ts - -# JetBrains -.idea -.project -.settings -.idea/* -*.iml - -# VS Code -.vscode/* - -# Windows -Thumbs.db -Desktop.ini - -# Mac -.DS_Store -**/.DS_Store - -# Ngc generated files -**/*.ngfactory.ts - -# Library files -src/* -build/* -application/* - -# Tests -coverage/* \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index 9cb7234..c71a95a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,7 @@ language: node_js sudo: true node_js: -- '6.11.2' +- '8.11.1' script: npm run test:single diff --git a/.yo-rc.json b/.yo-rc.json deleted file mode 100644 index 9b477f2..0000000 --- a/.yo-rc.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "generator-angular2-library": { - "promptValues": { - "gitRepositoryUrl": "https://github.com/AlexKhymenko/ngx-permissions" - } - } -} \ No newline at end of file diff --git a/README.md b/README.md index c15902a..e806274 100644 --- a/README.md +++ b/README.md @@ -1140,6 +1140,54 @@ const appRoutes: Routes = [ ``` ---------------------------- +### Unit Testing of Component ( ByPassing Directive ) + +```typescript +import { Component, OnInit } from '@angular/core'; +import { NgxPermissionsService } from 'ngx-permissions'; +@Component({ + selector: 'app-root', + templateUrl: './app.component.html', + styleUrls: ['./app.component.css'] +}) +export class AppComponent implements OnInit { + + title = 'app'; + + constructor(private permissionsService: NgxPermissionsService) {} + + ngOnInit(): void { + const perm = ["ADMIN", "EDITOR"]; + this.permissionsService.loadPermissions(perm); + } +} +``` +```html +
+

Hey! You can see me.

+

+``` + +```typescript +import { NgxPermissionsAllowStubModule } from 'ngx-permissions'; +describe('AppComponent', () => { + beforeEach(() => { + TestBed.configureTestingModule({ + imports: [ + NgxPermissionsAllowStubModule, + ], + schemas: [NO_ERRORS_SCHEMA], + }); + fixture = TestBed.createComponent(AppComponent); + + }); + + it('can find the p element and bypass the directive', () => { + const element = fixture.nativeElement; + expect(element.getElementsByClassName('pull-right').length).toBe(1); + }); +}) +``` ## Common use cases @@ -1187,17 +1235,26 @@ let routes = [ | --- | ## Development -To generate all `*.js`, `*.d.ts` and `*.metadata.json` files: +This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 6.0.0. -```bash -$ npm run build -``` -To lint all `*.ts` files: +### Demo App + +Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files. + +### Build + +Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `--prod` flag for a production build. + +### Running unit tests + +Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io). + +### Running end-to-end tests + +Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/). + -```bash -$ npm run lint -``` ## Thank You `Thank You for using the library and support. HAVE A GREAT DAY!` diff --git a/application/angular.json b/angular.json similarity index 54% rename from application/angular.json rename to angular.json index a553d18..19c93e2 100644 --- a/application/angular.json +++ b/angular.json @@ -3,22 +3,24 @@ "version": 1, "newProjectRoot": "projects", "projects": { - "application": { + "ngx-permissions": { "root": "", "sourceRoot": "src", "projectType": "application", + "prefix": "app", + "schematics": {}, "architect": { "build": { "builder": "@angular-devkit/build-angular:browser", "options": { - "outputPath": "dist", + "outputPath": "dist/ngx-permissions", "index": "src/index.html", "main": "src/main.ts", - "tsConfig": "src/tsconfig.app.json", "polyfills": "src/polyfills.ts", + "tsConfig": "src/tsconfig.app.json", "assets": [ - "src/assets", - "src/favicon.ico" + "src/favicon.ico", + "src/assets" ], "styles": [ "src/styles.css" @@ -27,6 +29,12 @@ }, "configurations": { "production": { + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.prod.ts" + } + ], "optimization": true, "outputHashing": "all", "sourceMap": false, @@ -35,47 +43,41 @@ "aot": true, "extractLicenses": true, "vendorChunk": false, - "buildOptimizer": true, - "fileReplacements": [ - { - "replace": "src/environments/environment.ts", - "with": "src/environments/environment.prod.ts" - } - ] + "buildOptimizer": true } } }, "serve": { "builder": "@angular-devkit/build-angular:dev-server", "options": { - "browserTarget": "application:build" + "browserTarget": "ngx-permissions:build" }, "configurations": { "production": { - "browserTarget": "application:build:production" + "browserTarget": "ngx-permissions:build:production" } } }, "extract-i18n": { "builder": "@angular-devkit/build-angular:extract-i18n", "options": { - "browserTarget": "application:build" + "browserTarget": "ngx-permissions:build" } }, "test": { "builder": "@angular-devkit/build-angular:karma", "options": { "main": "src/test.ts", - "karmaConfig": "./karma.conf.js", "polyfills": "src/polyfills.ts", "tsConfig": "src/tsconfig.spec.json", - "scripts": [], + "karmaConfig": "src/karma.conf.js", "styles": [ - "src/styles.css" + "styles.css" ], + "scripts": [], "assets": [ - "src/assets", - "src/favicon.ico" + "src/favicon.ico", + "src/assets" ] } }, @@ -93,25 +95,71 @@ } } }, - "application-e2e": { - "root": "", - "sourceRoot": "", + "ngx-permissions-e2e": { + "root": "e2e/", "projectType": "application", - "cli": {}, - "schematics": {}, "architect": { "e2e": { "builder": "@angular-devkit/build-angular:protractor", "options": { - "protractorConfig": "./protractor.conf.js", - "devServerTarget": "application:serve" + "protractorConfig": "e2e/protractor.conf.js", + "devServerTarget": "ngx-permissions:serve" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": "e2e/tsconfig.e2e.json", + "exclude": [ + "**/node_modules/**" + ] + } + } + } + }, + "ngx-permissions-lib": { + "root": "projects/ngx-permissions", + "sourceRoot": "projects/ngx-permissions/src", + "projectType": "library", + "prefix": "lib", + "architect": { + "build": { + "builder": "@angular-devkit/build-ng-packagr:build", + "options": { + "tsConfig": "projects/ngx-permissions/tsconfig.lib.json", + "project": "projects/ngx-permissions/ng-package.json" + }, + "configurations": { + "production": { + "project": "projects/ngx-permissions/ng-package.prod.json" + } + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "projects/ngx-permissions/src/test.ts", + "tsConfig": "projects/ngx-permissions/tsconfig.spec.json", + "karmaConfig": "projects/ngx-permissions/karma.conf.js", + "codeCoverage": true + + }, + "configurations": { + "development": { + "browsers": "Chrome", + "watch": true + }, + "production": { + "browsers": "ChromeHeadless" + } } }, "lint": { "builder": "@angular-devkit/build-angular:tslint", "options": { "tsConfig": [ - "e2e/tsconfig.e2e.json" + "projects/ngx-permissions/tsconfig.lib.json", + "projects/ngx-permissions/tsconfig.spec.json" ], "exclude": [ "**/node_modules/**" @@ -121,14 +169,5 @@ } } }, - "cli": {}, - "schematics": { - "@schematics/angular:component": { - "prefix": "app", - "styleext": "css" - }, - "@schematics/angular:directive": { - "prefix": "app" - } - } -} \ No newline at end of file + "defaultProject": "ngx-permissions" +} diff --git a/application/.gitignore b/application/.gitignore deleted file mode 100644 index 54bfd20..0000000 --- a/application/.gitignore +++ /dev/null @@ -1,42 +0,0 @@ -# See http://help.github.com/ignore-files/ for more about ignoring files. - -# compiled output -/dist -/tmp -/out-tsc - -# dependencies -/node_modules - -# IDEs and editors -/.idea -.project -.classpath -.c9/ -*.launch -.settings/ -*.sublime-workspace - -# IDE - VSCode -.vscode/* -!.vscode/settings.json -!.vscode/tasks.json -!.vscode/launch.json -!.vscode/extensions.json - -# misc -/.sass-cache -/connect.lock -/coverage -/libpeerconnection.log -npm-debug.log -testem.log -/typings - -# e2e -/e2e/*.js -/e2e/*.map - -# System Files -.DS_Store -Thumbs.db diff --git a/application/README.md b/application/README.md deleted file mode 100644 index 3da2ff7..0000000 --- a/application/README.md +++ /dev/null @@ -1,28 +0,0 @@ -# Application - -This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 1.2.3. - -## Development server - -Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files. - -## Code scaffolding - -Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|module`. - -## Build - -Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `-prod` flag for a production build. - -## Running unit tests - -Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io). - -## Running end-to-end tests - -Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/). -Before running the tests make sure you are serving the app via `ng serve`. - -## Further help - -To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). diff --git a/application/package-lock.json b/application/package-lock.json deleted file mode 100644 index 776d7b1..0000000 --- a/application/package-lock.json +++ /dev/null @@ -1,11914 +0,0 @@ -{ - "name": "application", - "version": "0.0.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@angular-devkit/architect": { - "version": "0.5.10", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.5.10.tgz", - "integrity": "sha512-/icXTtBwj5Jd01y/g4mD5I4RLJIGLPN6lp6ttDoVzmhTCAs0+Ftsu5O6cJBheVKgfuczggNrZRVB47ghPXFSKA==", - "dev": true, - "requires": { - "@angular-devkit/core": "0.5.10", - "rxjs": "6.0.0" - }, - "dependencies": { - "rxjs": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.0.0.tgz", - "integrity": "sha512-2MgLQr1zvks8+Kip4T6hcJdiBhV+SIvxguoWjhwtSpNPTp/5e09HJbgclCwR/nW0yWzhubM+6Q0prl8G5RuoBA==", - "dev": true, - "requires": { - "tslib": "1.9.0" - } - } - } - }, - "@angular-devkit/build-angular": { - "version": "0.5.10", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.5.10.tgz", - "integrity": "sha512-Htvx7M/vjyo1L6y57APRvU6LUWR2HvgvvXmnECijxsGZyCQuUTHzUQo9NJZ3Tjpv+UBpUd/W4lY5HZFzuInYVg==", - "dev": true, - "requires": { - "@angular-devkit/architect": "0.5.10", - "@angular-devkit/build-optimizer": "0.5.10", - "@angular-devkit/core": "0.5.10", - "@ngtools/webpack": "6.0.0-rc.8", - "ajv": "6.4.0", - "autoprefixer": "8.4.1", - "cache-loader": "1.2.2", - "chalk": "2.2.2", - "circular-dependency-plugin": "5.0.2", - "clean-css": "4.1.11", - "copy-webpack-plugin": "4.5.1", - "file-loader": "1.1.11", - "glob": "7.1.2", - "html-webpack-plugin": "3.2.0", - "istanbul": "0.4.5", - "istanbul-instrumenter-loader": "3.0.1", - "karma-source-map-support": "1.2.0", - "less": "3.0.2", - "less-loader": "4.1.0", - "license-webpack-plugin": "1.3.1", - "lodash": "4.17.4", - "memory-fs": "0.4.1", - "mini-css-extract-plugin": "0.4.0", - "minimatch": "3.0.4", - "node-sass": "4.9.0", - "opn": "5.1.0", - "parse5": "4.0.0", - "portfinder": "1.0.13", - "postcss": "6.0.22", - "postcss-import": "11.1.0", - "postcss-loader": "2.1.4", - "postcss-url": "7.3.2", - "raw-loader": "0.5.1", - "request": "2.85.0", - "resolve": "1.5.0", - "rxjs": "6.0.0", - "sass-loader": "7.0.1", - "silent-error": "1.1.0", - "source-map-support": "0.5.5", - "stats-webpack-plugin": "0.6.2", - "style-loader": "0.21.0", - "stylus": "0.54.5", - "stylus-loader": "3.0.2", - "tree-kill": "1.2.0", - "uglifyjs-webpack-plugin": "1.2.5", - "url-loader": "1.0.1", - "webpack": "4.6.0", - "webpack-dev-middleware": "3.1.3", - "webpack-dev-server": "3.1.3", - "webpack-merge": "4.1.2", - "webpack-sources": "1.1.0", - "webpack-subresource-integrity": "1.1.0-rc.4" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true - }, - "boom": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", - "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", - "dev": true, - "requires": { - "hoek": "4.2.1" - } - }, - "cryptiles": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", - "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", - "dev": true, - "requires": { - "boom": "5.2.0" - }, - "dependencies": { - "boom": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", - "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", - "dev": true, - "requires": { - "hoek": "4.2.1" - } - } - } - }, - "form-data": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", - "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", - "dev": true, - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.6", - "mime-types": "2.1.17" - }, - "dependencies": { - "combined-stream": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", - "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", - "dev": true, - "requires": { - "delayed-stream": "1.0.0" - } - } - } - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true - }, - "har-validator": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", - "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", - "dev": true, - "requires": { - "ajv": "5.5.2", - "har-schema": "2.0.0" - }, - "dependencies": { - "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", - "dev": true, - "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.0.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" - } - } - } - }, - "hawk": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", - "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", - "dev": true, - "requires": { - "boom": "4.3.1", - "cryptiles": "3.1.2", - "hoek": "4.2.1", - "sntp": "2.1.0" - } - }, - "hoek": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", - "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==", - "dev": true - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "jsprim": "1.4.1", - "sshpk": "1.13.1" - } - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true - }, - "qs": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", - "dev": true - }, - "request": { - "version": "2.85.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.85.0.tgz", - "integrity": "sha512-8H7Ehijd4js+s6wuVPLjwORxD4zeuyjYugprdOXlPSqaApmL/QOy+EB/beICHVCHkGMKNh5rvihb5ov+IDw4mg==", - "dev": true, - "requires": { - "aws-sign2": "0.7.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.3.2", - "har-validator": "5.0.3", - "hawk": "6.0.2", - "http-signature": "1.2.0", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.17", - "oauth-sign": "0.8.2", - "performance-now": "2.1.0", - "qs": "6.5.1", - "safe-buffer": "5.1.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.3", - "tunnel-agent": "0.6.0", - "uuid": "3.2.1" - } - }, - "rxjs": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.0.0.tgz", - "integrity": "sha512-2MgLQr1zvks8+Kip4T6hcJdiBhV+SIvxguoWjhwtSpNPTp/5e09HJbgclCwR/nW0yWzhubM+6Q0prl8G5RuoBA==", - "dev": true, - "requires": { - "tslib": "1.9.0" - } - }, - "sntp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", - "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", - "dev": true, - "requires": { - "hoek": "4.2.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-support": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.5.tgz", - "integrity": "sha512-mR7/Nd5l1z6g99010shcXJiNEaf3fEtmLhRB/sBcQVJGodcHCULPp2y4Sfa43Kv2zq7T+Izmfp/WHCR6dYkQCA==", - "dev": true, - "requires": { - "buffer-from": "1.0.0", - "source-map": "0.6.1" - } - } - } - }, - "@angular-devkit/build-optimizer": { - "version": "0.5.10", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.5.10.tgz", - "integrity": "sha512-AuXeEz7v8ncDLPjyv8KuLg/ECgaOyB7qEbY5dYp0BpIXZYdCvSS1H6U50+6OQtGQBic6lq2xJfpjqzMQhI2tIA==", - "dev": true, - "requires": { - "loader-utils": "1.1.0", - "source-map": "0.5.7", - "typescript": "2.7.2", - "webpack-sources": "1.1.0" - }, - "dependencies": { - "typescript": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.7.2.tgz", - "integrity": "sha512-p5TCYZDAO0m4G344hD+wx/LATebLWZNkkh2asWUFqSsD2OrDNhbAHuSjobrmsUmdzjJjEeZVU9g1h3O6vpstnw==", - "dev": true - } - } - }, - "@angular-devkit/core": { - "version": "0.5.10", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-0.5.10.tgz", - "integrity": "sha512-UrG0qWL742lt284C0TlTAOoHLFl/5AvwbGaNzPcj8YRTQS+WiJJbIeRM35PRVM0q9sGmqSHsaIvrD9dIXwS6Ng==", - "requires": { - "ajv": "6.4.0", - "chokidar": "1.7.0", - "rxjs": "6.0.0", - "source-map": "0.5.7" - }, - "dependencies": { - "ajv": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.4.0.tgz", - "integrity": "sha1-06/3jpJ3VJdx2vAWTP9ISCt1T8Y=", - "requires": { - "fast-deep-equal": "1.0.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1", - "uri-js": "3.0.2" - } - }, - "rxjs": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.0.0.tgz", - "integrity": "sha512-2MgLQr1zvks8+Kip4T6hcJdiBhV+SIvxguoWjhwtSpNPTp/5e09HJbgclCwR/nW0yWzhubM+6Q0prl8G5RuoBA==", - "requires": { - "tslib": "1.9.0" - } - } - } - }, - "@angular-devkit/schematics": { - "version": "0.5.10", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-0.5.10.tgz", - "integrity": "sha512-wt8pCIPkU5guU0k4UsYz34VuL8XuJK566vh5BhQX+0c8hLVlDb80yTefbD8Qc45gmWUM9caRSljvvzC1rsSDSA==", - "requires": { - "@angular-devkit/core": "0.5.10", - "@ngtools/json-schema": "1.1.0", - "rxjs": "6.0.0" - }, - "dependencies": { - "rxjs": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.0.0.tgz", - "integrity": "sha512-2MgLQr1zvks8+Kip4T6hcJdiBhV+SIvxguoWjhwtSpNPTp/5e09HJbgclCwR/nW0yWzhubM+6Q0prl8G5RuoBA==", - "requires": { - "tslib": "1.9.0" - } - } - } - }, - "@angular/animations": { - "version": "6.0.0-rc.6", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-6.0.0-rc.6.tgz", - "integrity": "sha512-jfoFDW6/BIg2FCHh3FxW1GequtVBQJTPWY48yMRcoTEhkK9HzM5k/FyW14HIqDE+1Dh3xn3JDsqyKXUIMysthw==", - "requires": { - "tslib": "1.9.0" - } - }, - "@angular/cli": { - "version": "6.0.0-rc.7", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-6.0.0-rc.7.tgz", - "integrity": "sha512-hcb2mSqqLZlr7tSP8nxa9/BArcGq9Z7vc+JDVaDeU+n0caxj8MGKRWDRFAAxmBoilAqicAu23KLRne5Z459bog==", - "dev": true, - "requires": { - "@angular-devkit/architect": "0.5.10", - "@angular-devkit/core": "0.5.10", - "@angular-devkit/schematics": "0.5.10", - "@schematics/angular": "0.5.10", - "@schematics/update": "0.5.10", - "chalk": "2.2.2", - "opn": "5.1.0", - "resolve": "1.5.0", - "rxjs": "6.0.0", - "semver": "5.5.0", - "silent-error": "1.1.0", - "symbol-observable": "1.2.0", - "yargs-parser": "9.0.2" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, - "rxjs": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.0.0.tgz", - "integrity": "sha512-2MgLQr1zvks8+Kip4T6hcJdiBhV+SIvxguoWjhwtSpNPTp/5e09HJbgclCwR/nW0yWzhubM+6Q0prl8G5RuoBA==", - "dev": true, - "requires": { - "tslib": "1.9.0" - } - }, - "symbol-observable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", - "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", - "dev": true - }, - "yargs-parser": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", - "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", - "dev": true, - "requires": { - "camelcase": "4.1.0" - } - } - } - }, - "@angular/common": { - "version": "6.0.0-rc.6", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-6.0.0-rc.6.tgz", - "integrity": "sha512-wMIu4cscc8xlL5abQEbW+Q9NCB2IfwE/YEp3HNIdo6ZmhP6TagZByIXIuvByeDcZCVXhj7cqQpGk37pwmFfcDA==", - "requires": { - "tslib": "1.9.0" - } - }, - "@angular/compiler": { - "version": "6.0.0-rc.6", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-6.0.0-rc.6.tgz", - "integrity": "sha512-a1r+4DmxPct9hsxYOKnF0rDP64KQYQLKOpnX0QpS/FpjHzKk9+1TrzhgyGNq7y9ibEB+K9Vne7il2/7GEDzN0Q==", - "requires": { - "tslib": "1.9.0" - } - }, - "@angular/compiler-cli": { - "version": "6.0.0-rc.6", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-6.0.0-rc.6.tgz", - "integrity": "sha512-VGfWS1JwM6YJXe40fG7GFZm/GMfTy74KVTVHGUuOA0g/ipWi6tTDFGq/R7dvqyVdty3VNDJnZJL4ZTDXR7EBxA==", - "dev": true, - "requires": { - "chokidar": "1.7.0", - "minimist": "1.2.0", - "reflect-metadata": "0.1.12", - "tsickle": "0.27.5" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } - } - }, - "@angular/core": { - "version": "6.0.0-rc.6", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-6.0.0-rc.6.tgz", - "integrity": "sha512-I3H5H9JZWEyKGEOByrdgIF8EDew2jjUD6d7Jn7l3sDIbR4VQUjiSTwSWdTR9yljwYs8DhLeOzE6fk6jmGE5BfA==", - "requires": { - "tslib": "1.9.0" - } - }, - "@angular/forms": { - "version": "6.0.0-rc.6", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-6.0.0-rc.6.tgz", - "integrity": "sha512-mGbVtMChMHySXt3lsDVIwaT0kCwGFhgZvKIVQOsi4ngrPM76JpS+I08/knt4RA23wMuYavO3z5X+TMCBUZAArQ==", - "requires": { - "tslib": "1.9.0" - } - }, - "@angular/http": { - "version": "6.0.0-rc.6", - "resolved": "https://registry.npmjs.org/@angular/http/-/http-6.0.0-rc.6.tgz", - "integrity": "sha512-DYcRixOY18qfWLe4+384QPyGsh0znOvbTePT5dJvGPiuR77rmzggPDA7tW+hyZ3y+0Nk4QuRVPbFQZdACjHpyw==", - "requires": { - "tslib": "1.9.0" - } - }, - "@angular/language-service": { - "version": "6.0.0-rc.6", - "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-6.0.0-rc.6.tgz", - "integrity": "sha512-j+zZz4Z178IZWi00sdvPCpD4EVqkWx2pD5ArOs+ypX/VG7LeR4rHgR+7i/JdXGI6SLIR+YSPw9fxjfM8BJbiNQ==", - "dev": true - }, - "@angular/platform-browser": { - "version": "6.0.0-rc.6", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-6.0.0-rc.6.tgz", - "integrity": "sha512-RR39MAgbteZfMlQbOa+D2oxja6FLbov45c8aixjKh3isC8TrPT1JrXazdn/sXiL0YVFDZn3zthlRqko+anFaJg==", - "requires": { - "tslib": "1.9.0" - } - }, - "@angular/platform-browser-dynamic": { - "version": "6.0.0-rc.6", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-6.0.0-rc.6.tgz", - "integrity": "sha512-DJANigILkk0wdENndc4fOUGNVhcGKHyvrNBllUt/znSpvFp3erE5kVfY1dgsk19HoYWXsW29J17vZCFflOR7Cg==", - "requires": { - "tslib": "1.9.0" - } - }, - "@angular/router": { - "version": "6.0.0-rc.6", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-6.0.0-rc.6.tgz", - "integrity": "sha512-6jSWcukgkbVH/kRLh0Ie7cXgE8gUCcUyerlRJlR2oQS4GxAyOiYnR4yYzJxnKJnPb2r012wJ5xEVQrwavmZZoQ==", - "requires": { - "tslib": "1.9.0" - } - }, - "@ngtools/json-schema": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@ngtools/json-schema/-/json-schema-1.1.0.tgz", - "integrity": "sha1-w6DFRNYjkqzCgTpCyKDcb1j4aSI=" - }, - "@ngtools/webpack": { - "version": "6.0.0-rc.8", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-6.0.0-rc.8.tgz", - "integrity": "sha512-mNvytMXJ6T+FBu/eSkRoIQfUfoL5ivZa73cyF2LhkY9BzNMLTnFc3V7joAH8qjgsX2jrNAQbe89SAGZf1vzfVw==", - "dev": true, - "requires": { - "@angular-devkit/core": "0.5.10", - "tree-kill": "1.2.0", - "webpack-sources": "1.1.0" - } - }, - "@schematics/angular": { - "version": "0.5.10", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-0.5.10.tgz", - "integrity": "sha512-ivAma06TYmetaGQqVjlssoMyFvky7tk3lwge5/2EqeudPe3URD0uPFNHBfkbF5lym6xVSmJDdOMOAdyPmFqH6g==", - "dev": true, - "requires": { - "@angular-devkit/core": "0.5.10", - "@angular-devkit/schematics": "0.5.10", - "typescript": "2.7.2" - } - }, - "@schematics/update": { - "version": "0.5.10", - "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.5.10.tgz", - "integrity": "sha512-z3jQXVECOwHVhMiX3hQlSX3V4n7gq88aJKt0B0lRboETOKzWSxjDl4ED2Jo8L2qW8qIg3FR1Be+R0Y72a6ErrQ==", - "dev": true, - "requires": { - "@angular-devkit/core": "0.5.10", - "@angular-devkit/schematics": "0.5.10", - "npm-registry-client": "8.5.1", - "rxjs": "6.0.0", - "semver": "5.5.0", - "semver-intersect": "1.3.1" - }, - "dependencies": { - "rxjs": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.0.0.tgz", - "integrity": "sha512-2MgLQr1zvks8+Kip4T6hcJdiBhV+SIvxguoWjhwtSpNPTp/5e09HJbgclCwR/nW0yWzhubM+6Q0prl8G5RuoBA==", - "dev": true, - "requires": { - "tslib": "1.9.0" - } - } - } - }, - "@types/jasmine": { - "version": "2.5.54", - "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-2.5.54.tgz", - "integrity": "sha512-B9YofFbUljs19g5gBKUYeLIulsh31U5AK70F41BImQRHEZQGm4GcN922UvnYwkduMqbC/NH+9fruWa/zrqvHIg==", - "dev": true - }, - "@types/jasminewd2": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/jasminewd2/-/jasminewd2-2.0.3.tgz", - "integrity": "sha512-hYDVmQZT5VA2kigd4H4bv7vl/OhlympwREUemqBdOqtrYTo5Ytm12a5W5/nGgGYdanGVxj0x/VhZ7J3hOg/YKg==", - "dev": true, - "requires": { - "@types/jasmine": "2.5.54" - } - }, - "@types/node": { - "version": "6.0.96", - "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.96.tgz", - "integrity": "sha512-fsOOY6tMQ3jCB2wD51XFDmmpgm4wVKkJECdcVRqapbJEa7awJDcr+SaH8toz+4r4KW8YQ3M7ybXMoSDo1QGewA==", - "dev": true - }, - "@types/q": { - "version": "0.0.32", - "resolved": "https://registry.npmjs.org/@types/q/-/q-0.0.32.tgz", - "integrity": "sha1-vShOV8hPEyXacCur/IKlMoGQwMU=", - "dev": true - }, - "@types/selenium-webdriver": { - "version": "2.53.43", - "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-2.53.43.tgz", - "integrity": "sha512-UBYHWph6P3tutkbXpW6XYg9ZPbTKjw/YC2hGG1/GEvWwTbvezBUv3h+mmUFw79T3RFPnmedpiXdOBbXX+4l0jg==", - "dev": true - }, - "abbrev": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", - "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=", - "dev": true - }, - "accepts": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", - "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", - "dev": true, - "requires": { - "mime-types": "2.1.18", - "negotiator": "0.6.1" - }, - "dependencies": { - "mime-db": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", - "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", - "dev": true - }, - "mime-types": { - "version": "2.1.18", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", - "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", - "dev": true, - "requires": { - "mime-db": "1.33.0" - } - } - } - }, - "acorn": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz", - "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==", - "dev": true - }, - "acorn-dynamic-import": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz", - "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==", - "dev": true, - "requires": { - "acorn": "5.5.3" - } - }, - "adm-zip": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.7.tgz", - "integrity": "sha1-hgbCy/HEJs6MjsABdER/1Jtur8E=", - "dev": true - }, - "after": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", - "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", - "dev": true - }, - "agent-base": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-2.1.1.tgz", - "integrity": "sha1-1t4Q1a9hMtW9aSQn1G/FOFOQlMc=", - "dev": true, - "requires": { - "extend": "3.0.1", - "semver": "5.0.3" - }, - "dependencies": { - "semver": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.0.3.tgz", - "integrity": "sha1-d0Zt5YnNXTyV8TiqeLxWmjy10no=", - "dev": true - } - } - }, - "ajv": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.4.0.tgz", - "integrity": "sha1-06/3jpJ3VJdx2vAWTP9ISCt1T8Y=", - "dev": true, - "requires": { - "fast-deep-equal": "1.0.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1", - "uri-js": "3.0.2" - } - }, - "ajv-keywords": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", - "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", - "dev": true - }, - "align-text": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", - "dev": true, - "requires": { - "kind-of": "3.2.2", - "longest": "1.0.1", - "repeat-string": "1.6.1" - } - }, - "amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", - "dev": true - }, - "ansi-html": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", - "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", - "dev": true - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", - "dev": true, - "requires": { - "color-convert": "1.9.1" - } - }, - "anymatch": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", - "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", - "requires": { - "micromatch": "2.3.11", - "normalize-path": "2.1.1" - } - }, - "app-root-path": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-2.0.1.tgz", - "integrity": "sha1-zWLc+OT9WkF+/GZNLlsQZTxlG0Y=", - "dev": true - }, - "append-transform": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", - "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", - "dev": true, - "requires": { - "default-require-extensions": "1.0.0" - } - }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true - }, - "are-we-there-yet": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", - "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", - "dev": true, - "requires": { - "delegates": "1.0.0", - "readable-stream": "2.3.3" - } - }, - "argparse": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", - "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", - "dev": true, - "requires": { - "sprintf-js": "1.0.3" - } - }, - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "requires": { - "arr-flatten": "1.1.0" - } - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", - "dev": true - }, - "array-flatten": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.1.tgz", - "integrity": "sha1-Qmu52oQJDBg42BLIFQryCoMx4pY=", - "dev": true - }, - "array-includes": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", - "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", - "dev": true, - "requires": { - "define-properties": "1.1.2", - "es-abstract": "1.11.0" - } - }, - "array-slice": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", - "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=", - "dev": true - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, - "requires": { - "array-uniq": "1.0.3" - } - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" - }, - "arraybuffer.slice": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz", - "integrity": "sha1-8zshWfBTKj8xB6JywMz70a0peco=", - "dev": true - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true - }, - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", - "dev": true, - "optional": true - }, - "asn1": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", - "dev": true - }, - "asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", - "dev": true, - "requires": { - "bn.js": "4.11.8", - "inherits": "2.0.3", - "minimalistic-assert": "1.0.1" - } - }, - "assert": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", - "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", - "dev": true, - "requires": { - "util": "0.10.3" - } - }, - "assert-plus": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", - "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", - "dev": true - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true - }, - "async": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", - "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", - "dev": true, - "requires": { - "lodash": "4.17.4" - } - }, - "async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=" - }, - "async-foreach": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", - "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=", - "dev": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "atob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz", - "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=", - "dev": true - }, - "autoprefixer": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-8.4.1.tgz", - "integrity": "sha512-YqUclCBDXUT9Y7aQ8Xv+ja8yhTZYJoMsOD7WS++gZIJLCpCu+gPcKGDlhk6S3WxhLkTcNVdaMZAWys2nzZCH7g==", - "dev": true, - "requires": { - "browserslist": "3.2.6", - "caniuse-lite": "1.0.30000832", - "normalize-range": "0.1.2", - "num2fraction": "1.2.2", - "postcss": "6.0.22", - "postcss-value-parser": "3.3.0" - } - }, - "aws-sign2": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", - "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", - "dev": true - }, - "aws4": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", - "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", - "dev": true - }, - "babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "esutils": "2.0.2", - "js-tokens": "3.0.2" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "babel-generator": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", - "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", - "dev": true, - "requires": { - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "detect-indent": "4.0.0", - "jsesc": "1.3.0", - "lodash": "4.17.4", - "source-map": "0.5.7", - "trim-right": "1.0.1" - }, - "dependencies": { - "jsesc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", - "dev": true - } - } - }, - "babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0" - } - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "2.5.3", - "regenerator-runtime": "0.11.1" - } - }, - "babel-template": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "lodash": "4.17.4" - } - }, - "babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", - "dev": true, - "requires": { - "babel-code-frame": "6.26.0", - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "debug": "2.6.9", - "globals": "9.18.0", - "invariant": "2.2.2", - "lodash": "4.17.4" - } - }, - "babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "esutils": "2.0.2", - "lodash": "4.17.4", - "to-fast-properties": "1.0.3" - } - }, - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - }, - "backo2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "requires": { - "cache-base": "1.0.1", - "class-utils": "0.3.6", - "component-emitter": "1.2.1", - "define-property": "1.0.0", - "isobject": "3.0.1", - "mixin-deep": "1.3.1", - "pascalcase": "0.1.1" - }, - "dependencies": { - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", - "dev": true - }, - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "1.0.2" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" - } - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } - } - }, - "base64-arraybuffer": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", - "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", - "dev": true - }, - "base64-js": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", - "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", - "dev": true - }, - "base64id": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", - "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", - "dev": true - }, - "batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", - "dev": true - }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", - "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", - "dev": true, - "optional": true, - "requires": { - "tweetnacl": "0.14.5" - } - }, - "better-assert": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", - "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", - "dev": true, - "requires": { - "callsite": "1.0.0" - } - }, - "big.js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", - "dev": true - }, - "binary-extensions": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", - "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=" - }, - "blob": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz", - "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=", - "dev": true - }, - "block-stream": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", - "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", - "dev": true, - "requires": { - "inherits": "2.0.3" - } - }, - "blocking-proxy": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/blocking-proxy/-/blocking-proxy-0.0.5.tgz", - "integrity": "sha1-RikF4Nz76pcPQao3Ij3anAexkSs=", - "dev": true, - "requires": { - "minimist": "1.2.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } - } - }, - "bluebird": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", - "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", - "dev": true - }, - "bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", - "dev": true - }, - "body-parser": { - "version": "1.18.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", - "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", - "dev": true, - "requires": { - "bytes": "3.0.0", - "content-type": "1.0.4", - "debug": "2.6.9", - "depd": "1.1.2", - "http-errors": "1.6.2", - "iconv-lite": "0.4.19", - "on-finished": "2.3.0", - "qs": "6.5.1", - "raw-body": "2.3.2", - "type-is": "1.6.15" - }, - "dependencies": { - "qs": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", - "dev": true - } - } - }, - "bonjour": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", - "dev": true, - "requires": { - "array-flatten": "2.1.1", - "deep-equal": "1.0.1", - "dns-equal": "1.0.0", - "dns-txt": "2.0.2", - "multicast-dns": "6.2.3", - "multicast-dns-service-types": "1.1.0" - } - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", - "dev": true - }, - "boom": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", - "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", - "dev": true, - "requires": { - "hoek": "2.16.3" - } - }, - "brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", - "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" - } - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true - }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "requires": { - "buffer-xor": "1.0.3", - "cipher-base": "1.0.4", - "create-hash": "1.2.0", - "evp_bytestokey": "1.0.3", - "inherits": "2.0.3", - "safe-buffer": "5.1.1" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "requires": { - "browserify-aes": "1.2.0", - "browserify-des": "1.0.1", - "evp_bytestokey": "1.0.3" - } - }, - "browserify-des": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.1.tgz", - "integrity": "sha512-zy0Cobe3hhgpiOM32Tj7KQ3Vl91m0njwsjzZQK1L+JDf11dzP9qIvjreVinsvXrgfjhStXwUWAEpB9D7Gwmayw==", - "dev": true, - "requires": { - "cipher-base": "1.0.4", - "des.js": "1.0.0", - "inherits": "2.0.3" - } - }, - "browserify-rsa": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", - "dev": true, - "requires": { - "bn.js": "4.11.8", - "randombytes": "2.0.6" - } - }, - "browserify-sign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", - "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", - "dev": true, - "requires": { - "bn.js": "4.11.8", - "browserify-rsa": "4.0.1", - "create-hash": "1.2.0", - "create-hmac": "1.1.7", - "elliptic": "6.4.0", - "inherits": "2.0.3", - "parse-asn1": "5.1.1" - } - }, - "browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "dev": true, - "requires": { - "pako": "1.0.6" - } - }, - "browserslist": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.6.tgz", - "integrity": "sha512-XCsMSg9V4S1VRdcp265dJ+8kBRjfuFXcavbisY7G6T9QI0H1Z24PP53vvs0WDYWqm38Mco1ILDtafcS8ZR4xiw==", - "dev": true, - "requires": { - "caniuse-lite": "1.0.30000832", - "electron-to-chromium": "1.3.44" - } - }, - "buffer": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", - "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", - "dev": true, - "requires": { - "base64-js": "1.3.0", - "ieee754": "1.1.11", - "isarray": "1.0.0" - } - }, - "buffer-from": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz", - "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==", - "dev": true - }, - "buffer-indexof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", - "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", - "dev": true - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true - }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true - }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", - "dev": true - }, - "builtins": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", - "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", - "dev": true - }, - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", - "dev": true - }, - "cacache": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", - "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", - "dev": true, - "requires": { - "bluebird": "3.5.1", - "chownr": "1.0.1", - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "lru-cache": "4.1.2", - "mississippi": "2.0.0", - "mkdirp": "0.5.1", - "move-concurrently": "1.0.1", - "promise-inflight": "1.0.1", - "rimraf": "2.6.2", - "ssri": "5.3.0", - "unique-filename": "1.1.0", - "y18n": "4.0.0" - } - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "collection-visit": "1.0.0", - "component-emitter": "1.2.1", - "get-value": "2.0.6", - "has-value": "1.0.0", - "isobject": "3.0.1", - "set-value": "2.0.0", - "to-object-path": "0.3.0", - "union-value": "1.0.0", - "unset-value": "1.0.0" - }, - "dependencies": { - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", - "dev": true - } - } - }, - "cache-loader": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cache-loader/-/cache-loader-1.2.2.tgz", - "integrity": "sha512-rsGh4SIYyB9glU+d0OcHwiXHXBoUgDhHZaQ1KAbiXqfz1CDPxtTboh1gPbJ0q2qdO8a9lfcjgC5CJ2Ms32y5bw==", - "dev": true, - "requires": { - "loader-utils": "1.1.0", - "mkdirp": "0.5.1", - "neo-async": "2.5.1", - "schema-utils": "0.4.5" - } - }, - "callsite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", - "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", - "dev": true - }, - "camel-case": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", - "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", - "dev": true, - "requires": { - "no-case": "2.3.2", - "upper-case": "1.1.3" - } - }, - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", - "dev": true - }, - "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", - "dev": true, - "requires": { - "camelcase": "2.1.1", - "map-obj": "1.0.1" - } - }, - "caniuse-lite": { - "version": "1.0.30000832", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000832.tgz", - "integrity": "sha512-WMC2GiGTPxGywFL70h+CnP7GAYo6LM6JSI1sF13vAZfXCzOeunHzl20DpfbDGMdvtT2wpqvabY96MHEp/la+BQ==", - "dev": true - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true - }, - "center-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", - "dev": true, - "optional": true, - "requires": { - "align-text": "0.1.4", - "lazy-cache": "1.0.4" - }, - "dependencies": { - "lazy-cache": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", - "dev": true, - "optional": true - } - } - }, - "chalk": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.2.2.tgz", - "integrity": "sha512-LvixLAQ4MYhbf7hgL4o5PeK32gJKvVzDRiSNIApDofQvyhl8adgG2lJVXn4+ekQoK7HL9RF8lqxwerpe0x2pCw==", - "dev": true, - "requires": { - "ansi-styles": "3.2.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.5.0" - } - }, - "chokidar": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", - "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", - "requires": { - "anymatch": "1.3.2", - "async-each": "1.0.1", - "fsevents": "1.1.3", - "glob-parent": "2.0.0", - "inherits": "2.0.3", - "is-binary-path": "1.0.1", - "is-glob": "2.0.1", - "path-is-absolute": "1.0.1", - "readdirp": "2.1.0" - }, - "dependencies": { - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "requires": { - "is-extglob": "1.0.0" - } - } - } - }, - "chownr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", - "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", - "dev": true - }, - "chrome-trace-event": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-0.1.3.tgz", - "integrity": "sha512-sjndyZHrrWiu4RY7AkHgjn80GfAM2ZSzUkZLV/Js59Ldmh6JDThf0SUmOHU53rFu2rVxxfCzJ30Ukcfch3Gb/A==", - "dev": true - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "requires": { - "inherits": "2.0.3", - "safe-buffer": "5.1.1" - } - }, - "circular-dependency-plugin": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.0.2.tgz", - "integrity": "sha512-oC7/DVAyfcY3UWKm0sN/oVoDedQDQiw/vIiAnuTWTpE5s0zWf7l3WY417Xw/Fbi/QbAjctAkxgMiS9P0s3zkmA==", - "dev": true - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "requires": { - "arr-union": "3.1.0", - "define-property": "0.2.5", - "isobject": "3.0.1", - "static-extend": "0.1.2" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "0.1.6" - } - } - } - }, - "clean-css": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.11.tgz", - "integrity": "sha1-Ls3xRaujj1R0DybO/Q/z4D4SXWo=", - "dev": true, - "requires": { - "source-map": "0.5.7" - } - }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dev": true, - "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wrap-ansi": "2.1.0" - } - }, - "clone": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz", - "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=", - "dev": true - }, - "clone-deep": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-2.0.2.tgz", - "integrity": "sha512-SZegPTKjCgpQH63E+eN6mVEEPdQBOUzjyJm5Pora4lrwWRFS8I0QAxV/KD6vV/i0WuijHZWQC1fMsPEdxfdVCQ==", - "dev": true, - "requires": { - "for-own": "1.0.0", - "is-plain-object": "2.0.4", - "kind-of": "6.0.2", - "shallow-clone": "1.0.0" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } - } - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, - "codelyzer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-3.0.1.tgz", - "integrity": "sha1-uma3sqpWT+n0XWAEtAA60s8RaCg=", - "dev": true, - "requires": { - "app-root-path": "2.0.1", - "css-selector-tokenizer": "0.7.0", - "cssauron": "1.4.0", - "semver-dsl": "1.0.1", - "source-map": "0.5.7", - "sprintf-js": "1.0.3" - } - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "requires": { - "map-visit": "1.0.0", - "object-visit": "1.0.1" - } - }, - "color-convert": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", - "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", - "dev": true - }, - "combine-lists": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/combine-lists/-/combine-lists-1.0.1.tgz", - "integrity": "sha1-RYwH4J4NkA/Ci3Cj/sLazR0st/Y=", - "dev": true, - "requires": { - "lodash": "4.17.4" - } - }, - "combined-stream": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", - "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", - "dev": true, - "requires": { - "delayed-stream": "1.0.0" - } - }, - "commander": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", - "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "component-bind": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", - "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", - "dev": true - }, - "component-emitter": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz", - "integrity": "sha1-KWWU8nU9qmOZbSrwjRWpURbJrsM=", - "dev": true - }, - "component-inherit": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", - "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", - "dev": true - }, - "compressible": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.13.tgz", - "integrity": "sha1-DRAgq5JLL9tNYnmHXH1tq6a6p6k=", - "dev": true, - "requires": { - "mime-db": "1.33.0" - }, - "dependencies": { - "mime-db": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", - "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", - "dev": true - } - } - }, - "compression": { - "version": "1.7.2", - "resolved": "http://registry.npmjs.org/compression/-/compression-1.7.2.tgz", - "integrity": "sha1-qv+81qr4VLROuygDU9WtFlH1mmk=", - "dev": true, - "requires": { - "accepts": "1.3.5", - "bytes": "3.0.0", - "compressible": "2.0.13", - "debug": "2.6.9", - "on-headers": "1.0.1", - "safe-buffer": "5.1.1", - "vary": "1.1.2" - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "concat-stream": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", - "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.3", - "typedarray": "0.0.6" - } - }, - "connect": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.5.tgz", - "integrity": "sha1-+43ee6B2OHfQ7J352sC0tA5yx9o=", - "dev": true, - "requires": { - "debug": "2.6.9", - "finalhandler": "1.0.6", - "parseurl": "1.3.2", - "utils-merge": "1.0.1" - }, - "dependencies": { - "finalhandler": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.6.tgz", - "integrity": "sha1-AHrqM9Gk0+QgF/YkhIrVjSEvgU8=", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "on-finished": "2.3.0", - "parseurl": "1.3.2", - "statuses": "1.3.1", - "unpipe": "1.0.0" - } - } - } - }, - "connect-history-api-fallback": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", - "integrity": "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=", - "dev": true - }, - "console-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "dev": true, - "requires": { - "date-now": "0.1.4" - } - }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", - "dev": true - }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", - "dev": true - }, - "content-disposition": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", - "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", - "dev": true - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true - }, - "convert-source-map": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", - "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", - "dev": true - }, - "cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", - "dev": true - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", - "dev": true - }, - "copy-concurrently": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", - "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", - "dev": true, - "requires": { - "aproba": "1.2.0", - "fs-write-stream-atomic": "1.0.10", - "iferr": "0.1.5", - "mkdirp": "0.5.1", - "rimraf": "2.6.2", - "run-queue": "1.0.3" - } - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true - }, - "copy-webpack-plugin": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-4.5.1.tgz", - "integrity": "sha512-OlTo6DYg0XfTKOF8eLf79wcHm4Ut10xU2cRBRPMW/NA5F9VMjZGTfRHWDIYC3s+1kObGYrBLshXWU1K0hILkNQ==", - "dev": true, - "requires": { - "cacache": "10.0.4", - "find-cache-dir": "1.0.0", - "globby": "7.1.1", - "is-glob": "4.0.0", - "loader-utils": "1.1.0", - "minimatch": "3.0.4", - "p-limit": "1.2.0", - "serialize-javascript": "1.5.0" - } - }, - "core-js": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", - "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=" - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "cosmiconfig": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-2.2.2.tgz", - "integrity": "sha512-GiNXLwAFPYHy25XmTPpafYvn3CLAkJ8FLsscq78MQd1Kh0OU6Yzhn4eV2MVF4G9WEQZoWEGltatdR+ntGPMl5A==", - "dev": true, - "requires": { - "is-directory": "0.3.1", - "js-yaml": "3.7.0", - "minimist": "1.2.0", - "object-assign": "4.1.1", - "os-homedir": "1.0.2", - "parse-json": "2.2.0", - "require-from-string": "1.2.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } - } - }, - "create-ecdh": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.1.tgz", - "integrity": "sha512-iZvCCg8XqHQZ1ioNBTzXS/cQSkqkqcPs8xSX4upNB+DAk9Ht3uzQf2J32uAHNCne8LDmKr29AgZrEs4oIrwLuQ==", - "dev": true, - "requires": { - "bn.js": "4.11.8", - "elliptic": "6.4.0" - } - }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "requires": { - "cipher-base": "1.0.4", - "inherits": "2.0.3", - "md5.js": "1.3.4", - "ripemd160": "2.0.2", - "sha.js": "2.4.11" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "requires": { - "cipher-base": "1.0.4", - "create-hash": "1.2.0", - "inherits": "2.0.3", - "ripemd160": "2.0.2", - "safe-buffer": "5.1.1", - "sha.js": "2.4.11" - } - }, - "cross-spawn": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", - "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", - "dev": true, - "requires": { - "lru-cache": "4.1.2", - "which": "1.3.0" - } - }, - "cryptiles": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", - "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", - "dev": true, - "requires": { - "boom": "2.10.1" - } - }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dev": true, - "requires": { - "browserify-cipher": "1.0.1", - "browserify-sign": "4.0.4", - "create-ecdh": "4.0.1", - "create-hash": "1.2.0", - "create-hmac": "1.1.7", - "diffie-hellman": "5.0.3", - "inherits": "2.0.3", - "pbkdf2": "3.0.16", - "public-encrypt": "4.0.2", - "randombytes": "2.0.6", - "randomfill": "1.0.4" - } - }, - "css-parse": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.7.0.tgz", - "integrity": "sha1-Mh9s9zeCpv91ERE5D8BeLGV9jJs=", - "dev": true - }, - "css-select": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", - "dev": true, - "requires": { - "boolbase": "1.0.0", - "css-what": "2.1.0", - "domutils": "1.5.1", - "nth-check": "1.0.1" - } - }, - "css-selector-tokenizer": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz", - "integrity": "sha1-5piEdK6MlTR3v15+/s/OzNnPTIY=", - "dev": true, - "requires": { - "cssesc": "0.1.0", - "fastparse": "1.1.1", - "regexpu-core": "1.0.0" - } - }, - "css-what": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz", - "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=", - "dev": true - }, - "cssauron": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/cssauron/-/cssauron-1.4.0.tgz", - "integrity": "sha1-pmAt/34EqDBtwNuaVR6S6LVmKtg=", - "dev": true, - "requires": { - "through": "2.3.8" - } - }, - "cssesc": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", - "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", - "dev": true - }, - "cuint": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz", - "integrity": "sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs=", - "dev": true - }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "dev": true, - "requires": { - "array-find-index": "1.0.2" - } - }, - "custom-event": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", - "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", - "dev": true - }, - "cyclist": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", - "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", - "dev": true - }, - "d": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", - "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", - "dev": true, - "requires": { - "es5-ext": "0.10.42" - } - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, - "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } - } - }, - "date-now": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true - }, - "deep-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", - "dev": true - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "default-require-extensions": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", - "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", - "dev": true, - "requires": { - "strip-bom": "2.0.0" - } - }, - "define-properties": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", - "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", - "dev": true, - "requires": { - "foreach": "2.0.5", - "object-keys": "1.0.11" - } - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "1.0.2", - "isobject": "3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" - } - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } - } - }, - "del": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", - "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", - "dev": true, - "requires": { - "globby": "6.1.0", - "is-path-cwd": "1.0.0", - "is-path-in-cwd": "1.0.0", - "p-map": "1.2.0", - "pify": "3.0.0", - "rimraf": "2.6.2" - }, - "dependencies": { - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "dev": true, - "requires": { - "array-union": "1.0.2", - "glob": "7.1.2", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - } - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true - }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "dev": true - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true - }, - "des.js": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", - "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "minimalistic-assert": "1.0.1" - } - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", - "dev": true - }, - "detect-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", - "dev": true, - "requires": { - "repeating": "2.0.1" - } - }, - "detect-node": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.3.tgz", - "integrity": "sha1-ogM8CcyOFY03dI+951B4Mr1s4Sc=", - "dev": true - }, - "di": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", - "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", - "dev": true - }, - "diff": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.4.0.tgz", - "integrity": "sha512-QpVuMTEoJMF7cKzi6bvWhRulU1fZqZnvyVQgNhPaxxuTYwyjn/j1v9falseQ/uXWwPnO56RBfwtg4h/EQXmucA==", - "dev": true - }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "requires": { - "bn.js": "4.11.8", - "miller-rabin": "4.0.1", - "randombytes": "2.0.6" - } - }, - "dir-glob": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", - "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==", - "dev": true, - "requires": { - "arrify": "1.0.1", - "path-type": "3.0.0" - } - }, - "dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", - "dev": true - }, - "dns-packet": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", - "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", - "dev": true, - "requires": { - "ip": "1.1.5", - "safe-buffer": "5.1.1" - } - }, - "dns-txt": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", - "dev": true, - "requires": { - "buffer-indexof": "1.1.1" - } - }, - "dom-converter": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.1.4.tgz", - "integrity": "sha1-pF71cnuJDJv/5tfIduexnLDhfzs=", - "dev": true, - "requires": { - "utila": "0.3.3" - }, - "dependencies": { - "utila": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz", - "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=", - "dev": true - } - } - }, - "dom-serialize": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", - "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", - "dev": true, - "requires": { - "custom-event": "1.0.1", - "ent": "2.2.0", - "extend": "3.0.1", - "void-elements": "2.0.1" - } - }, - "dom-serializer": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", - "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", - "dev": true, - "requires": { - "domelementtype": "1.1.3", - "entities": "1.1.1" - }, - "dependencies": { - "domelementtype": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", - "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", - "dev": true - } - } - }, - "domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true - }, - "domelementtype": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", - "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=", - "dev": true - }, - "domhandler": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.1.0.tgz", - "integrity": "sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ=", - "dev": true, - "requires": { - "domelementtype": "1.3.0" - } - }, - "domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", - "dev": true, - "requires": { - "dom-serializer": "0.1.0", - "domelementtype": "1.3.0" - } - }, - "duplexify": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.4.tgz", - "integrity": "sha512-JzYSLYMhoVVBe8+mbHQ4KgpvHpm0DZpJuL8PY93Vyv1fW7jYJ90LoXa1di/CVbJM+TgMs91rbDapE/RNIfnJsA==", - "dev": true, - "requires": { - "end-of-stream": "1.4.1", - "inherits": "2.0.3", - "readable-stream": "2.3.3", - "stream-shift": "1.0.0" - } - }, - "ecc-jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", - "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", - "dev": true, - "optional": true, - "requires": { - "jsbn": "0.1.1" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", - "dev": true - }, - "ejs": { - "version": "2.5.9", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.5.9.tgz", - "integrity": "sha512-GJCAeDBKfREgkBtgrYSf9hQy9kTb3helv0zGdzqhM7iAkW8FA/ZF97VQDbwFiwIT8MQLLOe5VlPZOEvZAqtUAQ==", - "dev": true - }, - "electron-to-chromium": { - "version": "1.3.44", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.44.tgz", - "integrity": "sha1-72sVCmDVIwgjiMra2ICF7NL9RoQ=", - "dev": true - }, - "elliptic": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", - "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", - "dev": true, - "requires": { - "bn.js": "4.11.8", - "brorand": "1.1.0", - "hash.js": "1.1.3", - "hmac-drbg": "1.0.1", - "inherits": "2.0.3", - "minimalistic-assert": "1.0.1", - "minimalistic-crypto-utils": "1.0.1" - } - }, - "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", - "dev": true - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", - "dev": true - }, - "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", - "dev": true, - "requires": { - "once": "1.4.0" - } - }, - "engine.io": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-1.8.3.tgz", - "integrity": "sha1-jef5eJXSDTm4X4ju7nd7K9QrE9Q=", - "dev": true, - "requires": { - "accepts": "1.3.3", - "base64id": "1.0.0", - "cookie": "0.3.1", - "debug": "2.3.3", - "engine.io-parser": "1.3.2", - "ws": "1.1.2" - }, - "dependencies": { - "accepts": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", - "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=", - "dev": true, - "requires": { - "mime-types": "2.1.17", - "negotiator": "0.6.1" - } - }, - "debug": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", - "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "dev": true, - "requires": { - "ms": "0.7.2" - } - }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", - "dev": true - } - } - }, - "engine.io-client": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.8.3.tgz", - "integrity": "sha1-F5jtk0USRkU9TG9jXXogH+lA1as=", - "dev": true, - "requires": { - "component-emitter": "1.2.1", - "component-inherit": "0.0.3", - "debug": "2.3.3", - "engine.io-parser": "1.3.2", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "parsejson": "0.0.3", - "parseqs": "0.0.5", - "parseuri": "0.0.5", - "ws": "1.1.2", - "xmlhttprequest-ssl": "1.5.3", - "yeast": "0.1.2" - }, - "dependencies": { - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", - "dev": true - }, - "debug": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", - "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "dev": true, - "requires": { - "ms": "0.7.2" - } - }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", - "dev": true - } - } - }, - "engine.io-parser": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.3.2.tgz", - "integrity": "sha1-k3sHnwAH0Ik+xW1GyyILjLQ1Igo=", - "dev": true, - "requires": { - "after": "0.8.2", - "arraybuffer.slice": "0.0.6", - "base64-arraybuffer": "0.1.5", - "blob": "0.0.4", - "has-binary": "0.1.7", - "wtf-8": "1.0.0" - } - }, - "enhanced-resolve": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.3.0.tgz", - "integrity": "sha512-2qbxE7ek3YxPJ1ML6V+satHkzHpJQKWkRHmRx6mfAoW59yP8YH8BFplbegSP+u2hBd6B6KCOpvJQ3dZAP+hkpg==", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "memory-fs": "0.4.1", - "object-assign": "4.1.1", - "tapable": "0.2.8" - } - }, - "ent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", - "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", - "dev": true - }, - "entities": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", - "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", - "dev": true - }, - "errno": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.6.tgz", - "integrity": "sha512-IsORQDpaaSwcDP4ZZnHxgE85werpo34VYn1Ud3mq+eUsF593faR8oCZNXrROVkpFu2TsbrNhHin0aUrTsQ9vNw==", - "dev": true, - "requires": { - "prr": "1.0.1" - } - }, - "error-ex": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", - "dev": true, - "requires": { - "is-arrayish": "0.2.1" - } - }, - "es-abstract": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.11.0.tgz", - "integrity": "sha512-ZnQrE/lXTTQ39ulXZ+J1DTFazV9qBy61x2bY071B+qGco8Z8q1QddsLdt/EF8Ai9hcWH72dWS0kFqXLxOxqslA==", - "dev": true, - "requires": { - "es-to-primitive": "1.1.1", - "function-bind": "1.1.1", - "has": "1.0.1", - "is-callable": "1.1.3", - "is-regex": "1.0.4" - } - }, - "es-to-primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", - "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", - "dev": true, - "requires": { - "is-callable": "1.1.3", - "is-date-object": "1.0.1", - "is-symbol": "1.0.1" - } - }, - "es5-ext": { - "version": "0.10.42", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.42.tgz", - "integrity": "sha512-AJxO1rmPe1bDEfSR6TJ/FgMFYuTBhR5R57KW58iCkYACMyFbrkqVyzXSurYoScDGvgyMpk7uRF/lPUPPTmsRSA==", - "dev": true, - "requires": { - "es6-iterator": "2.0.3", - "es6-symbol": "3.1.1", - "next-tick": "1.0.0" - } - }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "dev": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.42", - "es6-symbol": "3.1.1" - } - }, - "es6-symbol": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", - "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", - "dev": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.42" - } - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "escodegen": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", - "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", - "dev": true, - "requires": { - "esprima": "2.7.3", - "estraverse": "1.9.3", - "esutils": "2.0.2", - "optionator": "0.8.2", - "source-map": "0.2.0" - }, - "dependencies": { - "source-map": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", - "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=", - "dev": true, - "optional": true, - "requires": { - "amdefine": "1.0.1" - } - } - } - }, - "eslint-scope": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", - "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", - "dev": true, - "requires": { - "esrecurse": "4.2.1", - "estraverse": "4.2.0" - }, - "dependencies": { - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", - "dev": true - } - } - }, - "esprima": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", - "dev": true - }, - "esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", - "dev": true, - "requires": { - "estraverse": "4.2.0" - }, - "dependencies": { - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", - "dev": true - } - } - }, - "estraverse": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", - "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=", - "dev": true - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", - "dev": true - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "dev": true - }, - "eventemitter3": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz", - "integrity": "sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg=", - "dev": true - }, - "events": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", - "dev": true - }, - "eventsource": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz", - "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=", - "dev": true, - "requires": { - "original": "1.0.0" - } - }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "requires": { - "md5.js": "1.3.4", - "safe-buffer": "5.1.1" - } - }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "dev": true, - "requires": { - "cross-spawn": "5.1.0", - "get-stream": "3.0.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.2", - "strip-eof": "1.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "requires": { - "lru-cache": "4.1.2", - "shebang-command": "1.2.0", - "which": "1.3.0" - } - } - } - }, - "exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", - "dev": true - }, - "expand-braces": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/expand-braces/-/expand-braces-0.1.2.tgz", - "integrity": "sha1-SIsdHSRRyz06axks/AMPRMWFX+o=", - "dev": true, - "requires": { - "array-slice": "0.2.3", - "array-unique": "0.2.1", - "braces": "0.1.5" - }, - "dependencies": { - "braces": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-0.1.5.tgz", - "integrity": "sha1-wIVxEIUpHYt1/ddOqw+FlygHEeY=", - "dev": true, - "requires": { - "expand-range": "0.1.1" - } - }, - "expand-range": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-0.1.1.tgz", - "integrity": "sha1-TLjtoJk8pW+k9B/ELzy7TMrf8EQ=", - "dev": true, - "requires": { - "is-number": "0.1.1", - "repeat-string": "0.2.2" - } - }, - "is-number": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-0.1.1.tgz", - "integrity": "sha1-aaevEWlj1HIG7JvZtIoUIW8eOAY=", - "dev": true - }, - "repeat-string": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-0.2.2.tgz", - "integrity": "sha1-x6jTI2BoNiBZp+RlH8aITosftK4=", - "dev": true - } - } - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "requires": { - "is-posix-bracket": "0.1.1" - } - }, - "expand-range": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", - "requires": { - "fill-range": "2.2.3" - } - }, - "express": { - "version": "4.16.3", - "resolved": "https://registry.npmjs.org/express/-/express-4.16.3.tgz", - "integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=", - "dev": true, - "requires": { - "accepts": "1.3.5", - "array-flatten": "1.1.1", - "body-parser": "1.18.2", - "content-disposition": "0.5.2", - "content-type": "1.0.4", - "cookie": "0.3.1", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "1.1.2", - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "etag": "1.8.1", - "finalhandler": "1.1.1", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "1.1.2", - "on-finished": "2.3.0", - "parseurl": "1.3.2", - "path-to-regexp": "0.1.7", - "proxy-addr": "2.0.3", - "qs": "6.5.1", - "range-parser": "1.2.0", - "safe-buffer": "5.1.1", - "send": "0.16.2", - "serve-static": "1.13.2", - "setprototypeof": "1.1.0", - "statuses": "1.4.0", - "type-is": "1.6.16", - "utils-merge": "1.0.1", - "vary": "1.1.2" - }, - "dependencies": { - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", - "dev": true - }, - "mime-db": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", - "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", - "dev": true - }, - "mime-types": { - "version": "2.1.18", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", - "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", - "dev": true, - "requires": { - "mime-db": "1.33.0" - } - }, - "qs": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", - "dev": true - }, - "statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", - "dev": true - }, - "type-is": { - "version": "1.6.16", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", - "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", - "dev": true, - "requires": { - "media-typer": "0.3.0", - "mime-types": "2.1.18" - } - } - } - }, - "extend": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", - "dev": true - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "1.0.0", - "is-extendable": "1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "2.0.4" - } - } - } - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "requires": { - "is-extglob": "1.0.0" - }, - "dependencies": { - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" - } - } - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true - }, - "fast-deep-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", - "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=" - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "fastparse": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz", - "integrity": "sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg=", - "dev": true - }, - "faye-websocket": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", - "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", - "dev": true, - "requires": { - "websocket-driver": "0.7.0" - } - }, - "file-loader": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-1.1.11.tgz", - "integrity": "sha512-TGR4HU7HUsGg6GCOPJnFk06RhWgEWFLAGWiT6rcD+GRC2keU3s9RGJ+b3Z6/U73jwwNb2gKLJ7YCrp+jvU4ALg==", - "dev": true, - "requires": { - "loader-utils": "1.1.0", - "schema-utils": "0.4.5" - } - }, - "filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=" - }, - "fileset": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", - "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", - "dev": true, - "requires": { - "glob": "7.1.2", - "minimatch": "3.0.4" - } - }, - "fill-range": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", - "requires": { - "is-number": "2.1.0", - "isobject": "2.1.0", - "randomatic": "1.1.7", - "repeat-element": "1.1.2", - "repeat-string": "1.6.1" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "finalhandler": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", - "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "on-finished": "2.3.0", - "parseurl": "1.3.2", - "statuses": "1.4.0", - "unpipe": "1.0.0" - }, - "dependencies": { - "statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", - "dev": true - } - } - }, - "find-cache-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", - "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", - "dev": true, - "requires": { - "commondir": "1.0.1", - "make-dir": "1.2.0", - "pkg-dir": "2.0.0" - } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "2.0.0" - } - }, - "flush-write-stream": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", - "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", - "dev": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.3" - } - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" - }, - "for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", - "dev": true, - "requires": { - "for-in": "1.0.2" - } - }, - "foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", - "dev": true - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true - }, - "form-data": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", - "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", - "dev": true, - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.17" - } - }, - "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", - "dev": true - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "requires": { - "map-cache": "0.2.2" - } - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "dev": true - }, - "from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.3" - } - }, - "fs-access": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.1.tgz", - "integrity": "sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=", - "dev": true, - "requires": { - "null-check": "1.0.0" - } - }, - "fs-write-stream-atomic": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", - "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "iferr": "0.1.5", - "imurmurhash": "0.1.4", - "readable-stream": "2.3.3" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fsevents": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", - "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", - "optional": true, - "requires": { - "nan": "2.8.0", - "node-pre-gyp": "0.6.39" - }, - "dependencies": { - "abbrev": { - "version": "1.1.0", - "bundled": true, - "optional": true - }, - "ajv": { - "version": "4.11.8", - "bundled": true, - "optional": true, - "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" - } - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true - }, - "aproba": { - "version": "1.1.1", - "bundled": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.4", - "bundled": true, - "optional": true, - "requires": { - "delegates": "1.0.0", - "readable-stream": "2.2.9" - } - }, - "asn1": { - "version": "0.2.3", - "bundled": true, - "optional": true - }, - "assert-plus": { - "version": "0.2.0", - "bundled": true, - "optional": true - }, - "asynckit": { - "version": "0.4.0", - "bundled": true, - "optional": true - }, - "aws-sign2": { - "version": "0.6.0", - "bundled": true, - "optional": true - }, - "aws4": { - "version": "1.6.0", - "bundled": true, - "optional": true - }, - "balanced-match": { - "version": "0.4.2", - "bundled": true - }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "bundled": true, - "optional": true, - "requires": { - "tweetnacl": "0.14.5" - } - }, - "block-stream": { - "version": "0.0.9", - "bundled": true, - "requires": { - "inherits": "2.0.3" - } - }, - "boom": { - "version": "2.10.1", - "bundled": true, - "requires": { - "hoek": "2.16.3" - } - }, - "brace-expansion": { - "version": "1.1.7", - "bundled": true, - "requires": { - "balanced-match": "0.4.2", - "concat-map": "0.0.1" - } - }, - "buffer-shims": { - "version": "1.0.0", - "bundled": true - }, - "caseless": { - "version": "0.12.0", - "bundled": true, - "optional": true - }, - "co": { - "version": "4.6.0", - "bundled": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true - }, - "combined-stream": { - "version": "1.0.5", - "bundled": true, - "requires": { - "delayed-stream": "1.0.0" - } - }, - "concat-map": { - "version": "0.0.1", - "bundled": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true - }, - "cryptiles": { - "version": "2.0.5", - "bundled": true, - "requires": { - "boom": "2.10.1" - } - }, - "dashdash": { - "version": "1.14.1", - "bundled": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "optional": true - } - } - }, - "debug": { - "version": "2.6.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ms": "2.0.0" - } - }, - "deep-extend": { - "version": "0.4.2", - "bundled": true, - "optional": true - }, - "delayed-stream": { - "version": "1.0.0", - "bundled": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "ecc-jsbn": { - "version": "0.1.1", - "bundled": true, - "optional": true, - "requires": { - "jsbn": "0.1.1" - } - }, - "extend": { - "version": "3.0.1", - "bundled": true, - "optional": true - }, - "extsprintf": { - "version": "1.0.2", - "bundled": true - }, - "forever-agent": { - "version": "0.6.1", - "bundled": true, - "optional": true - }, - "form-data": { - "version": "2.1.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.15" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true - }, - "fstream": { - "version": "1.0.11", - "bundled": true, - "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.1" - } - }, - "fstream-ignore": { - "version": "1.0.5", - "bundled": true, - "optional": true, - "requires": { - "fstream": "1.0.11", - "inherits": "2.0.3", - "minimatch": "3.0.4" - } - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "optional": true, - "requires": { - "aproba": "1.1.1", - "console-control-strings": "1.1.0", - "has-unicode": "2.0.1", - "object-assign": "4.1.1", - "signal-exit": "3.0.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wide-align": "1.1.2" - } - }, - "getpass": { - "version": "0.1.7", - "bundled": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "optional": true - } - } - }, - "glob": { - "version": "7.1.2", - "bundled": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "graceful-fs": { - "version": "4.1.11", - "bundled": true - }, - "har-schema": { - "version": "1.0.5", - "bundled": true, - "optional": true - }, - "har-validator": { - "version": "4.2.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "optional": true - }, - "hawk": { - "version": "3.1.3", - "bundled": true, - "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" - } - }, - "hoek": { - "version": "2.16.3", - "bundled": true - }, - "http-signature": { - "version": "1.1.1", - "bundled": true, - "optional": true, - "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.4.0", - "sshpk": "1.13.0" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true - }, - "ini": { - "version": "1.3.4", - "bundled": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "is-typedarray": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "isarray": { - "version": "1.0.0", - "bundled": true - }, - "isstream": { - "version": "0.1.2", - "bundled": true, - "optional": true - }, - "jodid25519": { - "version": "1.0.2", - "bundled": true, - "optional": true, - "requires": { - "jsbn": "0.1.1" - } - }, - "jsbn": { - "version": "0.1.1", - "bundled": true, - "optional": true - }, - "json-schema": { - "version": "0.2.3", - "bundled": true, - "optional": true - }, - "json-stable-stringify": { - "version": "1.0.1", - "bundled": true, - "optional": true, - "requires": { - "jsonify": "0.0.0" - } - }, - "json-stringify-safe": { - "version": "5.0.1", - "bundled": true, - "optional": true - }, - "jsonify": { - "version": "0.0.0", - "bundled": true, - "optional": true - }, - "jsprim": { - "version": "1.4.0", - "bundled": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.0.2", - "json-schema": "0.2.3", - "verror": "1.3.6" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "mime-db": { - "version": "1.27.0", - "bundled": true, - "dev": true - }, - "mime-types": { - "version": "2.1.15", - "bundled": true, - "dev": true, - "requires": { - "mime-db": "1.27.0" - } - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "node-pre-gyp": { - "version": "0.6.39", - "bundled": true, - "optional": true, - "requires": { - "detect-libc": "1.0.2", - "hawk": "3.1.3", - "mkdirp": "0.5.1", - "nopt": "4.0.1", - "npmlog": "4.1.0", - "rc": "1.2.1", - "request": "2.81.0", - "rimraf": "2.6.1", - "semver": "5.3.0", - "tar": "2.2.1", - "tar-pack": "3.4.0" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "optional": true, - "requires": { - "abbrev": "1.1.0", - "osenv": "0.1.4" - } - }, - "npmlog": { - "version": "4.1.0", - "bundled": true, - "optional": true, - "requires": { - "are-we-there-yet": "1.1.4", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "oauth-sign": { - "version": "0.8.2", - "bundled": true, - "dev": true, - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "requires": { - "wrappy": "1.0.2" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "osenv": { - "version": "0.1.4", - "bundled": true, - "optional": true, - "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true - }, - "performance-now": { - "version": "0.2.0", - "bundled": true, - "optional": true - }, - "process-nextick-args": { - "version": "1.0.7", - "bundled": true - }, - "punycode": { - "version": "1.4.1", - "bundled": true, - "optional": true - }, - "qs": { - "version": "6.4.0", - "bundled": true, - "optional": true - }, - "rc": { - "version": "1.2.1", - "bundled": true, - "optional": true, - "requires": { - "deep-extend": "0.4.2", - "ini": "1.3.4", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.2.9", - "bundled": true, - "requires": { - "buffer-shims": "1.0.0", - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "string_decoder": "1.0.1", - "util-deprecate": "1.0.2" - } - }, - "request": { - "version": "2.81.0", - "bundled": true, - "optional": true, - "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "4.2.1", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.15", - "oauth-sign": "0.8.2", - "performance-now": "0.2.0", - "qs": "6.4.0", - "safe-buffer": "5.0.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.2", - "tunnel-agent": "0.6.0", - "uuid": "3.0.1" - } - }, - "rimraf": { - "version": "2.6.1", - "bundled": true, - "requires": { - "glob": "7.1.2" - } - }, - "safe-buffer": { - "version": "5.0.1", - "bundled": true - }, - "semver": { - "version": "5.3.0", - "bundled": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "optional": true - }, - "sntp": { - "version": "1.0.9", - "bundled": true, - "requires": { - "hoek": "2.16.3" - } - }, - "sshpk": { - "version": "1.13.0", - "bundled": true, - "optional": true, - "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jodid25519": "1.0.2", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "optional": true - } - } - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - }, - "string_decoder": { - "version": "1.0.1", - "bundled": true, - "requires": { - "safe-buffer": "5.0.1" - } - }, - "stringstream": { - "version": "0.0.5", - "bundled": true, - "optional": true - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "optional": true - }, - "tar": { - "version": "2.2.1", - "bundled": true, - "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" - } - }, - "tar-pack": { - "version": "3.4.0", - "bundled": true, - "optional": true, - "requires": { - "debug": "2.6.8", - "fstream": "1.0.11", - "fstream-ignore": "1.0.5", - "once": "1.4.0", - "readable-stream": "2.2.9", - "rimraf": "2.6.1", - "tar": "2.2.1", - "uid-number": "0.0.6" - } - }, - "tough-cookie": { - "version": "2.3.2", - "bundled": true, - "optional": true, - "requires": { - "punycode": "1.4.1" - } - }, - "tunnel-agent": { - "version": "0.6.0", - "bundled": true, - "optional": true, - "requires": { - "safe-buffer": "5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "bundled": true, - "optional": true - }, - "uid-number": { - "version": "0.0.6", - "bundled": true, - "optional": true - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true - }, - "uuid": { - "version": "3.0.1", - "bundled": true, - "optional": true - }, - "verror": { - "version": "1.3.6", - "bundled": true, - "optional": true, - "requires": { - "extsprintf": "1.0.2" - } - }, - "wide-align": { - "version": "1.1.2", - "bundled": true, - "optional": true, - "requires": { - "string-width": "1.0.2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true - } - } - }, - "fstream": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", - "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.2" - } - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "dev": true, - "requires": { - "aproba": "1.2.0", - "console-control-strings": "1.1.0", - "has-unicode": "2.0.1", - "object-assign": "4.1.1", - "signal-exit": "3.0.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wide-align": "1.1.2" - } - }, - "gaze": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.2.tgz", - "integrity": "sha1-hHIkZ3rbiHDWeSV+0ziP22HkAQU=", - "dev": true, - "requires": { - "globule": "1.2.0" - } - }, - "generate-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", - "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", - "dev": true - }, - "generate-object-property": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", - "dev": true, - "requires": { - "is-property": "1.0.2" - } - }, - "get-caller-file": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", - "dev": true - }, - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "dev": true - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, - "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } - } - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "requires": { - "glob-parent": "2.0.0", - "is-glob": "2.0.1" - }, - "dependencies": { - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "requires": { - "is-extglob": "1.0.0" - } - } - } - }, - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "requires": { - "is-glob": "2.0.1" - }, - "dependencies": { - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "requires": { - "is-extglob": "1.0.0" - } - } - } - }, - "globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "dev": true - }, - "globby": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", - "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", - "dev": true, - "requires": { - "array-union": "1.0.2", - "dir-glob": "2.0.0", - "glob": "7.1.2", - "ignore": "3.3.8", - "pify": "3.0.0", - "slash": "1.0.0" - } - }, - "globule": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.0.tgz", - "integrity": "sha1-HcScaCLdnoovoAuiopUAboZkvQk=", - "dev": true, - "requires": { - "glob": "7.1.2", - "lodash": "4.17.4", - "minimatch": "3.0.4" - } - }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" - }, - "handle-thing": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz", - "integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=", - "dev": true - }, - "handlebars": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", - "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", - "dev": true, - "requires": { - "async": "1.5.2", - "optimist": "0.6.1", - "source-map": "0.4.4", - "uglify-js": "2.8.29" - }, - "dependencies": { - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true - }, - "camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", - "dev": true, - "optional": true - }, - "cliui": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", - "dev": true, - "optional": true, - "requires": { - "center-align": "0.1.3", - "right-align": "0.1.3", - "wordwrap": "0.0.2" - } - }, - "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "dev": true, - "requires": { - "amdefine": "1.0.1" - } - }, - "uglify-js": { - "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", - "dev": true, - "optional": true, - "requires": { - "source-map": "0.5.7", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, - "optional": true - } - } - }, - "yargs": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", - "dev": true, - "optional": true, - "requires": { - "camelcase": "1.2.1", - "cliui": "2.1.0", - "decamelize": "1.2.0", - "window-size": "0.1.0" - } - } - } - }, - "har-schema": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", - "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", - "dev": true - }, - "har-validator": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", - "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", - "dev": true, - "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" - }, - "dependencies": { - "ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", - "dev": true, - "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" - } - } - } - }, - "has": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", - "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", - "dev": true, - "requires": { - "function-bind": "1.1.1" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "has-binary": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.7.tgz", - "integrity": "sha1-aOYesWIQyVRaClzOBqhzkS/h5ow=", - "dev": true, - "requires": { - "isarray": "0.0.1" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - } - } - }, - "has-cors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", - "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", - "dev": true - }, - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", - "dev": true - }, - "has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", - "dev": true - }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", - "dev": true - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "requires": { - "get-value": "2.0.6", - "has-values": "1.0.0", - "isobject": "3.0.1" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "safe-buffer": "5.1.1" - } - }, - "hash.js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", - "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", - "dev": true, - "requires": { - "inherits": "2.0.3", - "minimalistic-assert": "1.0.1" - } - }, - "hawk": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", - "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", - "dev": true, - "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" - } - }, - "he": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", - "dev": true - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, - "requires": { - "hash.js": "1.1.3", - "minimalistic-assert": "1.0.1", - "minimalistic-crypto-utils": "1.0.1" - } - }, - "hoek": { - "version": "2.16.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", - "dev": true - }, - "hosted-git-info": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", - "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", - "dev": true - }, - "hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "obuf": "1.1.2", - "readable-stream": "2.3.3", - "wbuf": "1.7.3" - } - }, - "html-entities": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", - "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", - "dev": true - }, - "html-minifier": { - "version": "3.5.15", - "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.15.tgz", - "integrity": "sha512-OZa4rfb6tZOZ3Z8Xf0jKxXkiDcFWldQePGYFDcgKqES2sXeWaEv9y6QQvWUtX3ySI3feApQi5uCsHLINQ6NoAw==", - "dev": true, - "requires": { - "camel-case": "3.0.0", - "clean-css": "4.1.11", - "commander": "2.15.1", - "he": "1.1.1", - "param-case": "2.1.1", - "relateurl": "0.2.7", - "uglify-js": "3.3.23" - } - }, - "html-webpack-plugin": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz", - "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=", - "dev": true, - "requires": { - "html-minifier": "3.5.15", - "loader-utils": "0.2.17", - "lodash": "4.17.4", - "pretty-error": "2.1.1", - "tapable": "1.0.0", - "toposort": "1.0.7", - "util.promisify": "1.0.0" - }, - "dependencies": { - "loader-utils": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", - "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", - "dev": true, - "requires": { - "big.js": "3.2.0", - "emojis-list": "2.1.0", - "json5": "0.5.1", - "object-assign": "4.1.1" - } - }, - "tapable": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.0.0.tgz", - "integrity": "sha512-dQRhbNQkRnaqauC7WqSJ21EEksgT0fYZX2lqXzGkpo8JNig9zGZTYoMGvyI2nWmXlE2VSVXVDu7wLVGu/mQEsg==", - "dev": true - } - } - }, - "htmlparser2": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz", - "integrity": "sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=", - "dev": true, - "requires": { - "domelementtype": "1.3.0", - "domhandler": "2.1.0", - "domutils": "1.1.6", - "readable-stream": "1.0.34" - }, - "dependencies": { - "domutils": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.1.6.tgz", - "integrity": "sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU=", - "dev": true, - "requires": { - "domelementtype": "1.3.0" - } - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } - } - }, - "http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", - "dev": true - }, - "http-errors": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", - "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", - "dev": true, - "requires": { - "depd": "1.1.1", - "inherits": "2.0.3", - "setprototypeof": "1.0.3", - "statuses": "1.3.1" - }, - "dependencies": { - "depd": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", - "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", - "dev": true - }, - "setprototypeof": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", - "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", - "dev": true - } - } - }, - "http-parser-js": { - "version": "0.4.12", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.12.tgz", - "integrity": "sha1-uc+/Sizybw/DSxDKFImid3HjR08=", - "dev": true - }, - "http-proxy": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.16.2.tgz", - "integrity": "sha1-Bt/ykpUr9k2+hHH6nfcwZtTzd0I=", - "dev": true, - "requires": { - "eventemitter3": "1.2.0", - "requires-port": "1.0.0" - } - }, - "http-proxy-middleware": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz", - "integrity": "sha512-Fs25KVMPAIIcgjMZkVHJoKg9VcXcC1C8yb9JUgeDvVXY0S/zgVIhMb+qVswDIgtJe2DfckMSY2d6TuTEutlk6Q==", - "dev": true, - "requires": { - "http-proxy": "1.16.2", - "is-glob": "4.0.0", - "lodash": "4.17.10", - "micromatch": "3.1.10" - }, - "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "1.1.0", - "array-unique": "0.3.2", - "extend-shallow": "2.0.1", - "fill-range": "4.0.0", - "isobject": "3.0.1", - "repeat-element": "1.1.2", - "snapdragon": "0.8.2", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "0.1.6" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "0.3.2", - "define-property": "1.0.0", - "expand-brackets": "2.1.4", - "extend-shallow": "2.0.1", - "fragment-cache": "0.2.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "1.0.2" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "2.0.1", - "is-number": "3.0.0", - "repeat-string": "1.6.1", - "to-regex-range": "2.1.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - }, - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "extglob": "2.0.4", - "fragment-cache": "0.2.1", - "kind-of": "6.0.2", - "nanomatch": "1.2.9", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - } - } - } - }, - "http-signature": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", - "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", - "dev": true, - "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.4.1", - "sshpk": "1.13.1" - } - }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", - "dev": true - }, - "https-proxy-agent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-1.0.0.tgz", - "integrity": "sha1-NffabEjOTdv6JkiRrFk+5f+GceY=", - "dev": true, - "requires": { - "agent-base": "2.1.1", - "debug": "2.6.9", - "extend": "3.0.1" - } - }, - "iconv-lite": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", - "dev": true - }, - "ieee754": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.11.tgz", - "integrity": "sha512-VhDzCKN7K8ufStx/CLj5/PDTMgph+qwN5Pkd5i0sGnVwk56zJ0lkT8Qzi1xqWLS0Wp29DgDtNeS7v8/wMoZeHg==", - "dev": true - }, - "iferr": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", - "dev": true - }, - "ignore": { - "version": "3.3.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.8.tgz", - "integrity": "sha512-pUh+xUQQhQzevjRHHFqqcTy0/dP/kS9I8HSrUydhihjuD09W6ldVWFtIrwhXdUJHis3i2rZNqEHpZH/cbinFbg==", - "dev": true - }, - "image-size": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", - "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", - "dev": true, - "optional": true - }, - "import-local": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz", - "integrity": "sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==", - "dev": true, - "requires": { - "pkg-dir": "2.0.0", - "resolve-cwd": "2.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "in-publish": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz", - "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=", - "dev": true - }, - "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "dev": true, - "requires": { - "repeating": "2.0.1" - } - }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", - "dev": true - }, - "internal-ip": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-1.2.0.tgz", - "integrity": "sha1-rp+/k7mEh4eF1QqN4bNWlWBYz1w=", - "dev": true, - "requires": { - "meow": "3.7.0" - } - }, - "invariant": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", - "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", - "dev": true, - "requires": { - "loose-envify": "1.3.1" - } - }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "dev": true - }, - "ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", - "dev": true - }, - "ipaddr.js": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.6.0.tgz", - "integrity": "sha1-4/o1e3c9phnybpXwSdBVxyeW+Gs=", - "dev": true - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "requires": { - "binary-extensions": "1.11.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "dev": true, - "requires": { - "builtin-modules": "1.1.1" - } - }, - "is-callable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", - "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=", - "dev": true - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - } - }, - "is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", - "dev": true - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", - "dev": true - }, - "is-dotfile": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=" - }, - "is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "requires": { - "is-primitive": "2.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "is-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", - "dev": true, - "requires": { - "is-extglob": "2.1.1" - } - }, - "is-my-ip-valid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz", - "integrity": "sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ==", - "dev": true - }, - "is-my-json-valid": { - "version": "2.17.2", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.17.2.tgz", - "integrity": "sha512-IBhBslgngMQN8DDSppmgDv7RNrlFotuuDsKcrCP3+HbFaVivIBU7u9oiiErw8sH4ynx3+gOGQ3q2otkgiSi6kg==", - "dev": true, - "requires": { - "generate-function": "2.0.0", - "generate-object-property": "1.2.0", - "is-my-ip-valid": "1.0.0", - "jsonpointer": "4.0.1", - "xtend": "4.0.1" - } - }, - "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "requires": { - "kind-of": "3.2.2" - } - }, - "is-odd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", - "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", - "dev": true, - "requires": { - "is-number": "4.0.0" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "dev": true - } - } - }, - "is-path-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", - "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", - "dev": true - }, - "is-path-in-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", - "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", - "dev": true, - "requires": { - "is-path-inside": "1.0.1" - } - }, - "is-path-inside": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", - "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", - "dev": true, - "requires": { - "path-is-inside": "1.0.2" - } - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "3.0.1" - } - }, - "is-posix-bracket": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=" - }, - "is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=" - }, - "is-property": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", - "dev": true - }, - "is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", - "dev": true, - "requires": { - "has": "1.0.1" - } - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, - "is-symbol": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", - "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", - "dev": true - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "isbinaryfile": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.2.tgz", - "integrity": "sha1-Sj6XTsDLqQBNP8bN5yCeppNopiE=", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true - }, - "istanbul": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz", - "integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=", - "dev": true, - "requires": { - "abbrev": "1.0.9", - "async": "1.5.2", - "escodegen": "1.8.1", - "esprima": "2.7.3", - "glob": "5.0.15", - "handlebars": "4.0.11", - "js-yaml": "3.7.0", - "mkdirp": "0.5.1", - "nopt": "3.0.6", - "once": "1.4.0", - "resolve": "1.1.7", - "supports-color": "3.2.3", - "which": "1.3.0", - "wordwrap": "1.0.0" - }, - "dependencies": { - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true - }, - "glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", - "dev": true, - "requires": { - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", - "dev": true - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } - }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true - } - } - }, - "istanbul-api": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.2.1.tgz", - "integrity": "sha512-oFCwXvd65amgaPCzqrR+a2XjanS1MvpXN6l/MlMUTv6uiA1NOgGX+I0uyq8Lg3GDxsxPsaP1049krz3hIJ5+KA==", - "dev": true, - "requires": { - "async": "2.6.0", - "fileset": "2.0.3", - "istanbul-lib-coverage": "1.1.1", - "istanbul-lib-hook": "1.1.0", - "istanbul-lib-instrument": "1.9.1", - "istanbul-lib-report": "1.1.2", - "istanbul-lib-source-maps": "1.2.2", - "istanbul-reports": "1.1.3", - "js-yaml": "3.7.0", - "mkdirp": "0.5.1", - "once": "1.4.0" - } - }, - "istanbul-instrumenter-loader": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-instrumenter-loader/-/istanbul-instrumenter-loader-3.0.1.tgz", - "integrity": "sha512-a5SPObZgS0jB/ixaKSMdn6n/gXSrK2S6q/UfRJBT3e6gQmVjwZROTODQsYW5ZNwOu78hG62Y3fWlebaVOL0C+w==", - "dev": true, - "requires": { - "convert-source-map": "1.5.1", - "istanbul-lib-instrument": "1.9.1", - "loader-utils": "1.1.0", - "schema-utils": "0.3.0" - }, - "dependencies": { - "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", - "dev": true, - "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.0.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" - } - }, - "schema-utils": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", - "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=", - "dev": true, - "requires": { - "ajv": "5.5.2" - } - } - } - }, - "istanbul-lib-coverage": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz", - "integrity": "sha512-0+1vDkmzxqJIn5rcoEqapSB4DmPxE31EtI2dF2aCkV5esN9EWHxZ0dwgDClivMXJqE7zaYQxq30hj5L0nlTN5Q==", - "dev": true - }, - "istanbul-lib-hook": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz", - "integrity": "sha512-U3qEgwVDUerZ0bt8cfl3dSP3S6opBoOtk3ROO5f2EfBr/SRiD9FQqzwaZBqFORu8W7O0EXpai+k7kxHK13beRg==", - "dev": true, - "requires": { - "append-transform": "0.4.0" - } - }, - "istanbul-lib-instrument": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz", - "integrity": "sha512-RQmXeQ7sphar7k7O1wTNzVczF9igKpaeGQAG9qR2L+BS4DCJNTI9nytRmIVYevwO0bbq+2CXvJmYDuz0gMrywA==", - "dev": true, - "requires": { - "babel-generator": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "istanbul-lib-coverage": "1.1.1", - "semver": "5.5.0" - } - }, - "istanbul-lib-report": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz", - "integrity": "sha512-UTv4VGx+HZivJQwAo1wnRwe1KTvFpfi/NYwN7DcsrdzMXwpRT/Yb6r4SBPoHWj4VuQPakR32g4PUUeyKkdDkBA==", - "dev": true, - "requires": { - "istanbul-lib-coverage": "1.1.1", - "mkdirp": "0.5.1", - "path-parse": "1.0.5", - "supports-color": "3.2.3" - }, - "dependencies": { - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } - } - } - }, - "istanbul-lib-source-maps": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz", - "integrity": "sha512-8BfdqSfEdtip7/wo1RnrvLpHVEd8zMZEDmOFEnpC6dg0vXflHt9nvoAyQUzig2uMSXfF2OBEYBV3CVjIL9JvaQ==", - "dev": true, - "requires": { - "debug": "3.1.0", - "istanbul-lib-coverage": "1.1.1", - "mkdirp": "0.5.1", - "rimraf": "2.6.2", - "source-map": "0.5.7" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } - }, - "istanbul-reports": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.3.tgz", - "integrity": "sha512-ZEelkHh8hrZNI5xDaKwPMFwDsUf5wIEI2bXAFGp1e6deR2mnEKBPhLJEgr4ZBt8Gi6Mj38E/C8kcy9XLggVO2Q==", - "dev": true, - "requires": { - "handlebars": "4.0.11" - } - }, - "jasmine": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.9.0.tgz", - "integrity": "sha1-dlcfklyHg0CefGFTVy5aY0HPk+s=", - "dev": true, - "requires": { - "exit": "0.1.2", - "glob": "7.1.2", - "jasmine-core": "2.9.1" - }, - "dependencies": { - "jasmine-core": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.9.1.tgz", - "integrity": "sha1-trvB2OZSUNVvWIhGFwXr7uuI8i8=", - "dev": true - } - } - }, - "jasmine-core": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.6.4.tgz", - "integrity": "sha1-3skmzQqfoof7bbXHVfpIfnTOysU=", - "dev": true - }, - "jasmine-spec-reporter": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-4.1.1.tgz", - "integrity": "sha1-Wm1Yq11hvqcwn7wnkjlRF1axtYg=", - "dev": true, - "requires": { - "colors": "1.1.2" - } - }, - "jasminewd2": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/jasminewd2/-/jasminewd2-2.2.0.tgz", - "integrity": "sha1-43zwsX8ZnM4jvqcbIDk5Uka07E4=", - "dev": true - }, - "js-base64": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.3.tgz", - "integrity": "sha512-H7ErYLM34CvDMto3GbD6xD0JLUGYXR3QTcH6B/tr4Hi/QpSThnCsIp+Sy5FRTw3B0d6py4HcNkW7nO/wdtGWEw==", - "dev": true - }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true - }, - "js-yaml": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", - "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=", - "dev": true, - "requires": { - "argparse": "1.0.9", - "esprima": "2.7.3" - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true, - "optional": true - }, - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "dev": true - }, - "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" - }, - "json-stable-stringify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "dev": true, - "requires": { - "jsonify": "0.0.0" - } - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true - }, - "json3": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", - "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", - "dev": true - }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true - }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "dev": true - }, - "jsonpointer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", - "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", - "dev": true - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } - } - }, - "karma": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/karma/-/karma-1.7.1.tgz", - "integrity": "sha512-k5pBjHDhmkdaUccnC7gE3mBzZjcxyxYsYVaqiL2G5AqlfLyBO5nw2VdNK+O16cveEPd/gIOWULH7gkiYYwVNHg==", - "dev": true, - "requires": { - "bluebird": "3.5.1", - "body-parser": "1.18.2", - "chokidar": "1.7.0", - "colors": "1.1.2", - "combine-lists": "1.0.1", - "connect": "3.6.5", - "core-js": "2.5.3", - "di": "0.0.1", - "dom-serialize": "2.2.1", - "expand-braces": "0.1.2", - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "http-proxy": "1.16.2", - "isbinaryfile": "3.0.2", - "lodash": "3.10.1", - "log4js": "0.6.38", - "mime": "1.6.0", - "minimatch": "3.0.4", - "optimist": "0.6.1", - "qjobs": "1.1.5", - "range-parser": "1.2.0", - "rimraf": "2.6.2", - "safe-buffer": "5.1.1", - "socket.io": "1.7.3", - "source-map": "0.5.7", - "tmp": "0.0.31", - "useragent": "2.2.1" - }, - "dependencies": { - "lodash": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", - "dev": true - } - } - }, - "karma-chrome-launcher": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-2.1.1.tgz", - "integrity": "sha1-IWh5xorATY1RQOmWGboEtZr9Rs8=", - "dev": true, - "requires": { - "fs-access": "1.0.1", - "which": "1.3.0" - } - }, - "karma-cli": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/karma-cli/-/karma-cli-1.0.1.tgz", - "integrity": "sha1-rmw8WKMTodALRRZMRVubhs4X+WA=", - "dev": true, - "requires": { - "resolve": "1.5.0" - } - }, - "karma-coverage-istanbul-reporter": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-1.3.3.tgz", - "integrity": "sha512-MFkB6bh11J8nKygUdqyHb9sMz17XoBRYR4tiNxnSpi/UtDk0wk8eRGa0jRSJaILgCl4xyq1TL6Jidww1OWly/Q==", - "dev": true, - "requires": { - "istanbul-api": "1.2.1", - "minimatch": "3.0.4" - } - }, - "karma-jasmine": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-1.1.1.tgz", - "integrity": "sha1-b+hA51oRYAydkehLM8RY4cRqNSk=", - "dev": true - }, - "karma-jasmine-html-reporter": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-0.2.2.tgz", - "integrity": "sha1-SKjl7xiAdhfuK14zwRlMNbQ5Ukw=", - "dev": true, - "requires": { - "karma-jasmine": "1.1.1" - } - }, - "karma-source-map-support": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.2.0.tgz", - "integrity": "sha1-G/gee7SwiWJ6s1LsQXnhF8QGpUA=", - "dev": true, - "requires": { - "source-map-support": "0.4.18" - } - }, - "killable": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.0.tgz", - "integrity": "sha1-2ouEvUfeU5WHj5XWTQLyRJ/gXms=", - "dev": true - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "1.1.6" - } - }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dev": true, - "requires": { - "invert-kv": "1.0.0" - } - }, - "less": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/less/-/less-3.0.2.tgz", - "integrity": "sha512-konnFwWXpUQwzuwyN3Zfw/2Ziah2BKzqTfGoHBZjJdQWCmR+yrjmIG3QLwnlXNFWz27QetOmhGNSbHgGRdqhYQ==", - "dev": true, - "requires": { - "errno": "0.1.6", - "graceful-fs": "4.1.11", - "image-size": "0.5.5", - "mime": "1.6.0", - "mkdirp": "0.5.1", - "promise": "7.3.1", - "request": "2.85.0", - "source-map": "0.5.7" - }, - "dependencies": { - "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", - "dev": true, - "optional": true, - "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.0.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true, - "optional": true - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true, - "optional": true - }, - "boom": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", - "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", - "dev": true, - "optional": true, - "requires": { - "hoek": "4.2.1" - } - }, - "cryptiles": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", - "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", - "dev": true, - "optional": true, - "requires": { - "boom": "5.2.0" - }, - "dependencies": { - "boom": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", - "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", - "dev": true, - "optional": true, - "requires": { - "hoek": "4.2.1" - } - } - } - }, - "form-data": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", - "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", - "dev": true, - "optional": true, - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.6", - "mime-types": "2.1.17" - }, - "dependencies": { - "combined-stream": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", - "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", - "dev": true, - "optional": true, - "requires": { - "delayed-stream": "1.0.0" - } - } - } - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true, - "optional": true - }, - "har-validator": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", - "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", - "dev": true, - "optional": true, - "requires": { - "ajv": "5.5.2", - "har-schema": "2.0.0" - } - }, - "hawk": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", - "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", - "dev": true, - "optional": true, - "requires": { - "boom": "4.3.1", - "cryptiles": "3.1.2", - "hoek": "4.2.1", - "sntp": "2.1.0" - } - }, - "hoek": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", - "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==", - "dev": true - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0", - "jsprim": "1.4.1", - "sshpk": "1.13.1" - } - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true, - "optional": true - }, - "qs": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", - "dev": true, - "optional": true - }, - "request": { - "version": "2.85.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.85.0.tgz", - "integrity": "sha512-8H7Ehijd4js+s6wuVPLjwORxD4zeuyjYugprdOXlPSqaApmL/QOy+EB/beICHVCHkGMKNh5rvihb5ov+IDw4mg==", - "dev": true, - "optional": true, - "requires": { - "aws-sign2": "0.7.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.3.2", - "har-validator": "5.0.3", - "hawk": "6.0.2", - "http-signature": "1.2.0", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.17", - "oauth-sign": "0.8.2", - "performance-now": "2.1.0", - "qs": "6.5.1", - "safe-buffer": "5.1.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.3", - "tunnel-agent": "0.6.0", - "uuid": "3.2.1" - } - }, - "sntp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", - "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", - "dev": true, - "optional": true, - "requires": { - "hoek": "4.2.1" - } - } - } - }, - "less-loader": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-4.1.0.tgz", - "integrity": "sha512-KNTsgCE9tMOM70+ddxp9yyt9iHqgmSs0yTZc5XH5Wo+g80RWRIYNqE58QJKm/yMud5wZEvz50ugRDuzVIkyahg==", - "dev": true, - "requires": { - "clone": "2.1.1", - "loader-utils": "1.1.0", - "pify": "3.0.0" - } - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "requires": { - "prelude-ls": "1.1.2", - "type-check": "0.3.2" - } - }, - "license-webpack-plugin": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-1.3.1.tgz", - "integrity": "sha512-NqAFodJdpBUuf1iD+Ij8hQvF0rCFKlO2KaieoQzAPhFgzLCtJnC7Z7x5gQbGNjoe++wOKAtAmwVEIBLqq2Yp1A==", - "dev": true, - "requires": { - "ejs": "2.5.9" - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "strip-bom": "2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, - "loader-runner": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", - "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=", - "dev": true - }, - "loader-utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", - "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", - "dev": true, - "requires": { - "big.js": "3.2.0", - "emojis-list": "2.1.0", - "json5": "0.5.1" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "2.0.0", - "path-exists": "3.0.0" - } - }, - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", - "dev": true - }, - "lodash.assign": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", - "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", - "dev": true - }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true - }, - "lodash.mergewith": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz", - "integrity": "sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ==", - "dev": true - }, - "lodash.tail": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.tail/-/lodash.tail-4.1.1.tgz", - "integrity": "sha1-0jM6NtnncXyK0vfKyv7HwytERmQ=", - "dev": true - }, - "log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", - "dev": true, - "requires": { - "chalk": "2.2.2" - } - }, - "log4js": { - "version": "0.6.38", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-0.6.38.tgz", - "integrity": "sha1-LElBFmldb7JUgJQ9P8hy5mKlIv0=", - "dev": true, - "requires": { - "readable-stream": "1.0.34", - "semver": "4.3.6" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - } - }, - "semver": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", - "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", - "dev": true - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } - } - }, - "loglevel": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz", - "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=", - "dev": true - }, - "loglevelnext": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/loglevelnext/-/loglevelnext-1.0.5.tgz", - "integrity": "sha512-V/73qkPuJmx4BcBF19xPBr+0ZRVBhc4POxvZTZdMeXpJ4NItXSJ/MSwuFT0kQJlCbXvdlZoQQ/418bS1y9Jh6A==", - "dev": true, - "requires": { - "es6-symbol": "3.1.1", - "object.assign": "4.1.0" - } - }, - "longest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", - "dev": true - }, - "loose-envify": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", - "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", - "dev": true, - "requires": { - "js-tokens": "3.0.2" - } - }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", - "dev": true, - "requires": { - "currently-unhandled": "0.4.1", - "signal-exit": "3.0.2" - } - }, - "lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", - "dev": true - }, - "lru-cache": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz", - "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", - "dev": true, - "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" - } - }, - "make-dir": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.2.0.tgz", - "integrity": "sha512-aNUAa4UMg/UougV25bbrU4ZaaKNjJ/3/xnvg/twpmKROPdKZPZ9wGgI0opdZzO8q/zUFawoUuixuOv33eZ61Iw==", - "dev": true, - "requires": { - "pify": "3.0.0" - } - }, - "make-error": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.2.tgz", - "integrity": "sha512-l9ra35l5VWLF24y75Tg8XgfGLX0ueRhph118WKM6H5denx4bB5QF59+4UAm9oJ2qsPQZas/CQUDdtDdfvYHBdQ==", - "dev": true - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true - }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "requires": { - "object-visit": "1.0.1" - } - }, - "md5.js": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", - "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", - "dev": true, - "requires": { - "hash-base": "3.0.4", - "inherits": "2.0.3" - } - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", - "dev": true - }, - "mem": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", - "dev": true, - "requires": { - "mimic-fn": "1.2.0" - } - }, - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "dev": true, - "requires": { - "errno": "0.1.6", - "readable-stream": "2.3.3" - } - }, - "meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", - "dev": true, - "requires": { - "camelcase-keys": "2.1.0", - "decamelize": "1.2.0", - "loud-rejection": "1.6.0", - "map-obj": "1.0.1", - "minimist": "1.2.0", - "normalize-package-data": "2.4.0", - "object-assign": "4.1.1", - "read-pkg-up": "1.0.1", - "redent": "1.0.0", - "trim-newlines": "1.0.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } - } - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", - "dev": true - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", - "dev": true - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.1", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.2.2", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.4" - }, - "dependencies": { - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "requires": { - "is-extglob": "1.0.0" - } - } - } - }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "requires": { - "bn.js": "4.11.8", - "brorand": "1.1.0" - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true - }, - "mime-db": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", - "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=", - "dev": true - }, - "mime-types": { - "version": "2.1.17", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", - "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", - "dev": true, - "requires": { - "mime-db": "1.30.0" - } - }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true - }, - "mini-css-extract-plugin": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.0.tgz", - "integrity": "sha512-2Zik6PhUZ/MbiboG6SDS9UTPL4XXy4qnyGjSdCIWRrr8xb6PwLtHE+AYOjkXJWdF0OG8vo/yrJ8CgS5WbMpzIg==", - "dev": true, - "requires": { - "loader-utils": "1.1.0", - "webpack-sources": "1.1.0" - } - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "1.1.8" - } - }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - }, - "mississippi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz", - "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==", - "dev": true, - "requires": { - "concat-stream": "1.6.0", - "duplexify": "3.5.4", - "end-of-stream": "1.4.1", - "flush-write-stream": "1.0.3", - "from2": "2.3.0", - "parallel-transform": "1.1.0", - "pump": "2.0.1", - "pumpify": "1.4.0", - "stream-each": "1.2.2", - "through2": "2.0.3" - } - }, - "mixin-deep": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", - "dev": true, - "requires": { - "for-in": "1.0.2", - "is-extendable": "1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "2.0.4" - } - } - } - }, - "mixin-object": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", - "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", - "dev": true, - "requires": { - "for-in": "0.1.8", - "is-extendable": "0.1.1" - }, - "dependencies": { - "for-in": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", - "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=", - "dev": true - } - } - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "move-concurrently": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", - "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", - "dev": true, - "requires": { - "aproba": "1.2.0", - "copy-concurrently": "1.0.5", - "fs-write-stream-atomic": "1.0.10", - "mkdirp": "0.5.1", - "rimraf": "2.6.2", - "run-queue": "1.0.3" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "multicast-dns": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", - "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", - "dev": true, - "requires": { - "dns-packet": "1.3.1", - "thunky": "1.0.2" - } - }, - "multicast-dns-service-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", - "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", - "dev": true - }, - "nan": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz", - "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=", - "optional": true - }, - "nanomatch": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", - "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", - "dev": true, - "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "fragment-cache": "0.2.1", - "is-odd": "2.0.0", - "is-windows": "1.0.2", - "kind-of": "6.0.2", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } - } - }, - "negotiator": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", - "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", - "dev": true - }, - "neo-async": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.5.1.tgz", - "integrity": "sha512-3KL3fvuRkZ7s4IFOMfztb7zJp3QaVWnBeGoJlgB38XnCRPj/0tLzzLG5IB8NYOHbJ8g8UGrgZv44GLDk6CxTxA==", - "dev": true - }, - "next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", - "dev": true - }, - "no-case": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", - "dev": true, - "requires": { - "lower-case": "1.1.4" - } - }, - "node-forge": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.1.tgz", - "integrity": "sha1-naYR6giYL0uUIGs760zJZl8gwwA=", - "dev": true - }, - "node-gyp": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.6.2.tgz", - "integrity": "sha1-m/vlRWIoYoSDjnUOrAUpWFP6HGA=", - "dev": true, - "requires": { - "fstream": "1.0.11", - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "nopt": "3.0.6", - "npmlog": "4.1.2", - "osenv": "0.1.5", - "request": "2.81.0", - "rimraf": "2.6.2", - "semver": "5.3.0", - "tar": "2.2.1", - "which": "1.3.0" - }, - "dependencies": { - "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", - "dev": true - } - } - }, - "node-libs-browser": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", - "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", - "dev": true, - "requires": { - "assert": "1.4.1", - "browserify-zlib": "0.2.0", - "buffer": "4.9.1", - "console-browserify": "1.1.0", - "constants-browserify": "1.0.0", - "crypto-browserify": "3.12.0", - "domain-browser": "1.2.0", - "events": "1.1.1", - "https-browserify": "1.0.0", - "os-browserify": "0.3.0", - "path-browserify": "0.0.0", - "process": "0.11.10", - "punycode": "1.4.1", - "querystring-es3": "0.2.1", - "readable-stream": "2.3.3", - "stream-browserify": "2.0.1", - "stream-http": "2.8.1", - "string_decoder": "1.0.3", - "timers-browserify": "2.0.10", - "tty-browserify": "0.0.0", - "url": "0.11.0", - "util": "0.10.3", - "vm-browserify": "0.0.4" - } - }, - "node-sass": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.9.0.tgz", - "integrity": "sha512-QFHfrZl6lqRU3csypwviz2XLgGNOoWQbo2GOvtsfQqOfL4cy1BtWnhx/XUeAO9LT3ahBzSRXcEO6DdvAH9DzSg==", - "dev": true, - "requires": { - "async-foreach": "0.1.3", - "chalk": "1.1.3", - "cross-spawn": "3.0.1", - "gaze": "1.1.2", - "get-stdin": "4.0.1", - "glob": "7.1.2", - "in-publish": "2.0.0", - "lodash.assign": "4.2.0", - "lodash.clonedeep": "4.5.0", - "lodash.mergewith": "4.6.1", - "meow": "3.7.0", - "mkdirp": "0.5.1", - "nan": "2.10.0", - "node-gyp": "3.6.2", - "npmlog": "4.1.2", - "request": "2.79.0", - "sass-graph": "2.2.4", - "stdout-stream": "1.4.0", - "true-case-path": "1.0.2" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "caseless": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", - "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - }, - "har-validator": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", - "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "commander": "2.15.1", - "is-my-json-valid": "2.17.2", - "pinkie-promise": "2.0.1" - } - }, - "nan": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", - "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", - "dev": true - }, - "qs": { - "version": "6.3.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz", - "integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw=", - "dev": true - }, - "request": { - "version": "2.79.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz", - "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=", - "dev": true, - "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.6.0", - "caseless": "0.11.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "2.0.6", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.17", - "oauth-sign": "0.8.2", - "qs": "6.3.2", - "stringstream": "0.0.5", - "tough-cookie": "2.3.3", - "tunnel-agent": "0.4.3", - "uuid": "3.2.1" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - }, - "tunnel-agent": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", - "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", - "dev": true - } - } - }, - "nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", - "dev": true, - "requires": { - "abbrev": "1.0.9" - } - }, - "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", - "dev": true, - "requires": { - "hosted-git-info": "2.5.0", - "is-builtin-module": "1.0.0", - "semver": "5.5.0", - "validate-npm-package-license": "3.0.1" - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "requires": { - "remove-trailing-separator": "1.1.0" - } - }, - "normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", - "dev": true - }, - "npm-package-arg": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.0.tgz", - "integrity": "sha512-zYbhP2k9DbJhA0Z3HKUePUgdB1x7MfIfKssC+WLPFMKTBZKpZh5m13PgexJjCq6KW7j17r0jHWcCpxEqnnncSA==", - "dev": true, - "requires": { - "hosted-git-info": "2.6.0", - "osenv": "0.1.5", - "semver": "5.5.0", - "validate-npm-package-name": "3.0.0" - }, - "dependencies": { - "hosted-git-info": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", - "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==", - "dev": true - }, - "osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "dev": true, - "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" - } - } - } - }, - "npm-registry-client": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/npm-registry-client/-/npm-registry-client-8.5.1.tgz", - "integrity": "sha512-7rjGF2eA7hKDidGyEWmHTiKfXkbrcQAsGL/Rh4Rt3x3YNRNHhwaTzVJfW3aNvvlhg4G62VCluif0sLCb/i51Hg==", - "dev": true, - "requires": { - "concat-stream": "1.6.0", - "graceful-fs": "4.1.11", - "normalize-package-data": "2.4.0", - "npm-package-arg": "6.1.0", - "npmlog": "4.1.2", - "once": "1.4.0", - "request": "2.81.0", - "retry": "0.10.1", - "safe-buffer": "5.1.1", - "semver": "5.5.0", - "slide": "1.1.6", - "ssri": "5.3.0" - }, - "dependencies": { - "ssri": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz", - "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", - "dev": true, - "requires": { - "safe-buffer": "5.1.1" - } - } - } - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, - "requires": { - "path-key": "2.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "dev": true, - "requires": { - "are-we-there-yet": "1.1.4", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" - } - }, - "nth-check": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", - "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", - "dev": true, - "requires": { - "boolbase": "1.0.0" - } - }, - "null-check": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz", - "integrity": "sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=", - "dev": true - }, - "num2fraction": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", - "dev": true - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, - "oauth-sign": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, - "object-component": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", - "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", - "dev": true - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "requires": { - "copy-descriptor": "0.1.1", - "define-property": "0.2.5", - "kind-of": "3.2.2" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "0.1.6" - } - } - } - }, - "object-keys": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", - "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", - "dev": true - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "requires": { - "isobject": "3.0.1" - } - }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, - "requires": { - "define-properties": "1.1.2", - "function-bind": "1.1.1", - "has-symbols": "1.0.0", - "object-keys": "1.0.11" - } - }, - "object.getownpropertydescriptors": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", - "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", - "dev": true, - "requires": { - "define-properties": "1.1.2", - "es-abstract": "1.11.0" - } - }, - "object.omit": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", - "requires": { - "for-own": "0.1.5", - "is-extendable": "0.1.1" - }, - "dependencies": { - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "requires": { - "for-in": "1.0.2" - } - } - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "requires": { - "isobject": "3.0.1" - } - }, - "obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "dev": true - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "on-headers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", - "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1.0.2" - } - }, - "opn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.1.0.tgz", - "integrity": "sha512-iPNl7SyM8L30Rm1sjGdLLheyHVw5YXVfi3SKWJzBI7efxRwHojfRFjwE/OLM6qp9xJYMgab8WicTU1cPoY+Hpg==", - "dev": true, - "requires": { - "is-wsl": "1.1.0" - } - }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "dev": true, - "requires": { - "minimist": "0.0.8", - "wordwrap": "0.0.2" - } - }, - "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", - "dev": true, - "requires": { - "deep-is": "0.1.3", - "fast-levenshtein": "2.0.6", - "levn": "0.3.0", - "prelude-ls": "1.1.2", - "type-check": "0.3.2", - "wordwrap": "1.0.0" - }, - "dependencies": { - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true - } - } - }, - "options": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", - "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=", - "dev": true - }, - "original": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/original/-/original-1.0.0.tgz", - "integrity": "sha1-kUf5P6FpbQS+YeAb1QuurKZWvTs=", - "dev": true, - "requires": { - "url-parse": "1.0.5" - }, - "dependencies": { - "url-parse": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.0.5.tgz", - "integrity": "sha1-CFSGBCKv3P7+tsllxmLUgAFpkns=", - "dev": true, - "requires": { - "querystringify": "0.0.4", - "requires-port": "1.0.0" - } - } - } - }, - "os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", - "dev": true - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true - }, - "os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "dev": true, - "requires": { - "lcid": "1.0.0" - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true - }, - "osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "dev": true, - "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" - } - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true - }, - "p-limit": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", - "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", - "dev": true, - "requires": { - "p-try": "1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "1.2.0" - } - }, - "p-map": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", - "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", - "dev": true - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true - }, - "pako": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", - "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==", - "dev": true - }, - "parallel-transform": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", - "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", - "dev": true, - "requires": { - "cyclist": "0.2.2", - "inherits": "2.0.3", - "readable-stream": "2.3.3" - } - }, - "param-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", - "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", - "dev": true, - "requires": { - "no-case": "2.3.2" - } - }, - "parse-asn1": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz", - "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==", - "dev": true, - "requires": { - "asn1.js": "4.10.1", - "browserify-aes": "1.2.0", - "create-hash": "1.2.0", - "evp_bytestokey": "1.0.3", - "pbkdf2": "3.0.16" - } - }, - "parse-glob": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", - "requires": { - "glob-base": "0.3.0", - "is-dotfile": "1.0.3", - "is-extglob": "1.0.0", - "is-glob": "2.0.1" - }, - "dependencies": { - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "requires": { - "is-extglob": "1.0.0" - } - } - } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "1.3.1" - } - }, - "parse5": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", - "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", - "dev": true - }, - "parsejson": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/parsejson/-/parsejson-0.0.3.tgz", - "integrity": "sha1-q343WfIJ7OmUN5c/fQ8fZK4OZKs=", - "dev": true, - "requires": { - "better-assert": "1.0.2" - } - }, - "parseqs": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", - "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", - "dev": true, - "requires": { - "better-assert": "1.0.2" - } - }, - "parseuri": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", - "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", - "dev": true, - "requires": { - "better-assert": "1.0.2" - } - }, - "parseurl": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", - "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", - "dev": true - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true - }, - "path-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", - "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", - "dev": true - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "path-parse": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", - "dev": true - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", - "dev": true - }, - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "3.0.0" - } - }, - "pbkdf2": { - "version": "3.0.16", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.16.tgz", - "integrity": "sha512-y4CXP3thSxqf7c0qmOF+9UeOTrifiVTIM+u7NWlq+PRsHbr7r7dpCmvzrZxa96JJUNi0Y5w9VqG5ZNeCVMoDcA==", - "dev": true, - "requires": { - "create-hash": "1.2.0", - "create-hmac": "1.1.7", - "ripemd160": "2.0.2", - "safe-buffer": "5.1.1", - "sha.js": "2.4.11" - } - }, - "performance-now": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", - "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", - "dev": true - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "2.0.4" - } - }, - "pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", - "dev": true, - "requires": { - "find-up": "2.1.0" - } - }, - "portfinder": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.13.tgz", - "integrity": "sha1-uzLs2HwnEErm7kS1o8y/Drsa7ek=", - "dev": true, - "requires": { - "async": "1.5.2", - "debug": "2.6.9", - "mkdirp": "0.5.1" - }, - "dependencies": { - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true - } - } - }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true - }, - "postcss": { - "version": "6.0.22", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.22.tgz", - "integrity": "sha512-Toc9lLoUASwGqxBSJGTVcOQiDqjK+Z2XlWBg+IgYwQMY9vA2f7iMpXVc1GpPcfTSyM5lkxNo0oDwDRO+wm7XHA==", - "dev": true, - "requires": { - "chalk": "2.4.1", - "source-map": "0.6.1", - "supports-color": "5.4.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "1.9.1" - } - }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, - "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", - "dev": true, - "requires": { - "has-flag": "3.0.0" - } - } - } - }, - "postcss-import": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-11.1.0.tgz", - "integrity": "sha512-5l327iI75POonjxkXgdRCUS+AlzAdBx4pOvMEhTKTCjb1p8IEeVR9yx3cPbmN7LIWJLbfnIXxAhoB4jpD0c/Cw==", - "dev": true, - "requires": { - "postcss": "6.0.22", - "postcss-value-parser": "3.3.0", - "read-cache": "1.0.0", - "resolve": "1.5.0" - } - }, - "postcss-load-config": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-1.2.0.tgz", - "integrity": "sha1-U56a/J3chiASHr+djDZz4M5Q0oo=", - "dev": true, - "requires": { - "cosmiconfig": "2.2.2", - "object-assign": "4.1.1", - "postcss-load-options": "1.2.0", - "postcss-load-plugins": "2.3.0" - } - }, - "postcss-load-options": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postcss-load-options/-/postcss-load-options-1.2.0.tgz", - "integrity": "sha1-sJixVZ3awt8EvAuzdfmaXP4rbYw=", - "dev": true, - "requires": { - "cosmiconfig": "2.2.2", - "object-assign": "4.1.1" - } - }, - "postcss-load-plugins": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz", - "integrity": "sha1-dFdoEWWZrKLwCfrUJrABdQSdjZI=", - "dev": true, - "requires": { - "cosmiconfig": "2.2.2", - "object-assign": "4.1.1" - } - }, - "postcss-loader": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-2.1.4.tgz", - "integrity": "sha512-L2p654oK945B/gDFUGgOhh7uzj19RWoY1SVMeJVoKno1H2MdbQ0RppR/28JGju4pMb22iRC7BJ9aDzbxXSLf4A==", - "dev": true, - "requires": { - "loader-utils": "1.1.0", - "postcss": "6.0.22", - "postcss-load-config": "1.2.0", - "schema-utils": "0.4.5" - } - }, - "postcss-url": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/postcss-url/-/postcss-url-7.3.2.tgz", - "integrity": "sha512-QMV5mA+pCYZQcUEPQkmor9vcPQ2MT+Ipuu8qdi1gVxbNiIiErEGft+eny1ak19qALoBkccS5AHaCaCDzh7b9MA==", - "dev": true, - "requires": { - "mime": "1.6.0", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "postcss": "6.0.22", - "xxhashjs": "0.2.2" - } - }, - "postcss-value-parser": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz", - "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=", - "dev": true - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true - }, - "preserve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=" - }, - "pretty-error": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", - "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", - "dev": true, - "requires": { - "renderkid": "2.0.1", - "utila": "0.4.0" - } - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "dev": true - }, - "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" - }, - "promise": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "dev": true, - "optional": true, - "requires": { - "asap": "2.0.6" - } - }, - "promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", - "dev": true - }, - "protractor": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/protractor/-/protractor-5.1.2.tgz", - "integrity": "sha1-myIXQXCaTGLVzVPGqt1UpxE36V8=", - "dev": true, - "requires": { - "@types/node": "6.0.96", - "@types/q": "0.0.32", - "@types/selenium-webdriver": "2.53.43", - "blocking-proxy": "0.0.5", - "chalk": "1.1.3", - "glob": "7.1.2", - "jasmine": "2.9.0", - "jasminewd2": "2.2.0", - "optimist": "0.6.1", - "q": "1.4.1", - "saucelabs": "1.3.0", - "selenium-webdriver": "3.0.1", - "source-map-support": "0.4.18", - "webdriver-js-extender": "1.0.0", - "webdriver-manager": "12.0.6" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - }, - "del": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", - "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", - "dev": true, - "requires": { - "globby": "5.0.0", - "is-path-cwd": "1.0.0", - "is-path-in-cwd": "1.0.0", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "rimraf": "2.6.2" - } - }, - "globby": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", - "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", - "dev": true, - "requires": { - "array-union": "1.0.2", - "arrify": "1.0.1", - "glob": "7.1.2", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "q": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", - "integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4=", - "dev": true - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - }, - "webdriver-manager": { - "version": "12.0.6", - "resolved": "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-12.0.6.tgz", - "integrity": "sha1-PfGkgZdwELTL+MnYXHpXeCjA5ws=", - "dev": true, - "requires": { - "adm-zip": "0.4.7", - "chalk": "1.1.3", - "del": "2.2.2", - "glob": "7.1.2", - "ini": "1.3.5", - "minimist": "1.2.0", - "q": "1.4.1", - "request": "2.81.0", - "rimraf": "2.6.2", - "semver": "5.5.0", - "xml2js": "0.4.19" - } - } - } - }, - "proxy-addr": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.3.tgz", - "integrity": "sha512-jQTChiCJteusULxjBp8+jftSQE5Obdl3k4cnmLA6WXtK6XFuWRnvVL7aCiBqaLPM8c4ph0S4tKna8XvmIwEnXQ==", - "dev": true, - "requires": { - "forwarded": "0.1.2", - "ipaddr.js": "1.6.0" - } - }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", - "dev": true - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true - }, - "public-encrypt": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz", - "integrity": "sha512-4kJ5Esocg8X3h8YgJsKAuoesBgB7mqH3eowiDzMUPKiRDDE7E/BqqZD1hnTByIaAFiwAw246YEltSq7tdrOH0Q==", - "dev": true, - "requires": { - "bn.js": "4.11.8", - "browserify-rsa": "4.0.1", - "create-hash": "1.2.0", - "parse-asn1": "5.1.1", - "randombytes": "2.0.6" - } - }, - "pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dev": true, - "requires": { - "end-of-stream": "1.4.1", - "once": "1.4.0" - } - }, - "pumpify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.4.0.tgz", - "integrity": "sha512-2kmNR9ry+Pf45opRVirpNuIFotsxUGLaYqxIwuR77AYrYRMuFCz9eryHBS52L360O+NcR383CL4QYlMKPq4zYA==", - "dev": true, - "requires": { - "duplexify": "3.5.4", - "inherits": "2.0.3", - "pump": "2.0.1" - } - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - }, - "qjobs": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.1.5.tgz", - "integrity": "sha1-ZZ3p8s+NzCehSBJ28gU3cnI4LnM=", - "dev": true - }, - "qs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", - "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", - "dev": true - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "dev": true - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "dev": true - }, - "querystringify": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-0.0.4.tgz", - "integrity": "sha1-DPf4T5Rj/wrlHExLFC2VvjdyTZw=", - "dev": true - }, - "randomatic": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", - "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", - "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "randombytes": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", - "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", - "dev": true, - "requires": { - "safe-buffer": "5.1.1" - } - }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "requires": { - "randombytes": "2.0.6", - "safe-buffer": "5.1.1" - } - }, - "range-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", - "dev": true - }, - "raw-body": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", - "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", - "dev": true, - "requires": { - "bytes": "3.0.0", - "http-errors": "1.6.2", - "iconv-lite": "0.4.19", - "unpipe": "1.0.0" - } - }, - "raw-loader": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-0.5.1.tgz", - "integrity": "sha1-DD0L6u2KAclm2Xh793goElKpeao=", - "dev": true - }, - "read-cache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", - "dev": true, - "requires": { - "pify": "2.3.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "requires": { - "load-json-file": "1.1.0", - "normalize-package-data": "2.4.0", - "path-type": "1.1.0" - }, - "dependencies": { - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "requires": { - "find-up": "1.1.2", - "read-pkg": "1.1.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "2.0.1" - } - } - } - }, - "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" - } - }, - "readdirp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", - "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", - "requires": { - "graceful-fs": "4.1.11", - "minimatch": "3.0.4", - "readable-stream": "2.3.3", - "set-immediate-shim": "1.0.1" - } - }, - "redent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", - "dev": true, - "requires": { - "indent-string": "2.1.0", - "strip-indent": "1.0.1" - } - }, - "reflect-metadata": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.12.tgz", - "integrity": "sha512-n+IyV+nGz3+0q3/Yf1ra12KpCyi001bi4XFxSjbiWWjfqb52iTTtpGXmCCAOWWIAn9KEuFZKGqBERHmrtScZ3A==", - "dev": true - }, - "regenerate": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz", - "integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==", - "dev": true - }, - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true - }, - "regex-cache": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", - "requires": { - "is-equal-shallow": "0.1.3" - } - }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "3.0.2", - "safe-regex": "1.1.0" - } - }, - "regexpu-core": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", - "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", - "dev": true, - "requires": { - "regenerate": "1.3.3", - "regjsgen": "0.2.0", - "regjsparser": "0.1.5" - } - }, - "regjsgen": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", - "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", - "dev": true - }, - "regjsparser": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", - "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", - "dev": true, - "requires": { - "jsesc": "0.5.0" - } - }, - "relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", - "dev": true - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" - }, - "renderkid": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.1.tgz", - "integrity": "sha1-iYyr/Ivt5Le5ETWj/9Mj5YwNsxk=", - "dev": true, - "requires": { - "css-select": "1.2.0", - "dom-converter": "0.1.4", - "htmlparser2": "3.3.0", - "strip-ansi": "3.0.1", - "utila": "0.3.3" - }, - "dependencies": { - "utila": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz", - "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=", - "dev": true - } - } - }, - "repeat-element": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=" - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" - }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true, - "requires": { - "is-finite": "1.0.2" - } - }, - "request": { - "version": "2.81.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", - "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", - "dev": true, - "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "4.2.1", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.17", - "oauth-sign": "0.8.2", - "performance-now": "0.2.0", - "qs": "6.4.0", - "safe-buffer": "5.1.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.3", - "tunnel-agent": "0.6.0", - "uuid": "3.2.1" - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "require-from-string": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", - "integrity": "sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=", - "dev": true - }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "dev": true - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", - "dev": true - }, - "resolve": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", - "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", - "dev": true, - "requires": { - "path-parse": "1.0.5" - } - }, - "resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", - "dev": true, - "requires": { - "resolve-from": "3.0.0" - } - }, - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true - }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true - }, - "retry": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", - "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=", - "dev": true - }, - "right-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", - "dev": true, - "optional": true, - "requires": { - "align-text": "0.1.4" - } - }, - "rimraf": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", - "dev": true, - "requires": { - "glob": "7.1.2" - } - }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "requires": { - "hash-base": "3.0.4", - "inherits": "2.0.3" - } - }, - "run-queue": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", - "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", - "dev": true, - "requires": { - "aproba": "1.2.0" - } - }, - "rxjs": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.0.0.tgz", - "integrity": "sha512-2MgLQr1zvks8+Kip4T6hcJdiBhV+SIvxguoWjhwtSpNPTp/5e09HJbgclCwR/nW0yWzhubM+6Q0prl8G5RuoBA==", - "requires": { - "tslib": "1.9.0" - } - }, - "rxjs-compat": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/rxjs-compat/-/rxjs-compat-6.0.0.tgz", - "integrity": "sha512-ALfa9p3jtZ+bjvmYVtLaxfl5O3r8xy1RGR8qZhvaOwtbFHzMWwzZqOsLh1u3IhLjD07Ncif94ZtLjsTuq1lEMQ==" - }, - "safe-buffer": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "requires": { - "ret": "0.1.15" - } - }, - "sass-graph": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", - "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=", - "dev": true, - "requires": { - "glob": "7.1.2", - "lodash": "4.17.4", - "scss-tokenizer": "0.2.3", - "yargs": "7.1.0" - } - }, - "sass-loader": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-7.0.1.tgz", - "integrity": "sha512-MeVVJFejJELlAbA7jrRchi88PGP6U9yIfqyiG+bBC4a9s2PX+ulJB9h8bbEohtPBfZmlLhNZ0opQM9hovRXvlw==", - "dev": true, - "requires": { - "clone-deep": "2.0.2", - "loader-utils": "1.1.0", - "lodash.tail": "4.1.1", - "neo-async": "2.5.1", - "pify": "3.0.0" - } - }, - "saucelabs": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-1.3.0.tgz", - "integrity": "sha1-0kDoAJ33+ocwbsRXimm6O1xCT+4=", - "dev": true, - "requires": { - "https-proxy-agent": "1.0.0" - } - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "schema-utils": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.5.tgz", - "integrity": "sha512-yYrjb9TX2k/J1Y5UNy3KYdZq10xhYcF8nMpAW6o3hy6Q8WSIEf9lJHG/ePnOBfziPM3fvQwfOwa13U/Fh8qTfA==", - "dev": true, - "requires": { - "ajv": "6.4.0", - "ajv-keywords": "3.2.0" - } - }, - "scss-tokenizer": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", - "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", - "dev": true, - "requires": { - "js-base64": "2.4.3", - "source-map": "0.4.4" - }, - "dependencies": { - "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "dev": true, - "requires": { - "amdefine": "1.0.1" - } - } - } - }, - "select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", - "dev": true - }, - "selenium-webdriver": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-3.0.1.tgz", - "integrity": "sha1-ot6l2kqX9mcuiefKcnbO+jZRR6c=", - "dev": true, - "requires": { - "adm-zip": "0.4.7", - "rimraf": "2.6.2", - "tmp": "0.0.30", - "xml2js": "0.4.19" - }, - "dependencies": { - "tmp": { - "version": "0.0.30", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.30.tgz", - "integrity": "sha1-ckGdSovn1s51FI/YsyTlk6cRwu0=", - "dev": true, - "requires": { - "os-tmpdir": "1.0.2" - } - } - } - }, - "selfsigned": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.2.tgz", - "integrity": "sha1-tESVgNmZKbZbEKSDiTAaZZIIh1g=", - "dev": true, - "requires": { - "node-forge": "0.7.1" - } - }, - "semver": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", - "dev": true - }, - "semver-dsl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/semver-dsl/-/semver-dsl-1.0.1.tgz", - "integrity": "sha1-02eN5VVeimH2Ke7QJTZq5fJzQKA=", - "dev": true, - "requires": { - "semver": "5.5.0" - } - }, - "semver-intersect": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/semver-intersect/-/semver-intersect-1.3.1.tgz", - "integrity": "sha1-j6hKnhAovSOeRTDRo+GB5pjYhLo=", - "dev": true, - "requires": { - "semver": "5.5.0" - } - }, - "send": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", - "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", - "dev": true, - "requires": { - "debug": "2.6.9", - "depd": "1.1.2", - "destroy": "1.0.4", - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "etag": "1.8.1", - "fresh": "0.5.2", - "http-errors": "1.6.2", - "mime": "1.4.1", - "ms": "2.0.0", - "on-finished": "2.3.0", - "range-parser": "1.2.0", - "statuses": "1.4.0" - }, - "dependencies": { - "mime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", - "dev": true - }, - "statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", - "dev": true - } - } - }, - "serialize-javascript": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.5.0.tgz", - "integrity": "sha512-Ga8c8NjAAp46Br4+0oZ2WxJCwIzwP60Gq1YPgU+39PiTVxyed/iKE/zyZI6+UlVYH5Q4PaQdHhcegIFPZTUfoQ==", - "dev": true - }, - "serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", - "dev": true, - "requires": { - "accepts": "1.3.5", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "1.0.3", - "http-errors": "1.6.2", - "mime-types": "2.1.17", - "parseurl": "1.3.2" - } - }, - "serve-static": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", - "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", - "dev": true, - "requires": { - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "parseurl": "1.3.2", - "send": "0.16.2" - } - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "set-immediate-shim": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", - "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=" - }, - "set-value": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", - "dev": true, - "requires": { - "extend-shallow": "2.0.1", - "is-extendable": "0.1.1", - "is-plain-object": "2.0.4", - "split-string": "3.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "dev": true - }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "requires": { - "inherits": "2.0.3", - "safe-buffer": "5.1.1" - } - }, - "shallow-clone": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-1.0.0.tgz", - "integrity": "sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA==", - "dev": true, - "requires": { - "is-extendable": "0.1.1", - "kind-of": "5.1.0", - "mixin-object": "2.0.1" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true - }, - "silent-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/silent-error/-/silent-error-1.1.0.tgz", - "integrity": "sha1-IglwbxyFCp8dENDYQJGLRvJuG8k=", - "dev": true, - "requires": { - "debug": "2.6.9" - } - }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", - "dev": true - }, - "slide": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", - "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", - "dev": true - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "requires": { - "base": "0.11.2", - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "map-cache": "0.2.2", - "source-map": "0.5.7", - "source-map-resolve": "0.5.1", - "use": "3.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "0.1.6" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "requires": { - "define-property": "1.0.0", - "isobject": "3.0.1", - "snapdragon-util": "3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "1.0.2" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" - } - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "requires": { - "kind-of": "3.2.2" - } - }, - "sntp": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", - "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", - "dev": true, - "requires": { - "hoek": "2.16.3" - } - }, - "socket.io": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-1.7.3.tgz", - "integrity": "sha1-uK+cq6AJSeVo42nxMn6pvp6iRhs=", - "dev": true, - "requires": { - "debug": "2.3.3", - "engine.io": "1.8.3", - "has-binary": "0.1.7", - "object-assign": "4.1.0", - "socket.io-adapter": "0.5.0", - "socket.io-client": "1.7.3", - "socket.io-parser": "2.3.1" - }, - "dependencies": { - "debug": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", - "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "dev": true, - "requires": { - "ms": "0.7.2" - } - }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", - "dev": true - }, - "object-assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", - "integrity": "sha1-ejs9DpgGPUP0wD8uiubNUahog6A=", - "dev": true - } - } - }, - "socket.io-adapter": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz", - "integrity": "sha1-y21LuL7IHhB4uZZ3+c7QBGBmu4s=", - "dev": true, - "requires": { - "debug": "2.3.3", - "socket.io-parser": "2.3.1" - }, - "dependencies": { - "debug": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", - "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "dev": true, - "requires": { - "ms": "0.7.2" - } - }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", - "dev": true - } - } - }, - "socket.io-client": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-1.7.3.tgz", - "integrity": "sha1-sw6GqhDV7zVGYBwJzeR2Xjgdo3c=", - "dev": true, - "requires": { - "backo2": "1.0.2", - "component-bind": "1.0.0", - "component-emitter": "1.2.1", - "debug": "2.3.3", - "engine.io-client": "1.8.3", - "has-binary": "0.1.7", - "indexof": "0.0.1", - "object-component": "0.0.3", - "parseuri": "0.0.5", - "socket.io-parser": "2.3.1", - "to-array": "0.1.4" - }, - "dependencies": { - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", - "dev": true - }, - "debug": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", - "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "dev": true, - "requires": { - "ms": "0.7.2" - } - }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", - "dev": true - } - } - }, - "socket.io-parser": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.3.1.tgz", - "integrity": "sha1-3VMgJRA85Clpcya+/WQAX8/ltKA=", - "dev": true, - "requires": { - "component-emitter": "1.1.2", - "debug": "2.2.0", - "isarray": "0.0.1", - "json3": "3.3.2" - }, - "dependencies": { - "debug": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", - "dev": true, - "requires": { - "ms": "0.7.1" - } - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "ms": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", - "dev": true - } - } - }, - "sockjs": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", - "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", - "dev": true, - "requires": { - "faye-websocket": "0.10.0", - "uuid": "3.2.1" - } - }, - "sockjs-client": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.4.tgz", - "integrity": "sha1-W6vjhrd15M8U51IJEUUmVAFsixI=", - "dev": true, - "requires": { - "debug": "2.6.9", - "eventsource": "0.1.6", - "faye-websocket": "0.11.1", - "inherits": "2.0.3", - "json3": "3.3.2", - "url-parse": "1.4.0" - }, - "dependencies": { - "faye-websocket": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", - "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", - "dev": true, - "requires": { - "websocket-driver": "0.7.0" - } - } - } - }, - "source-list-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", - "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "source-map-resolve": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.1.tgz", - "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==", - "dev": true, - "requires": { - "atob": "2.1.1", - "decode-uri-component": "0.2.0", - "resolve-url": "0.2.1", - "source-map-url": "0.4.0", - "urix": "0.1.0" - } - }, - "source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", - "dev": true, - "requires": { - "source-map": "0.5.7" - } - }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "dev": true - }, - "spdx-correct": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", - "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", - "dev": true, - "requires": { - "spdx-license-ids": "1.2.2" - } - }, - "spdx-expression-parse": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", - "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", - "dev": true - }, - "spdx-license-ids": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", - "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", - "dev": true - }, - "spdy": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz", - "integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=", - "dev": true, - "requires": { - "debug": "2.6.9", - "handle-thing": "1.2.5", - "http-deceiver": "1.2.7", - "safe-buffer": "5.1.1", - "select-hose": "2.0.0", - "spdy-transport": "2.1.0" - } - }, - "spdy-transport": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.1.0.tgz", - "integrity": "sha512-bpUeGpZcmZ692rrTiqf9/2EUakI6/kXX1Rpe0ib/DyOzbiexVfXkw6GnvI9hVGvIwVaUhkaBojjCZwLNRGQg1g==", - "dev": true, - "requires": { - "debug": "2.6.9", - "detect-node": "2.0.3", - "hpack.js": "2.1.6", - "obuf": "1.1.2", - "readable-stream": "2.3.3", - "safe-buffer": "5.1.1", - "wbuf": "1.7.3" - } - }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "requires": { - "extend-shallow": "3.0.2" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "sshpk": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", - "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", - "dev": true, - "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } - } - }, - "ssri": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz", - "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", - "dev": true, - "requires": { - "safe-buffer": "5.1.1" - } - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "requires": { - "define-property": "0.2.5", - "object-copy": "0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "0.1.6" - } - } - } - }, - "stats-webpack-plugin": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/stats-webpack-plugin/-/stats-webpack-plugin-0.6.2.tgz", - "integrity": "sha1-LFlJtTHgf4eojm6k3PrFOqjHWis=", - "dev": true, - "requires": { - "lodash": "4.17.4" - } - }, - "statuses": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", - "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", - "dev": true - }, - "stdout-stream": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.0.tgz", - "integrity": "sha1-osfIWH5U2UJ+qe2zrD8s1SLfN4s=", - "dev": true, - "requires": { - "readable-stream": "2.3.3" - } - }, - "stream-browserify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", - "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.3" - } - }, - "stream-each": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.2.tgz", - "integrity": "sha512-mc1dbFhGBxvTM3bIWmAAINbqiuAk9TATcfIQC8P+/+HJefgaiTlMn2dHvkX8qlI12KeYKSQ1Ua9RrIqrn1VPoA==", - "dev": true, - "requires": { - "end-of-stream": "1.4.1", - "stream-shift": "1.0.0" - } - }, - "stream-http": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.1.tgz", - "integrity": "sha512-cQ0jo17BLca2r0GfRdZKYAGLU6JRoIWxqSOakUMuKOT6MOK7AAlE856L33QuDmAy/eeOrhLee3dZKX0Uadu93A==", - "dev": true, - "requires": { - "builtin-status-codes": "3.0.0", - "inherits": "2.0.3", - "readable-stream": "2.3.3", - "to-arraybuffer": "1.0.1", - "xtend": "4.0.1" - } - }, - "stream-shift": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", - "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", - "dev": true - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "requires": { - "safe-buffer": "5.1.1" - } - }, - "stringstream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", - "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "0.2.1" - } - }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true - }, - "strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", - "dev": true, - "requires": { - "get-stdin": "4.0.1" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true - }, - "style-loader": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.21.0.tgz", - "integrity": "sha512-T+UNsAcl3Yg+BsPKs1vd22Fr8sVT+CJMtzqc6LEw9bbJZb43lm9GoeIfUcDEefBSWC0BhYbcdupV1GtI4DGzxg==", - "dev": true, - "requires": { - "loader-utils": "1.1.0", - "schema-utils": "0.4.5" - } - }, - "stylus": { - "version": "0.54.5", - "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.5.tgz", - "integrity": "sha1-QrlWCTHKcJDOhRWnmLqeaqPW3Hk=", - "dev": true, - "requires": { - "css-parse": "1.7.0", - "debug": "2.6.9", - "glob": "7.0.6", - "mkdirp": "0.5.1", - "sax": "0.5.8", - "source-map": "0.1.43" - }, - "dependencies": { - "glob": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", - "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", - "dev": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "sax": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/sax/-/sax-0.5.8.tgz", - "integrity": "sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE=", - "dev": true - }, - "source-map": { - "version": "0.1.43", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", - "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", - "dev": true, - "requires": { - "amdefine": "1.0.1" - } - } - } - }, - "stylus-loader": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-3.0.2.tgz", - "integrity": "sha512-+VomPdZ6a0razP+zinir61yZgpw2NfljeSsdUF5kJuEzlo3khXhY19Fn6l8QQz1GRJGtMCo8nG5C04ePyV7SUA==", - "dev": true, - "requires": { - "loader-utils": "1.1.0", - "lodash.clonedeep": "4.5.0", - "when": "3.6.4" - } - }, - "supports-color": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", - "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", - "dev": true, - "requires": { - "has-flag": "2.0.0" - } - }, - "tapable": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.8.tgz", - "integrity": "sha1-mTcqXJmb8t8WCvwNdL7U9HlIzSI=", - "dev": true - }, - "tar": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", - "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", - "dev": true, - "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" - } - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, - "through2": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", - "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", - "dev": true, - "requires": { - "readable-stream": "2.3.3", - "xtend": "4.0.1" - } - }, - "thunky": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.2.tgz", - "integrity": "sha1-qGLgGOP7HqLsP85dVWBc9X8kc3E=", - "dev": true - }, - "timers-browserify": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", - "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", - "dev": true, - "requires": { - "setimmediate": "1.0.5" - } - }, - "tmp": { - "version": "0.0.31", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz", - "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=", - "dev": true, - "requires": { - "os-tmpdir": "1.0.2" - } - }, - "to-array": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", - "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", - "dev": true - }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", - "dev": true - }, - "to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", - "dev": true - }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - } - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "requires": { - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "regex-not": "1.0.2", - "safe-regex": "1.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "3.0.0", - "repeat-string": "1.6.1" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - } - } - } - }, - "toposort": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz", - "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=", - "dev": true - }, - "tough-cookie": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", - "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", - "dev": true, - "requires": { - "punycode": "1.4.1" - } - }, - "tree-kill": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.0.tgz", - "integrity": "sha512-DlX6dR0lOIRDFxI0mjL9IYg6OTncLm/Zt+JiBhE5OlFcAR8yc9S7FFXU9so0oda47frdM/JFsk7UjNt9vscKcg==", - "dev": true - }, - "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", - "dev": true - }, - "trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", - "dev": true - }, - "true-case-path": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.2.tgz", - "integrity": "sha1-fskRMJJHZsf1c74wIMNPj9/QDWI=", - "dev": true, - "requires": { - "glob": "6.0.4" - }, - "dependencies": { - "glob": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", - "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", - "dev": true, - "requires": { - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - } - } - }, - "ts-node": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-3.0.6.tgz", - "integrity": "sha1-VRJ/95DH7r9rpowebd6UsJqqIeA=", - "dev": true, - "requires": { - "arrify": "1.0.1", - "chalk": "1.1.3", - "diff": "3.4.0", - "make-error": "1.3.2", - "minimist": "1.2.0", - "mkdirp": "0.5.1", - "source-map-support": "0.4.18", - "tsconfig": "6.0.0", - "v8flags": "2.1.1", - "yn": "2.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "tsconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-6.0.0.tgz", - "integrity": "sha1-aw6DdgA9evGGT434+J3QBZ/80DI=", - "dev": true, - "requires": { - "strip-bom": "3.0.0", - "strip-json-comments": "2.0.1" - }, - "dependencies": { - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - } - } - }, - "tsickle": { - "version": "0.27.5", - "resolved": "https://registry.npmjs.org/tsickle/-/tsickle-0.27.5.tgz", - "integrity": "sha512-NP+CjM1EXza/M8mOXBLH3vkFEJiu1zfEAlC5WdJxHPn8l96QPz5eooP6uAgYtw1CcKfuSyIiheNUdKxtDWCNeg==", - "dev": true, - "requires": { - "minimist": "1.2.0", - "mkdirp": "0.5.1", - "source-map": "0.6.1", - "source-map-support": "0.5.5" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-support": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.5.tgz", - "integrity": "sha512-mR7/Nd5l1z6g99010shcXJiNEaf3fEtmLhRB/sBcQVJGodcHCULPp2y4Sfa43Kv2zq7T+Izmfp/WHCR6dYkQCA==", - "dev": true, - "requires": { - "buffer-from": "1.0.0", - "source-map": "0.6.1" - } - } - } - }, - "tslib": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.0.tgz", - "integrity": "sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ==" - }, - "tslint": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.3.2.tgz", - "integrity": "sha1-5WRZ+wlacwfxA7hAUhdPXju+9u0=", - "dev": true, - "requires": { - "babel-code-frame": "6.26.0", - "colors": "1.1.2", - "diff": "3.4.0", - "glob": "7.1.2", - "optimist": "0.6.1", - "resolve": "1.5.0", - "semver": "5.5.0", - "tslib": "1.9.0", - "tsutils": "2.19.1" - } - }, - "tsutils": { - "version": "2.19.1", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.19.1.tgz", - "integrity": "sha512-1B3z4H4HddgzWptqLzwrJloDEsyBt8DvZhnFO14k7A4RsQL/UhEfQjD4hpcY5NpF3veBkjJhQJ8Bl7Xp96cN+A==", - "dev": true, - "requires": { - "tslib": "1.9.0" - } - }, - "tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", - "dev": true - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, - "requires": { - "safe-buffer": "5.1.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true, - "optional": true - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "requires": { - "prelude-ls": "1.1.2" - } - }, - "type-is": { - "version": "1.6.15", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", - "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=", - "dev": true, - "requires": { - "media-typer": "0.3.0", - "mime-types": "2.1.17" - } - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, - "typescript": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.7.2.tgz", - "integrity": "sha512-p5TCYZDAO0m4G344hD+wx/LATebLWZNkkh2asWUFqSsD2OrDNhbAHuSjobrmsUmdzjJjEeZVU9g1h3O6vpstnw==", - "dev": true - }, - "uglify-js": { - "version": "3.3.23", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.3.23.tgz", - "integrity": "sha512-Ks+KqLGDsYn4z+pU7JsKCzC0T3mPYl+rU+VcPZiQOazjE4Uqi4UCRY3qPMDbJi7ze37n1lDXj3biz1ik93vqvw==", - "dev": true, - "requires": { - "commander": "2.15.1", - "source-map": "0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "uglify-to-browserify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", - "dev": true, - "optional": true - }, - "uglifyjs-webpack-plugin": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.5.tgz", - "integrity": "sha512-hIQJ1yxAPhEA2yW/i7Fr+SXZVMp+VEI3d42RTHBgQd2yhp/1UdBcR3QEWPV5ahBxlqQDMEMTuTEvDHSFINfwSw==", - "dev": true, - "requires": { - "cacache": "10.0.4", - "find-cache-dir": "1.0.0", - "schema-utils": "0.4.5", - "serialize-javascript": "1.5.0", - "source-map": "0.6.1", - "uglify-es": "3.3.9", - "webpack-sources": "1.1.0", - "worker-farm": "1.6.0" - }, - "dependencies": { - "commander": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", - "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "uglify-es": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", - "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", - "dev": true, - "requires": { - "commander": "2.13.0", - "source-map": "0.6.1" - } - } - } - }, - "ultron": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", - "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=", - "dev": true - }, - "union-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", - "dev": true, - "requires": { - "arr-union": "3.1.0", - "get-value": "2.0.6", - "is-extendable": "0.1.1", - "set-value": "0.4.3" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - }, - "set-value": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "dev": true, - "requires": { - "extend-shallow": "2.0.1", - "is-extendable": "0.1.1", - "is-plain-object": "2.0.4", - "to-object-path": "0.3.0" - } - } - } - }, - "unique-filename": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.0.tgz", - "integrity": "sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM=", - "dev": true, - "requires": { - "unique-slug": "2.0.0" - } - }, - "unique-slug": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.0.tgz", - "integrity": "sha1-22Z258fMBimHj/GWCXx4hVrp9Ks=", - "dev": true, - "requires": { - "imurmurhash": "0.1.4" - } - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "dev": true - }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "requires": { - "has-value": "0.3.1", - "isobject": "3.0.1" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "requires": { - "get-value": "2.0.6", - "has-values": "0.1.4", - "isobject": "2.1.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true - } - } - }, - "upath": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.0.5.tgz", - "integrity": "sha512-qbKn90aDQ0YEwvXoLqj0oiuUYroLX2lVHZ+b+xwjozFasAOC4GneDq5+OaIG5Zj+jFmbz/uO+f7a9qxjktJQww==", - "dev": true - }, - "upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", - "dev": true - }, - "uri-js": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-3.0.2.tgz", - "integrity": "sha1-+QuFhQf4HepNz7s8TD2/orVX+qo=", - "requires": { - "punycode": "2.1.0" - }, - "dependencies": { - "punycode": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", - "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=" - } - } - }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true - } - } - }, - "url-join": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.0.tgz", - "integrity": "sha1-TTNA6AfTdzvamZH4MFrNzCpmXSo=", - "dev": true - }, - "url-loader": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-1.0.1.tgz", - "integrity": "sha512-rAonpHy7231fmweBKUFe0bYnlGDty77E+fm53NZdij7j/YOpyGzc7ttqG1nAXl3aRs0k41o0PC3TvGXQiw2Zvw==", - "dev": true, - "requires": { - "loader-utils": "1.1.0", - "mime": "2.3.1", - "schema-utils": "0.4.5" - }, - "dependencies": { - "mime": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz", - "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==", - "dev": true - } - } - }, - "url-parse": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.0.tgz", - "integrity": "sha512-ERuGxDiQ6Xw/agN4tuoCRbmwRuZP0cJ1lJxJubXr5Q/5cDa78+Dc4wfvtxzhzhkm5VvmW6Mf8EVj9SPGN4l8Lg==", - "dev": true, - "requires": { - "querystringify": "2.0.0", - "requires-port": "1.0.0" - }, - "dependencies": { - "querystringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.0.0.tgz", - "integrity": "sha512-eTPo5t/4bgaMNZxyjWx6N2a6AuE0mq51KWvpc7nU/MAqixcI6v6KrGUKES0HaomdnolQBBXU/++X6/QQ9KL4tw==", - "dev": true - } - } - }, - "use": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", - "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } - } - }, - "user-home": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", - "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", - "dev": true - }, - "useragent": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.2.1.tgz", - "integrity": "sha1-z1k+9PLRdYdei7ZY6pLhik/QbY4=", - "dev": true, - "requires": { - "lru-cache": "2.2.4", - "tmp": "0.0.31" - }, - "dependencies": { - "lru-cache": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.2.4.tgz", - "integrity": "sha1-bGWGGb7PFAMdDQtZSxYELOTcBj0=", - "dev": true - } - } - }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "requires": { - "inherits": "2.0.1" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - } - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "util.promisify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", - "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", - "dev": true, - "requires": { - "define-properties": "1.1.2", - "object.getownpropertydescriptors": "2.0.3" - } - }, - "utila": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", - "dev": true - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", - "dev": true - }, - "uuid": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", - "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==", - "dev": true - }, - "v8flags": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", - "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", - "dev": true, - "requires": { - "user-home": "1.1.1" - } - }, - "validate-npm-package-license": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", - "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", - "dev": true, - "requires": { - "spdx-correct": "1.0.2", - "spdx-expression-parse": "1.0.4" - } - }, - "validate-npm-package-name": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", - "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", - "dev": true, - "requires": { - "builtins": "1.0.3" - } - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", - "dev": true - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "1.3.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } - } - }, - "vm-browserify": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", - "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", - "dev": true, - "requires": { - "indexof": "0.0.1" - } - }, - "void-elements": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", - "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", - "dev": true - }, - "watchpack": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", - "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", - "dev": true, - "requires": { - "chokidar": "2.0.3", - "graceful-fs": "4.1.11", - "neo-async": "2.5.1" - }, - "dependencies": { - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "3.1.10", - "normalize-path": "2.1.1" - } - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "1.1.0", - "array-unique": "0.3.2", - "extend-shallow": "2.0.1", - "fill-range": "4.0.0", - "isobject": "3.0.1", - "repeat-element": "1.1.2", - "snapdragon": "0.8.2", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "chokidar": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.3.tgz", - "integrity": "sha512-zW8iXYZtXMx4kux/nuZVXjkLP+CyIK5Al5FHnj1OgTKGZfp4Oy6/ymtMSKFv3GD8DviEmUPmJg9eFdJ/JzudMg==", - "dev": true, - "requires": { - "anymatch": "2.0.0", - "async-each": "1.0.1", - "braces": "2.3.2", - "fsevents": "1.1.3", - "glob-parent": "3.1.0", - "inherits": "2.0.3", - "is-binary-path": "1.0.1", - "is-glob": "4.0.0", - "normalize-path": "2.1.1", - "path-is-absolute": "1.0.1", - "readdirp": "2.1.0", - "upath": "1.0.5" - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "0.1.6" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "0.3.2", - "define-property": "1.0.0", - "expand-brackets": "2.1.4", - "extend-shallow": "2.0.1", - "fragment-cache": "0.2.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "1.0.2" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "2.0.1", - "is-number": "3.0.0", - "repeat-string": "1.6.1", - "to-regex-range": "2.1.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "3.1.0", - "path-dirname": "1.0.2" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "2.1.1" - } - } - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "extglob": "2.0.4", - "fragment-cache": "0.2.1", - "kind-of": "6.0.2", - "nanomatch": "1.2.9", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - } - } - } - }, - "wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", - "dev": true, - "requires": { - "minimalistic-assert": "1.0.1" - } - }, - "webdriver-js-extender": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/webdriver-js-extender/-/webdriver-js-extender-1.0.0.tgz", - "integrity": "sha1-gcUzqeM9W/tZe05j4s2yW1R3dRU=", - "dev": true, - "requires": { - "@types/selenium-webdriver": "2.53.43", - "selenium-webdriver": "2.53.3" - }, - "dependencies": { - "adm-zip": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.4.tgz", - "integrity": "sha1-ph7VrmkFw66lizplfSUDMJEFJzY=", - "dev": true - }, - "sax": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/sax/-/sax-0.6.1.tgz", - "integrity": "sha1-VjsZx8HeiS4Jv8Ty/DDjwn8JUrk=", - "dev": true - }, - "selenium-webdriver": { - "version": "2.53.3", - "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-2.53.3.tgz", - "integrity": "sha1-0p/1qVff8aG0ncRXdW5OS/vc4IU=", - "dev": true, - "requires": { - "adm-zip": "0.4.4", - "rimraf": "2.6.2", - "tmp": "0.0.24", - "ws": "1.1.2", - "xml2js": "0.4.4" - } - }, - "tmp": { - "version": "0.0.24", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.24.tgz", - "integrity": "sha1-1qXhmNFKmDXMby18PZ4wJCjIzxI=", - "dev": true - }, - "xml2js": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.4.tgz", - "integrity": "sha1-MREBAAMAiuGSQOuhdJe1fHKcVV0=", - "dev": true, - "requires": { - "sax": "0.6.1", - "xmlbuilder": "9.0.4" - } - } - } - }, - "webpack": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.6.0.tgz", - "integrity": "sha512-Fu/k/3fZeGtIhuFkiYpIy1UDHhMiGKjG4FFPVuvG+5Os2lWA1ttWpmi9Qnn6AgfZqj9MvhZW/rmj/ip+nHr06g==", - "dev": true, - "requires": { - "acorn": "5.5.3", - "acorn-dynamic-import": "3.0.0", - "ajv": "6.4.0", - "ajv-keywords": "3.2.0", - "chrome-trace-event": "0.1.3", - "enhanced-resolve": "4.0.0", - "eslint-scope": "3.7.1", - "loader-runner": "2.3.0", - "loader-utils": "1.1.0", - "memory-fs": "0.4.1", - "micromatch": "3.1.10", - "mkdirp": "0.5.1", - "neo-async": "2.5.1", - "node-libs-browser": "2.1.0", - "schema-utils": "0.4.5", - "tapable": "1.0.0", - "uglifyjs-webpack-plugin": "1.2.5", - "watchpack": "1.6.0", - "webpack-sources": "1.1.0" - }, - "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "1.1.0", - "array-unique": "0.3.2", - "extend-shallow": "2.0.1", - "fill-range": "4.0.0", - "isobject": "3.0.1", - "repeat-element": "1.1.2", - "snapdragon": "0.8.2", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "enhanced-resolve": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.0.0.tgz", - "integrity": "sha512-jox/62b2GofV1qTUQTMPEJSDIGycS43evqYzD/KVtEb9OCoki9cnacUPxCrZa7JfPzZSYOCZhu9O9luaMxAX8g==", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "memory-fs": "0.4.1", - "tapable": "1.0.0" - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "0.1.6" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "0.3.2", - "define-property": "1.0.0", - "expand-brackets": "2.1.4", - "extend-shallow": "2.0.1", - "fragment-cache": "0.2.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "1.0.2" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "2.0.1", - "is-number": "3.0.0", - "repeat-string": "1.6.1", - "to-regex-range": "2.1.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "extglob": "2.0.4", - "fragment-cache": "0.2.1", - "kind-of": "6.0.2", - "nanomatch": "1.2.9", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - } - }, - "tapable": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.0.0.tgz", - "integrity": "sha512-dQRhbNQkRnaqauC7WqSJ21EEksgT0fYZX2lqXzGkpo8JNig9zGZTYoMGvyI2nWmXlE2VSVXVDu7wLVGu/mQEsg==", - "dev": true - } - } - }, - "webpack-core": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/webpack-core/-/webpack-core-0.6.9.tgz", - "integrity": "sha1-/FcViMhVjad76e+23r3Fo7FyvcI=", - "dev": true, - "requires": { - "source-list-map": "0.1.8", - "source-map": "0.4.4" - }, - "dependencies": { - "source-list-map": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.8.tgz", - "integrity": "sha1-xVCyq1Qn9rPyH1r+rYjE9Vh7IQY=", - "dev": true - }, - "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "dev": true, - "requires": { - "amdefine": "1.0.1" - } - } - } - }, - "webpack-dev-middleware": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.1.3.tgz", - "integrity": "sha512-I6Mmy/QjWU/kXwCSFGaiOoL5YEQIVmbb0o45xMoCyQAg/mClqZVTcsX327sPfekDyJWpCxb+04whNyLOIxpJdQ==", - "dev": true, - "requires": { - "loud-rejection": "1.6.0", - "memory-fs": "0.4.1", - "mime": "2.3.1", - "path-is-absolute": "1.0.1", - "range-parser": "1.2.0", - "url-join": "4.0.0", - "webpack-log": "1.2.0" - }, - "dependencies": { - "mime": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz", - "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==", - "dev": true - } - } - }, - "webpack-dev-server": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.1.3.tgz", - "integrity": "sha512-UXfgQIPpdw2rByoUnCrMAIXCS7IJJMp5N0MDQNk9CuQvirCkuWlu7gQpCS8Kaiz4kogC4TdAQHG3jzh/DdqEWg==", - "dev": true, - "requires": { - "ansi-html": "0.0.7", - "array-includes": "3.0.3", - "bonjour": "3.5.0", - "chokidar": "2.0.3", - "compression": "1.7.2", - "connect-history-api-fallback": "1.5.0", - "debug": "3.1.0", - "del": "3.0.0", - "express": "4.16.3", - "html-entities": "1.2.1", - "http-proxy-middleware": "0.18.0", - "import-local": "1.0.0", - "internal-ip": "1.2.0", - "ip": "1.1.5", - "killable": "1.0.0", - "loglevel": "1.6.1", - "opn": "5.1.0", - "portfinder": "1.0.13", - "selfsigned": "1.10.2", - "serve-index": "1.9.1", - "sockjs": "0.3.19", - "sockjs-client": "1.1.4", - "spdy": "3.4.7", - "strip-ansi": "3.0.1", - "supports-color": "5.4.0", - "webpack-dev-middleware": "3.1.2", - "webpack-log": "1.2.0", - "yargs": "11.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "3.1.10", - "normalize-path": "2.1.1" - } - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "1.1.0", - "array-unique": "0.3.2", - "extend-shallow": "2.0.1", - "fill-range": "4.0.0", - "isobject": "3.0.1", - "repeat-element": "1.1.2", - "snapdragon": "0.8.2", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, - "chokidar": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.3.tgz", - "integrity": "sha512-zW8iXYZtXMx4kux/nuZVXjkLP+CyIK5Al5FHnj1OgTKGZfp4Oy6/ymtMSKFv3GD8DviEmUPmJg9eFdJ/JzudMg==", - "dev": true, - "requires": { - "anymatch": "2.0.0", - "async-each": "1.0.1", - "braces": "2.3.2", - "fsevents": "1.1.3", - "glob-parent": "3.1.0", - "inherits": "2.0.3", - "is-binary-path": "1.0.1", - "is-glob": "4.0.0", - "normalize-path": "2.1.1", - "path-is-absolute": "1.0.1", - "readdirp": "2.1.0", - "upath": "1.0.5" - } - }, - "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", - "dev": true, - "requires": { - "string-width": "2.1.1", - "strip-ansi": "4.0.0", - "wrap-ansi": "2.1.0" - }, - "dependencies": { - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "3.0.0" - } - } - } - }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "0.1.6" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "0.3.2", - "define-property": "1.0.0", - "expand-brackets": "2.1.4", - "extend-shallow": "2.0.1", - "fragment-cache": "0.2.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "1.0.2" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "2.0.1", - "is-number": "3.0.0", - "repeat-string": "1.6.1", - "to-regex-range": "2.1.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "3.1.0", - "path-dirname": "1.0.2" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "2.1.1" - } - } - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "extglob": "2.0.4", - "fragment-cache": "0.2.1", - "kind-of": "6.0.2", - "nanomatch": "1.2.9", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - } - }, - "mime": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz", - "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==", - "dev": true - }, - "os-locale": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", - "dev": true, - "requires": { - "execa": "0.7.0", - "lcid": "1.0.0", - "mem": "1.1.0" - } - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" - }, - "dependencies": { - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "3.0.0" - } - } - } - }, - "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", - "dev": true, - "requires": { - "has-flag": "3.0.0" - } - }, - "webpack-dev-middleware": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.1.2.tgz", - "integrity": "sha512-Z11Zp3GTvCe6mGbbtma+lMB9xRfJcNtupXfmvFBujyXqLNms6onDnSi9f/Cb2rw6KkD5kgibOfxhN7npZwTiGA==", - "dev": true, - "requires": { - "loud-rejection": "1.6.0", - "memory-fs": "0.4.1", - "mime": "2.3.1", - "path-is-absolute": "1.0.1", - "range-parser": "1.2.0", - "url-join": "4.0.0", - "webpack-log": "1.2.0" - } - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", - "dev": true - }, - "yargs": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.0.0.tgz", - "integrity": "sha512-Rjp+lMYQOWtgqojx1dEWorjCofi1YN7AoFvYV7b1gx/7dAAeuI4kN5SZiEvr0ZmsZTOpDRcCqrpI10L31tFkBw==", - "dev": true, - "requires": { - "cliui": "4.1.0", - "decamelize": "1.2.0", - "find-up": "2.1.0", - "get-caller-file": "1.0.2", - "os-locale": "2.1.0", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "2.1.1", - "which-module": "2.0.0", - "y18n": "3.2.1", - "yargs-parser": "9.0.2" - } - }, - "yargs-parser": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", - "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", - "dev": true, - "requires": { - "camelcase": "4.1.0" - } - } - } - }, - "webpack-log": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-1.2.0.tgz", - "integrity": "sha512-U9AnICnu50HXtiqiDxuli5gLB5PGBo7VvcHx36jRZHwK4vzOYLbImqT4lwWwoMHdQWwEKw736fCHEekokTEKHA==", - "dev": true, - "requires": { - "chalk": "2.2.2", - "log-symbols": "2.2.0", - "loglevelnext": "1.0.5", - "uuid": "3.2.1" - } - }, - "webpack-merge": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.1.2.tgz", - "integrity": "sha512-/0QYwW/H1N/CdXYA2PNPVbsxO3u2Fpz34vs72xm03SRfg6bMNGfMJIQEpQjKRvkG2JvT6oRJFpDtSrwbX8Jzvw==", - "dev": true, - "requires": { - "lodash": "4.17.10" - }, - "dependencies": { - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", - "dev": true - } - } - }, - "webpack-sources": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.1.0.tgz", - "integrity": "sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw==", - "dev": true, - "requires": { - "source-list-map": "2.0.0", - "source-map": "0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "webpack-subresource-integrity": { - "version": "1.1.0-rc.4", - "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-1.1.0-rc.4.tgz", - "integrity": "sha1-xcTj1pD50vZKlVDgeodn+Xlqpdg=", - "dev": true, - "requires": { - "webpack-core": "0.6.9" - } - }, - "websocket-driver": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", - "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", - "dev": true, - "requires": { - "http-parser-js": "0.4.12", - "websocket-extensions": "0.1.3" - } - }, - "websocket-extensions": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", - "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", - "dev": true - }, - "when": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/when/-/when-3.6.4.tgz", - "integrity": "sha1-RztRfsFZ4rhQBUl6E5g/CVQS404=", - "dev": true - }, - "which": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", - "dev": true, - "requires": { - "isexe": "2.0.0" - } - }, - "which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", - "dev": true - }, - "wide-align": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", - "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", - "dev": true, - "requires": { - "string-width": "1.0.2" - } - }, - "window-size": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", - "dev": true, - "optional": true - }, - "wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", - "dev": true - }, - "worker-farm": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz", - "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==", - "dev": true, - "requires": { - "errno": "0.1.7" - }, - "dependencies": { - "errno": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", - "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", - "dev": true, - "requires": { - "prr": "1.0.1" - } - } - } - }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "dev": true, - "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "ws": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.2.tgz", - "integrity": "sha1-iiRPoFJAHgjJiGz0SoUYnh/UBn8=", - "dev": true, - "requires": { - "options": "0.0.6", - "ultron": "1.0.2" - } - }, - "wtf-8": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wtf-8/-/wtf-8-1.0.0.tgz", - "integrity": "sha1-OS2LotDxw00e4tYw8V0O+2jhBIo=", - "dev": true - }, - "xml2js": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", - "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", - "dev": true, - "requires": { - "sax": "1.2.4", - "xmlbuilder": "9.0.4" - } - }, - "xmlbuilder": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.4.tgz", - "integrity": "sha1-UZy0ymhtAFqEINNJbz8MruzKWA8=", - "dev": true - }, - "xmlhttprequest-ssl": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz", - "integrity": "sha1-GFqIjATspGw+QHDZn3tJ3jUomS0=", - "dev": true - }, - "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", - "dev": true - }, - "xxhashjs": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/xxhashjs/-/xxhashjs-0.2.2.tgz", - "integrity": "sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw==", - "dev": true, - "requires": { - "cuint": "0.2.2" - } - }, - "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", - "dev": true - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true - }, - "yargs": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", - "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", - "dev": true, - "requires": { - "camelcase": "3.0.0", - "cliui": "3.2.0", - "decamelize": "1.2.0", - "get-caller-file": "1.0.2", - "os-locale": "1.4.0", - "read-pkg-up": "1.0.1", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "1.0.2", - "which-module": "1.0.0", - "y18n": "3.2.1", - "yargs-parser": "5.0.0" - }, - "dependencies": { - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true - }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", - "dev": true - } - } - }, - "yargs-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", - "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", - "dev": true, - "requires": { - "camelcase": "3.0.0" - }, - "dependencies": { - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true - } - } - }, - "yeast": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", - "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", - "dev": true - }, - "yn": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", - "integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=", - "dev": true - }, - "zone.js": { - "version": "0.8.26", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.8.26.tgz", - "integrity": "sha512-W9Nj+UmBJG251wkCacIkETgra4QgBo/vgoEkb4a2uoLzpQG7qF9nzwoLXWU5xj3Fg2mxGvEDh47mg24vXccYjA==" - } - } -} diff --git a/application/package.json b/application/package.json deleted file mode 100644 index 199d080..0000000 --- a/application/package.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "name": "application", - "version": "0.0.0", - "license": "MIT", - "scripts": { - "ng": "ng", - "start": "ng serve", - "build": "ng build", - "test": "ng test --preserve-symlinks", - "lint": "ng lint", - "e2e": "ng e2e", - "prod": "ng serve --aot --prod" - }, - "private": true, - "dependencies": { - "@angular-devkit/schematics": "0.5.10", - "@angular/animations": "^6.0.0-rc.6", - "@angular/common": "^6.0.0-rc.6", - "@angular/compiler": "^6.0.0-rc.6", - "@angular/core": "^6.0.0-rc.6", - "@angular/forms": "^6.0.0-rc.6", - "@angular/http": "^6.0.0-rc.6", - "@angular/platform-browser": "^6.0.0-rc.6", - "@angular/platform-browser-dynamic": "^6.0.0-rc.6", - "@angular/router": "^6.0.0-rc.6", - "core-js": "^2.4.1", - "rxjs": "6.0.0", - "rxjs-compat": "^6.0.0", - "zone.js": "^0.8.26" - }, - "devDependencies": { - "@angular/cli": "^6.0.0-rc.7", - "@angular/compiler-cli": "^6.0.0-rc.6", - "@angular/language-service": "^6.0.0-rc.6", - "@types/jasmine": "~2.5.53", - "@types/jasminewd2": "~2.0.2", - "@types/node": "~6.0.60", - "codelyzer": "~3.0.1", - "jasmine-core": "~2.6.2", - "jasmine-spec-reporter": "~4.1.0", - "karma": "~1.7.0", - "karma-chrome-launcher": "~2.1.1", - "karma-cli": "~1.0.1", - "karma-coverage-istanbul-reporter": "^1.2.1", - "karma-jasmine": "~1.1.0", - "karma-jasmine-html-reporter": "^0.2.2", - "protractor": "~5.1.2", - "ts-node": "~3.0.4", - "tslint": "~5.3.2", - "typescript": "2.7.2", - "enhanced-resolve": "3.3.0", - "@angular-devkit/build-angular": "~0.5.8" - } -} diff --git a/application/src/environments/environment.js b/application/src/environments/environment.js deleted file mode 100644 index 3737e97..0000000 --- a/application/src/environments/environment.js +++ /dev/null @@ -1,9 +0,0 @@ -"use strict"; -// The file contents for the current environment will overwrite these during build. -// The build system defaults to the dev environment which uses `environment.ts`, but if you do -// `ng build --env=prod` then `environment.prod.ts` will be used instead. -// The list of which env maps to which file can be found in `.angular-cli.json`. -exports.__esModule = true; -exports.environment = { - production: false -}; diff --git a/application/src/environments/environment.prod.js b/application/src/environments/environment.prod.js deleted file mode 100644 index 8cfe30c..0000000 --- a/application/src/environments/environment.prod.js +++ /dev/null @@ -1,5 +0,0 @@ -"use strict"; -exports.__esModule = true; -exports.environment = { - production: true -}; diff --git a/application/src/environments/environment.ts b/application/src/environments/environment.ts deleted file mode 100644 index b7f639a..0000000 --- a/application/src/environments/environment.ts +++ /dev/null @@ -1,8 +0,0 @@ -// The file contents for the current environment will overwrite these during build. -// The build system defaults to the dev environment which uses `environment.ts`, but if you do -// `ng build --env=prod` then `environment.prod.ts` will be used instead. -// The list of which env maps to which file can be found in `.angular-cli.json`. - -export const environment = { - production: false -}; diff --git a/application/src/tsconfig.app.json b/application/src/tsconfig.app.json deleted file mode 100644 index 05238e9..0000000 --- a/application/src/tsconfig.app.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "extends": "../tsconfig.json", - "compilerOptions": { - "outDir": "../out-tsc/app", - "baseUrl": "./", - "module": "es2015", - "strict": true, - "types": [], - "paths": { - "@angular/*": [ - "../node_modules/@angular/*" - ] - } - }, - "exclude": [ - "test.ts", - "**/*.spec.ts" - ] -} diff --git a/application/src/tsconfig.spec.json b/application/src/tsconfig.spec.json deleted file mode 100644 index 6e5e5b6..0000000 --- a/application/src/tsconfig.spec.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "extends": "../tsconfig.json", - "compilerOptions": { - "outDir": "../out-tsc/spec", - "baseUrl": "./", - "module": "commonjs", - "target": "es5", - "strict": false, - "types": [ - "jasmine", - "node" - ] - }, - "files": [ - "test.ts", - "polyfills.ts" - ], - "include": [ - "polyfills.ts", - "**/*", - "**/*.spec.ts", - "./**/*.spec.ts", - "./**/*.d.ts", - "**/*.d.ts" - ] -} \ No newline at end of file diff --git a/application/src/typings.d.ts b/application/src/typings.d.ts deleted file mode 100644 index ef5c7bd..0000000 --- a/application/src/typings.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -/* SystemJS module definition */ -declare var module: NodeModule; -interface NodeModule { - id: string; -} diff --git a/application/tsconfig.json b/application/tsconfig.json deleted file mode 100644 index 9396050..0000000 --- a/application/tsconfig.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "compileOnSave": false, - "compilerOptions": { - "outDir": "./dist/out-tsc", - "sourceMap": true, - "declaration": false, - "strict": true, - "moduleResolution": "node", - "emitDecoratorMetadata": true, - "experimentalDecorators": true, - "target": "es5", - "typeRoots": [ - "node_modules/@types" - ], - "lib": [ - "es2016", - "dom" - ] - } -} diff --git a/application/tslint.json b/application/tslint.json deleted file mode 100644 index db0852c..0000000 --- a/application/tslint.json +++ /dev/null @@ -1,141 +0,0 @@ -{ - "rulesDirectory": [ - "node_modules/codelyzer" - ], - "rules": { - "arrow-return-shorthand": true, - "callable-types": true, - "class-name": true, - "comment-format": [ - true, - "check-space" - ], - "curly": true, - "eofline": true, - "forin": true, - "import-blacklist": [ - true - ], - "import-spacing": true, - "indent": [ - true, - "spaces" - ], - "interface-over-type-literal": true, - "label-position": true, - "max-line-length": [ - true, - 140 - ], - "member-access": false, - "member-ordering": [ - true, - { - "order": [ - "static-field", - "instance-field", - "static-method", - "instance-method" - ] - } - ], - "no-arg": true, - "no-bitwise": true, - "no-console": [ - true, - "debug", - "info", - "time", - "timeEnd", - "trace" - ], - "no-construct": true, - "no-debugger": true, - "no-duplicate-super": true, - "no-empty": false, - "no-empty-interface": true, - "no-eval": true, - "no-inferrable-types": [ - true, - "ignore-params" - ], - "no-misused-new": true, - "no-non-null-assertion": true, - "no-shadowed-variable": true, - "no-string-literal": false, - "no-string-throw": true, - "no-switch-case-fall-through": true, - "no-trailing-whitespace": true, - "no-unnecessary-initializer": true, - "no-unused-expression": true, - "no-use-before-declare": true, - "no-var-keyword": true, - "object-literal-sort-keys": false, - "one-line": [ - true, - "check-open-brace", - "check-catch", - "check-else", - "check-whitespace" - ], - "prefer-const": true, - "quotemark": [ - true, - "single" - ], - "radix": true, - "semicolon": [ - true, - "always" - ], - "triple-equals": [ - true, - "allow-null-check" - ], - "typedef-whitespace": [ - true, - { - "call-signature": "nospace", - "index-signature": "nospace", - "parameter": "nospace", - "property-declaration": "nospace", - "variable-declaration": "nospace" - } - ], - "typeof-compare": true, - "unified-signatures": true, - "variable-name": false, - "whitespace": [ - true, - "check-branch", - "check-decl", - "check-operator", - "check-separator", - "check-type" - ], - "directive-selector": [ - true, - "attribute", - "app", - "camelCase" - ], - "component-selector": [ - true, - "element", - "app", - "kebab-case" - ], - "use-input-property-decorator": true, - "use-output-property-decorator": true, - "use-host-property-decorator": true, - "no-input-rename": true, - "no-output-rename": true, - "use-life-cycle-interface": true, - "use-pipe-transform-interface": true, - "component-class-suffix": true, - "directive-class-suffix": true, - "no-access-missing-member": true, - "templates-use-public": true, - "invoke-injectable": true - } -} \ No newline at end of file diff --git a/docs/classes/AppPage.html b/docs/classes/AppPage.html new file mode 100644 index 0000000..81708cf --- /dev/null +++ b/docs/classes/AppPage.html @@ -0,0 +1,652 @@ + + + + + + ngx-permissions + + + + + + + + + + + + +
+
+ +
+
+ + + + + + + + + + +
+
+

+

File

+

+

+ e2e/src/app.po.ts +

+ + + + + +
+ +

+ Methods +

+ + + + + + + + + + + + + + + + + + +
+ navigateTo +
+ navigateTo() +
+ +
+ +
+ Returns : void + +
+
+ + + + + + + + + + + + + + + + + + +
+ getParagraphText +
+ getParagraphText() +
+ +
+ +
+ Returns : void + +
+
+
+ + +
+
+
import { browser, by, element } from 'protractor';
+
+export class AppPage {
+  navigateTo() {
+    return browser.get('/');
+  }
+
+  getParagraphText() {
+    return element(by.css('app-root h1')).getText();
+  }
+}
+
+
+
+ + + + + +
+
+

results matching ""

+
    +
    +
    +

    No results matching ""

    +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/classes/NgxPermission.html b/docs/classes/NgxPermission.html new file mode 100644 index 0000000..b79104d --- /dev/null +++ b/docs/classes/NgxPermission.html @@ -0,0 +1,647 @@ + + + + + + ngx-permissions + + + + + + + + + + + + +
    +
    + +
    +
    + + + + + + + + + + +
    +
    +

    +

    File

    +

    +

    + projects/ngx-permissions/src/lib/model/permission.model.ts +

    + + + + +
    +

    Constructor

    + + + + + + + + + + +
    + constructor(name: string, validationFunction: any) +
    + +
    +
    + + + +
    + +

    + Properties +

    + + + + + + + + + + + + +
    + name +
    + name: string + +
    + +
    + + + + + + + + + + + + +
    + validationFunction +
    + validationFunction: any + +
    + +
    +
    +
    +
    +
    export class NgxPermission {
    +    name: string;
    +    validationFunction?: Function;
    +
    +    constructor(name: string, validationFunction: Function) {
    +        this.name = name;
    +        this.validationFunction = validationFunction;
    +    }
    +
    +}
    +
    +
    +
    + + + + + +
    +
    +

    results matching ""

    +
      +
      +
      +

      No results matching ""

      +
      +
      +
      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/classes/NgxRole.html b/docs/classes/NgxRole.html new file mode 100644 index 0000000..da0e73e --- /dev/null +++ b/docs/classes/NgxRole.html @@ -0,0 +1,646 @@ + + + + + + ngx-permissions + + + + + + + + + + + + +
      +
      + +
      +
      + + + + + + + + + + +
      +
      +

      +

      File

      +

      +

      + projects/ngx-permissions/src/lib/model/role.model.ts +

      + + + + +
      +

      Constructor

      + + + + + + + + + + +
      + constructor(name: string, validationFunction: any) +
      + +
      +
      + + + +
      + +

      + Properties +

      + + + + + + + + + + + + +
      + name +
      + name: string + +
      + +
      + + + + + + + + + + + + +
      + validationFunction +
      + validationFunction: any + +
      + +
      +
      +
      +
      +
      export class NgxRole {
      +    name: string;
      +    validationFunction: Function | string[];
      +
      +    constructor(name: string, validationFunction: Function | string[]) {
      +        this.name = name;
      +        this.validationFunction = validationFunction;
      +    }
      +}
      +
      +
      +
      + + + + + +
      +
      +

      results matching ""

      +
        +
        +
        +

        No results matching ""

        +
        +
        +
        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/classes/NgxRolesStore.html b/docs/classes/NgxRolesStore.html new file mode 100644 index 0000000..22cabf9 --- /dev/null +++ b/docs/classes/NgxRolesStore.html @@ -0,0 +1,628 @@ + + + + + + ngx-permissions + + + + + + + + + + + + +
        +
        + +
        +
        + + + + + + + + + + +
        +
        +

        +

        File

        +

        +

        + projects/ngx-permissions/src/lib/store/roles.store.ts +

        + + + + + + + +
        + +

        + Properties +

        + + + + + + + + + + + + +
        + Public roles$ +
        + roles$: any + +
        + +
        + + + + + + + + + + + + +
        + Public rolesSource +
        + rolesSource: any + +
        + +
        +
        +
        +
        +
        import { BehaviorSubject, Observable } from 'rxjs';
        +
        +export class NgxRolesStore {
        +
        +    public rolesSource = new BehaviorSubject<{}>({});
        +
        +    public roles$: Observable<{}> = this.rolesSource.asObservable();
        +
        +}
        +
        +
        +
        + + + + + +
        +
        +

        results matching ""

        +
          +
          +
          +

          No results matching ""

          +
          +
          +
          +
          +
          + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/components/AppComponent.html b/docs/components/AppComponent.html new file mode 100644 index 0000000..a6963d9 --- /dev/null +++ b/docs/components/AppComponent.html @@ -0,0 +1,993 @@ + + + + + + ngx-permissions + + + + + + + + + + + + +
          +
          + +
          +
          + + + + + + +
          +

          +

          File

          +

          +

          + src/app/app.component.ts +

          + + + +

          +

          Implements

          +

          +

          + OnInit +

          + + +
          +

          Metadata

          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          selectorapp-root
          styleUrlsapp.component.css
          templateUrl./app.component.html
          +
          + + + +
          +

          Constructor

          + + + + + + + + + + +
          + constructor(permissionsService: any) +
          + +
          +
          + +
          + +

          + Methods +

          + + + + + + + + + + + + + + + + + + +
          + ngOnInit +
          + ngOnInit() +
          + +
          + +
          + Returns : void + +
          +
          + + + + + + + + + + + + + + + + + + +
          + Public unAuthorized +
          + + unAuthorized() +
          + +
          + +
          + Returns : void + +
          +
          + + + + + + + + + + + + + + + + + + +
          + Public authorized +
          + + authorized() +
          + +
          + +
          + Returns : void + +
          +
          + + + + + + + + + + + + + + + + + + +
          + Public addPermission +
          + + addPermission() +
          + +
          + +
          + Returns : void + +
          +
          +
          + +
          + +

          + Properties +

          + + + + + + + + + + + + + + + +
          + title +
          + title: string + +
          + Default value : app +
          + +
          +
          +
          + + +
          +
          import { Component, OnInit } from '@angular/core';
          +import { NgxPermissionsService } from 'ngx-permissions';
          +
          +@Component({
          +  selector: 'app-root',
          +  templateUrl: './app.component.html',
          +  styleUrls: ['./app.component.css']
          +})
          +export class AppComponent implements OnInit {
          +  title = 'app';
          +  constructor(private permissionsService: NgxPermissionsService) {
          +
          +  }
          +
          +  ngOnInit(): void {
          +    this.permissionsService.loadPermissions(['ADMIN']);
          +  }
          +
          +  public unAuthorized() {
          +    console.log('unAuthorized');
          +  }
          +
          +  public authorized() {
          +    console.log('authorizes');
          +  }
          +
          +  public addPermission() {
          +    this.permissionsService.addPermission('CHECK_LOAD');
          +  }
          +}
          +
          +
          + +
          +
          <!--The content below is only a placeholder and can be replaced.-->
          +<div style="text-align:center">
          +  <h1>
          +    Welcome to {{title}}!
          +  </h1>
          +  <img width="300" src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCAyNTAgMjUwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNTAgMjUwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KCS5zdDB7ZmlsbDojREQwMDMxO30NCgkuc3Qxe2ZpbGw6I0MzMDAyRjt9DQoJLnN0MntmaWxsOiNGRkZGRkY7fQ0KPC9zdHlsZT4NCjxnPg0KCTxwb2x5Z29uIGNsYXNzPSJzdDAiIHBvaW50cz0iMTI1LDMwIDEyNSwzMCAxMjUsMzAgMzEuOSw2My4yIDQ2LjEsMTg2LjMgMTI1LDIzMCAxMjUsMjMwIDEyNSwyMzAgMjAzLjksMTg2LjMgMjE4LjEsNjMuMiAJIi8+DQoJPHBvbHlnb24gY2xhc3M9InN0MSIgcG9pbnRzPSIxMjUsMzAgMTI1LDUyLjIgMTI1LDUyLjEgMTI1LDE1My40IDEyNSwxNTMuNCAxMjUsMjMwIDEyNSwyMzAgMjAzLjksMTg2LjMgMjE4LjEsNjMuMiAxMjUsMzAgCSIvPg0KCTxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xMjUsNTIuMUw2Ni44LDE4Mi42aDBoMjEuN2gwbDExLjctMjkuMmg0OS40bDExLjcsMjkuMmgwaDIxLjdoMEwxMjUsNTIuMUwxMjUsNTIuMUwxMjUsNTIuMUwxMjUsNTIuMQ0KCQlMMTI1LDUyLjF6IE0xNDIsMTM1LjRIMTA4bDE3LTQwLjlMMTQyLDEzNS40eiIvPg0KPC9nPg0KPC9zdmc+DQo=">
          +</div>
          +
          +
          +
          +
          +
          +<br>
          +<br>
          +<br>
          +
          +
          +
          +
          +<button *ngxPermissionsOnly="['CHECK_LOAD']">Check Load</button>
          +<button *ngxPermissionsOnly="['ADMIN']">Create Users</button>
          +
          +
          +<br>
          +<br>
          +<br>
          +<hr>
          +
          +
          +
          +
          +
          +
          +
          +<h2>
          +  <a routerLink="/home">Only should go Home Page</a>
          +</h2>
          +<h2>
          +  <a routerLink="/home1">Only should not go Home Page</a>
          +</h2>
          +<h2>
          +  <a routerLink="/home3">Except should not go through</a>
          +</h2>
          +<h2>
          +  <a routerLink="/home4">Except should go through</a>
          +</h2>
          +<h2>
          +  <a routerLink="/dynamic/33">Dynamic routes</a>
          +</h2>
          +
          +<a routerLink="/lazy">Lazy module</a>
          +<a routerLink="/lazy-isolate">Lazy ISOLATE</a>
          +<a routerLink="/lazy-roles-isolate">Lazy ROLES ISOLATE</a>
          +<a routerLink="/lazy-roles-async-isolate">Lazy ROLES ASYNC ISOLATE</a>
          +
          +
          +<button (click)="addPermission()">Add load</button>
          +<div>
          +</div>
          +<app-initial-load *ngxPermissionsOnly="['CHECK_LOAD']"></app-initial-load>
          +
          +<router-outlet></router-outlet>
          +
          +<div style="background-color: green">
          +  I SHOULD SEE it (
          +  <ng-template permissions [ngxPermissionsOnly]="['ADMIN']">
          +    I SHOULD SEE see it only admin
          +  </ng-template>
          +</div>
          +
          +
          +<div style="background-color: green">
          +  I SHOULD SEE it 2 (
          +  <ng-template [ngxPermissionsOnly]="['ADMIN']">
          +    I SHOULD SEE see it only admin
          +  </ng-template>
          +</div>
          +
          +<div style="background-color: green">
          +  <div *ngxPermissionsOnly="['ADMIN']">
          +    I SHOULD SEE see it only admin
          +  </div>
          +</div>
          +
          +<div style="background-color: green">
          +  THis USES BOTH only and except
          +
          +  <ng-template [ngxPermissionsOnly]="['ADMIN']" [ngxPermissionsExcept]="'HHHH'">
          +    Usage on both only and except I SHOULD SEE see it only admin
          +  </ng-template>
          +</div>
          +
          +
          +<ng-template permissions [ngxPermissionsOnly]="['GUEST']">
          +  <div>I will not see it only guest</div>
          +</ng-template>
          +
          +<ng-template permissions [ngxPermissionsExcept]="['ADMINNNN']" (permissionsAuthorized)="authorized()" (permissionsUnauthorized)="unAuthorized()">
          +  <div>I will see it except adminnnnnnn</div>
          +</ng-template>
          +
          +<ng-template permissions [ngxPermissionsExcept]="['ADMIN']">
          +  <div>I Should not see it except admin gggggggggg87687687687gggggggggg</div>
          +</ng-template>
          +
          +
          +<div *ngxPermissionsOnly="['ADMIN']; else a; then a2">
          +  <div>Testing templatest</div>
          +</div>
          +
          +<div *ngxPermissionsExcept="['ADMIN']; else a; then a2">
          +  <div>Testing templatest234234</div>
          +</div>
          +
          +
          +<ng-template #a>
          +  else block
          +</ng-template>
          +<ng-template #a2>
          +  then block
          +</ng-template>
          +
          + +
          +
          +
          +
          + Legend +
          +
          +
          Html element +
          +
          +
          Component +
          +
          +
          Html element with directive +
          +
          +
          +
          + + + + + + + + + + + + + + + +
          +
          +

          results matching ""

          +
            +
            +
            +

            No results matching ""

            +
            +
            +
            +
            +
            + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/components/HomeComponent.html b/docs/components/HomeComponent.html new file mode 100644 index 0000000..55db842 --- /dev/null +++ b/docs/components/HomeComponent.html @@ -0,0 +1,735 @@ + + + + + + ngx-permissions + + + + + + + + + + + + +
            +
            + +
            +
            + + + + + + +
            +

            +

            File

            +

            +

            + src/app/home/home.component.ts +

            + + + +

            +

            Implements

            +

            +

            + OnInit +

            + + +
            +

            Metadata

            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            selectorapp-home
            styleUrlshome.component.css
            templateUrl./home.component.html
            +
            + + + +
            +

            Constructor

            + + + + + + + + + + +
            + constructor() +
            + +
            +
            + +
            + +

            + Methods +

            + + + + + + + + + + + + + + + + + + +
            + ngOnInit +
            + ngOnInit() +
            + +
            + +
            + Returns : void + +
            +
            +
            + +
            + + +
            +
            import { Component, OnInit } from '@angular/core';
            +
            +@Component({
            +  selector: 'app-home',
            +  templateUrl: './home.component.html',
            +  styleUrls: ['./home.component.css']
            +})
            +export class HomeComponent implements OnInit {
            +
            +  constructor() { }
            +
            +  ngOnInit() {
            +  }
            +
            +}
            +
            +
            + +
            +
            <p>
            +  home works!
            +</p>
            +<button routerLink="../">Bank</button>
            +
            +
            + +
            +
            +
            +
            + Legend +
            +
            +
            Html element +
            +
            +
            Component +
            +
            +
            Html element with directive +
            +
            +
            +
            + + + + + + + + + + + + + + + +
            +
            +

            results matching ""

            +
              +
              +
              +

              No results matching ""

              +
              +
              +
              +
              +
              + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/components/InitialLoadComponent.html b/docs/components/InitialLoadComponent.html new file mode 100644 index 0000000..35f83b8 --- /dev/null +++ b/docs/components/InitialLoadComponent.html @@ -0,0 +1,735 @@ + + + + + + ngx-permissions + + + + + + + + + + + + +
              +
              + +
              +
              + + + + + + +
              +

              +

              File

              +

              +

              + src/app/initial-load/initial-load.component.ts +

              + + + +

              +

              Implements

              +

              +

              + OnInit +

              + + +
              +

              Metadata

              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              selectorapp-initial-load
              styleUrlsinitial-load.component.css
              templateUrl./initial-load.component.html
              +
              + + + +
              +

              Constructor

              + + + + + + + + + + +
              + constructor() +
              + +
              +
              + +
              + +

              + Methods +

              + + + + + + + + + + + + + + + + + + +
              + ngOnInit +
              + ngOnInit() +
              + +
              + +
              + Returns : void + +
              +
              +
              + +
              + + +
              +
              import { Component, OnInit } from '@angular/core';
              +
              +@Component({
              +  selector: 'app-initial-load',
              +  templateUrl: './initial-load.component.html',
              +  styleUrls: ['./initial-load.component.css']
              +})
              +export class InitialLoadComponent implements OnInit {
              +
              +  constructor() { }
              +
              +  ngOnInit() {
              +    console.log('i m loged')
              +  }
              +
              +}
              +
              +
              + +
              +
              <p>
              +  initial-load works!
              +</p>
              +
              +
              + +
              +
              +
              +
              + Legend +
              +
              +
              Html element +
              +
              +
              Component +
              +
              +
              Html element with directive +
              +
              +
              +
              + + + + + + + + + + + + + + + +
              +
              +

              results matching ""

              +
                +
                +
                +

                No results matching ""

                +
                +
                +
                +
                +
                + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/components/IsolateComponent.html b/docs/components/IsolateComponent.html new file mode 100644 index 0000000..d4e60a8 --- /dev/null +++ b/docs/components/IsolateComponent.html @@ -0,0 +1,764 @@ + + + + + + ngx-permissions + + + + + + + + + + + + +
                +
                + +
                +
                + + + + + + +
                +

                +

                File

                +

                +

                + src/app/lazy-isolate/isolate/isolate.component.ts +

                + + + +

                +

                Implements

                +

                +

                + OnInit +

                + + +
                +

                Metadata

                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                selectorapp-isolate
                styleUrlsisolate.component.css
                templateUrl./isolate.component.html
                +
                + + + +
                +

                Constructor

                + + + + + + + + + + +
                + constructor() +
                + +
                +
                + +
                + +

                + Methods +

                + + + + + + + + + + + + + + + + + + +
                + ngOnInit +
                + ngOnInit() +
                + +
                + +
                + Returns : void + +
                +
                +
                + +
                + + +
                +
                import { Component, OnInit } from '@angular/core';
                +import { NgxPermissionsService } from 'ngx-permissions';
                +import { NgxRolesService } from 'ngx-permissions';
                +
                +@Component({
                +  selector: 'app-isolate',
                +  templateUrl: './isolate.component.html',
                +  styleUrls: ['./isolate.component.css']
                +})
                +export class IsolateComponent implements OnInit {
                +
                +  constructor() { }
                +
                +  ngOnInit() {
                +  }
                +
                +}
                +
                +
                + +
                +
                <p>
                +  LAZY Isolate works!
                +</p>
                +<button routerLink="/">Back</button>
                +<button routerLink="/lazy-isolate/except-should">SHOULD go to isolate except should page testing except</button>
                +<button routerLink="/lazy-isolate/except-should-not">SHOULD NOT go to isolate except should page testing except</button>
                +<button routerLink="/lazy-isolate/only-should">SHOULD go to isolate except should page testing only</button>
                +<button routerLink="/lazy-isolate/only-should-not">SHOULD NOT go to only-should-not except should page testing only</button>
                +
                +<div style="background-color: green">
                +  Should see something
                +  <ng-template [ngxPermissionsOnly]="['GUEST']">
                +    <div> LAZY I will see it only GUEST</div>
                +  </ng-template>
                +</div>
                +
                +
                +<ng-template [ngxPermissionsOnly]="['ADMIN']">
                +  <div style="color: red">LAZY I SHOULD not see it only guest</div>
                +</ng-template>
                +
                +<ng-template [ngxPermissionsExcept]="['GUESTTTT']">
                +  <div>LAZY I will see it except guestttt</div>
                +</ng-template>
                +
                +<ng-template [ngxPermissionsExcept]="['GUEST']">
                +  <div style="color: red">LAZY I Should not see it except admin</div>
                +</ng-template>
                +
                +
                +<div> ENd on lazy ISOLATE Module</div>
                +
                +
                + +
                +
                +
                +
                + Legend +
                +
                +
                Html element +
                +
                +
                Component +
                +
                +
                Html element with directive +
                +
                +
                +
                + + + + + + + + + + + + + + + +
                +
                +

                results matching ""

                +
                  +
                  +
                  +

                  No results matching ""

                  +
                  +
                  +
                  +
                  +
                  + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/components/LazyComponentComponent.html b/docs/components/LazyComponentComponent.html new file mode 100644 index 0000000..bb75c3b --- /dev/null +++ b/docs/components/LazyComponentComponent.html @@ -0,0 +1,759 @@ + + + + + + ngx-permissions + + + + + + + + + + + + +
                  +
                  + +
                  +
                  + + + + + + +
                  +

                  +

                  File

                  +

                  +

                  + src/app/lazy-module/lazy-component/lazy-component.component.ts +

                  + + + +

                  +

                  Implements

                  +

                  +

                  + OnInit +

                  + + +
                  +

                  Metadata

                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  selectorapp-lazy-component
                  styleUrlslazy-component.component.css
                  templateUrl./lazy-component.component.html
                  +
                  + + + +
                  +

                  Constructor

                  + + + + + + + + + + +
                  + constructor() +
                  + +
                  +
                  + +
                  + +

                  + Methods +

                  + + + + + + + + + + + + + + + + + + +
                  + ngOnInit +
                  + ngOnInit() +
                  + +
                  + +
                  + Returns : void + +
                  +
                  +
                  + +
                  + + +
                  +
                  import { Component, OnInit } from '@angular/core';
                  +
                  +@Component({
                  +  selector: 'app-lazy-component',
                  +  templateUrl: './lazy-component.component.html',
                  +  styleUrls: ['./lazy-component.component.css']
                  +})
                  +export class LazyComponentComponent implements OnInit {
                  +
                  +  constructor() { }
                  +
                  +  ngOnInit() {
                  +  }
                  +
                  +}
                  +
                  +
                  + +
                  +
                    <h1>
                  +      Lazy Module Works
                  +  </h1>
                  +
                  +<button routerLink="/">Back</button>
                  +<button routerLink="/lazy/except-should">SHOULD go to isolate except should page testing except</button>
                  +<button routerLink="/lazy/except-should-not">SHOULD NOT go to isolate except should page testing except</button>
                  +<button routerLink="/lazy/only-should">SHOULD go to isolate except should page testing only</button>
                  +<button routerLink="/lazy/only-should-not">SHOULD NOT go to only-should-not except should page testing only</button>
                  +
                  +<ng-template  [ngxPermissionsOnly]="['ADMIN']">
                  +  <div> LAZY I will see it only admin</div>
                  +</ng-template>
                  +
                  +<ng-template  [ngxPermissionsOnly]="['GUEST']">
                  +  <div style="color: red">LAZY I SHOULD not see it only guest</div>
                  +</ng-template>
                  +
                  +<ng-template  [ngxPermissionsExcept]="['ADMINNNN']">
                  +  <div>LAZY I will see it except adminnnnnnn</div>
                  +</ng-template>
                  +
                  +<ng-template  [ngxPermissionsExcept]="['ADMIN']">
                  +  <div style="color: red">LAZY I Should not see it except admin</div>
                  +</ng-template>
                  +
                  +
                  +<div> ENd on lazy Module</div>
                  +
                  +
                  + +
                  +
                  +
                  +
                  + Legend +
                  +
                  +
                  Html element +
                  +
                  +
                  Component +
                  +
                  +
                  Html element with directive +
                  +
                  +
                  +
                  + + + + + + + + + + + + + + + +
                  +
                  +

                  results matching ""

                  +
                    +
                    +
                    +

                    No results matching ""

                    +
                    +
                    +
                    +
                    +
                    + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/components/LazyRoleIsolateTestComponent.html b/docs/components/LazyRoleIsolateTestComponent.html new file mode 100644 index 0000000..16db466 --- /dev/null +++ b/docs/components/LazyRoleIsolateTestComponent.html @@ -0,0 +1,780 @@ + + + + + + ngx-permissions + + + + + + + + + + + + +
                    +
                    + +
                    +
                    + + + + + + +
                    +

                    +

                    File

                    +

                    +

                    + src/app/lazy-role-isolate/lazy-role-isolate-test/lazy-role-isolate-test.component.ts +

                    + + + +

                    +

                    Implements

                    +

                    +

                    + OnInit +

                    + + +
                    +

                    Metadata

                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    selectorapp-lazy-role-isolate-test
                    styleUrlslazy-role-isolate-test.component.css
                    templateUrl./lazy-role-isolate-test.component.html
                    +
                    + + + +
                    +

                    Constructor

                    + + + + + + + + + + +
                    + constructor(rolesService: any, permissionsService: any, renderer: any, configService: any) +
                    + +
                    +
                    + +
                    + +

                    + Methods +

                    + + + + + + + + + + + + + + + + + + +
                    + ngOnInit +
                    + ngOnInit() +
                    + +
                    + +
                    + Returns : void + +
                    +
                    +
                    + +
                    + + +
                    +
                    import { Component, OnInit, Renderer2, TemplateRef } from '@angular/core';
                    +import { NgxRolesService, NgxPermissionsConfigurationService, NgxPermissionsService } from 'ngx-permissions';
                    +
                    +@Component({
                    +  selector: 'app-lazy-role-isolate-test',
                    +  templateUrl: './lazy-role-isolate-test.component.html',
                    +  styleUrls: ['./lazy-role-isolate-test.component.css']
                    +})
                    +export class LazyRoleIsolateTestComponent implements OnInit {
                    +
                    +  constructor(private rolesService: NgxRolesService,
                    +              private permissionsService: NgxPermissionsService,
                    +              private renderer: Renderer2,
                    +              private configService: NgxPermissionsConfigurationService) { }
                    +
                    +  ngOnInit() {
                    +    this.configService.addPermissionStrategy('lol', (tf: any) => {
                    +      this.renderer.setAttribute(tf.elementRef.nativeElement.nextSibling, 'disabled', 'true');
                    +    });
                    +
                    +    this.configService.setDefaultOnUnauthorizedStrategy('lol');
                    +    this.permissionsService.addPermission('ADMIN')
                    +    this.rolesService.addRole('ADMIN', ['NICE']);
                    +  }
                    +
                    +}
                    +
                    +
                    + +
                    +
                    <p>
                    +  LAZY Isolate works!
                    +</p>
                    +<button routerLink="/">Back</button>
                    +<button routerLink="/lazy-roles-isolate/except-should">SHOULD go to isolate except should page testing except</button>
                    +<button routerLink="/lazy-roles-isolate/except-should-not">SHOULD NOT go to isolate except should page testing except</button>
                    +<button routerLink="/lazy-roles-isolate/only-should">SHOULD go to isolate except should page testing only</button>
                    +<button routerLink="/lazy-roles-isolate/only-should-not">SHOULD NOT go to only-should-not except should page testing only</button>
                    +<button routerLink="/lazy-roles-isolate/only-permissions-should">SHOULD go to only-should-not except should page testing only</button>
                    +<!--<button routerLink="/lazy-roles-isolate/only-permissions-not-should">SHOULD NOT go to only-should-not except should page testing only</button>-->
                    +<button routerLink="/lazy-roles-isolate/except-permissions-should-not">SHOULD NOT go to only-should-not except should page testing only</button>
                    +
                    +<div style="background-color: green">
                    +  Should see something
                    +  <ng-template permissions [ngxPermissionsOnly]="['GUEST']">
                    +    <div> LAZY I will see it only GUEST</div>
                    +  </ng-template>
                    +</div>
                    +
                    +
                    +<ng-template permissions [ngxPermissionsOnly]="['ADMIN']">
                    +  <div style="color: red">LAZY I SHOULD not see it only guest</div>
                    +</ng-template>
                    +
                    +<ng-template permissions [ngxPermissionsExcept]="['GUESTTTT']">
                    +  <div>LAZY I will see it except guestttt</div>
                    +</ng-template>
                    +
                    +<ng-template permissions [ngxPermissionsExcept]="['GUEST']">
                    +  <div style="color: red">LAZY I Should not see it except admin</div>
                    +</ng-template>
                    +
                    +
                    +<button *ngxPermissionsOnly="'NEVER EXIST'"> SHOULD BE DISABLES</button>
                    +<button *ngxPermissionsOnly="'ADMIN'"> SHOULD  NOt BE DISABLES</button>
                    +
                    +
                    +<div> ENd on lazy ISOLATE Module</div>
                    +
                    +
                    + +
                    +
                    +
                    +
                    + Legend +
                    +
                    +
                    Html element +
                    +
                    +
                    Component +
                    +
                    +
                    Html element with directive +
                    +
                    +
                    +
                    + + + + + + + + + + + + + + + +
                    +
                    +

                    results matching ""

                    +
                      +
                      +
                      +

                      No results matching ""

                      +
                      +
                      +
                      +
                      +
                      + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/components/LazyRolesAsyncTestComponent.html b/docs/components/LazyRolesAsyncTestComponent.html new file mode 100644 index 0000000..16a5777 --- /dev/null +++ b/docs/components/LazyRolesAsyncTestComponent.html @@ -0,0 +1,801 @@ + + + + + + ngx-permissions + + + + + + + + + + + + +
                      +
                      + +
                      +
                      + + + + + + +
                      +

                      +

                      File

                      +

                      +

                      + src/app/lazy-roles-async-isolate/lazy-roles-async-test/lazy-roles-async-test.component.ts +

                      + + + +

                      +

                      Implements

                      +

                      +

                      + OnInit +

                      + + +
                      +

                      Metadata

                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                      selectorapp-lazy-roles-async-test
                      styleUrlslazy-roles-async-test.component.css
                      templateUrl./lazy-roles-async-test.component.html
                      +
                      + + + +
                      +

                      Constructor

                      + + + + + + + + + + +
                      + constructor(rolesServices: any, asyncTest: any) +
                      + +
                      +
                      + +
                      + +

                      + Methods +

                      + + + + + + + + + + + + + + + + + + +
                      + ngOnInit +
                      + ngOnInit() +
                      + +
                      + +
                      + Returns : void + +
                      +
                      +
                      + +
                      + + +
                      +
                      import { Component, OnInit } from '@angular/core';
                      +import { NgxRolesService } from 'ngx-permissions';
                      +import { AsyncTestService } from '../async-test.service';
                      +
                      +@Component({
                      +  selector: 'app-lazy-roles-async-test',
                      +  templateUrl: './lazy-roles-async-test.component.html',
                      +  styleUrls: ['./lazy-roles-async-test.component.css']
                      +})
                      +export class LazyRolesAsyncTestComponent implements OnInit {
                      +
                      +  constructor(private rolesServices: NgxRolesService, private asyncTest: AsyncTestService) { }
                      +
                      +  ngOnInit() {
                      +    this.rolesServices.addRole("ADMIN_TRUE", () => {
                      +      return true;
                      +    });
                      +
                      +    this.rolesServices.addRole("ADMIN_FALSE", () => {
                      +      return false;
                      +    });
                      +
                      +    this.rolesServices.addRole("ADMIN_RESOLVE_TRUE", () => {
                      +      return this.asyncTest.promiseResolveTrue();
                      +    });
                      +
                      +    this.rolesServices.addRole("ADMIN_RESOLVE_FALSE", () => {
                      +      return this.asyncTest.promiseResolveFalse();
                      +    });
                      +
                      +    this.rolesServices.addRole("ADMIN_REJECT", () => {
                      +      return this.asyncTest.promiseReject();
                      +    })
                      +
                      +    console.log(this.rolesServices.getRoles());
                      +  }
                      +
                      +}
                      +
                      +
                      + +
                      +
                      <p>
                      +  LAZY Isolate works!
                      +</p>
                      +<button routerLink="/">Back</button>
                      +<button routerLink="/lazy-roles-isolate/except-should">SHOULD go to isolate except should page testing except</button>
                      +<button routerLink="/lazy-roles-isolate/except-should-not">SHOULD NOT go to isolate except should page testing except</button>
                      +<button routerLink="/lazy-roles-isolate/only-should">SHOULD go to isolate except should page testing only</button>
                      +<button routerLink="/lazy-roles-isolate/only-should-not">SHOULD NOT go to only-should-not except should page testing only</button>
                      +<button routerLink="/lazy-roles-isolate/only-permissions-should">SHOULD go to only-should-not except should page testing only</button>
                      +<!--<button routerLink="/lazy-roles-isolate/only-permissions-not-should">SHOULD NOT go to only-should-not except should page testing only</button>-->
                      +<button routerLink="/lazy-roles-isolate/except-permissions-should-not">SHOULD NOT go to only-should-not except should page testing only</button>
                      +
                      +<div style="background-color: green">
                      +  Should see something
                      +  <ng-template permissions [ngxPermissionsOnly]="'ADMIN_TRUE'">
                      +    LAZY I will see it only GUEST
                      +  </ng-template>
                      +</div>
                      +
                      +
                      +<div style="background-color: red">
                      +  <ng-template permissions [ngxPermissionsOnly]="'ADMIN_FALSE'">
                      +    <div>LAZY I SHOULD not see it only guest</div>
                      +  </ng-template>
                      +</div>
                      +
                      +<div style="background-color: green">
                      +  la
                      +  <ng-template permissions [ngxPermissionsOnly]="'ADMIN_RESOLVE_TRUE'">
                      +    LAZY I SHOULD not see it ADMIN RESOLVE TRUE guest
                      +  </ng-template>
                      +</div>
                      +
                      +<div class="background-color: red">
                      +  <ng-template permissions [ngxPermissionsOnly]="'ADMIN_RESOLVE_FALSE'">
                      +    <div style="color: red"> I SHOULD NOT SEE RESOLVE FALSE</div>
                      +  </ng-template>
                      +</div>
                      +
                      +<div style="background-color: red">
                      +  <ng-template permissions [ngxPermissionsOnly]="'ADMIN_REJECT'">
                      +    <div>LAZY I Should not see it ADMIN REJECT admin</div>
                      +  </ng-template>
                      +</div>
                      +
                      +
                      +<div> ENd on lazy ISOLATE Module</div>
                      +
                      +
                      + +
                      +
                      +
                      +
                      + Legend +
                      +
                      +
                      Html element +
                      +
                      +
                      Component +
                      +
                      +
                      Html element with directive +
                      +
                      +
                      +
                      + + + + + + + + + + + + + + + +
                      +
                      +

                      results matching ""

                      +
                        +
                        +
                        +

                        No results matching ""

                        +
                        +
                        +
                        +
                        +
                        + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/coverage.html b/docs/coverage.html new file mode 100644 index 0000000..3bac26b --- /dev/null +++ b/docs/coverage.html @@ -0,0 +1,872 @@ + + + + + + ngx-permissions + + + + + + + + + + + + +
                        +
                        + +
                        +
                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                        FileTypeIdentifierStatements
                        + e2e/src/app.po.ts + + class + + AppPage + + 33 % + (1/3) +
                        + projects/ngx-permissions/src/lib/index.ts + + interface + + NgxPermissionsModuleConfig + + 25 % + (1/4) +
                        + projects/ngx-permissions/src/lib/model/permission.model.ts + + class + + NgxPermission + + 25 % + (1/4) +
                        + projects/ngx-permissions/src/lib/model/permissions-router-data.model.ts + + interface + + NgxPermissionsRouterData + + 25 % + (1/4) +
                        + projects/ngx-permissions/src/lib/model/role.model.ts + + class + + NgxRole + + 25 % + (1/4) +
                        + projects/ngx-permissions/src/lib/router/permissions-guard.service.ts + + injectable + + NgxPermissionsGuard + + 0 % + (0/18) +
                        + projects/ngx-permissions/src/lib/router/permissions-guard.service.ts + + interface + + NgxRedirectToNavigationParameters + + 33 % + (1/3) +
                        + projects/ngx-permissions/src/lib/service/configuration.service.ts + + injectable + + NgxPermissionsConfigurationService + + 0 % + (0/12) +
                        + projects/ngx-permissions/src/lib/service/permissions.service.ts + + injectable + + NgxPermissionsService + + 7 % + (1/14) +
                        + projects/ngx-permissions/src/lib/service/roles.service.ts + + injectable + + NgxRolesService + + 0 % + (0/13) +
                        + projects/ngx-permissions/src/lib/store/configuration.store.ts + + injectable + + NgxPermissionsConfigurationStore + + 0 % + (0/6) +
                        + projects/ngx-permissions/src/lib/store/permissions.store.ts + + injectable + + NgxPermissionsStore + + 0 % + (0/4) +
                        + projects/ngx-permissions/src/lib/store/roles.store.ts + + class + + NgxRolesStore + + 33 % + (1/3) +
                        + src/app/app.component.ts + + component + + AppComponent + + 0 % + (0/7) +
                        + src/app/home/home.component.ts + + component + + HomeComponent + + 0 % + (0/3) +
                        + src/app/initial-load/initial-load.component.ts + + component + + InitialLoadComponent + + 0 % + (0/3) +
                        + src/app/lazy-isolate/isolate/isolate.component.ts + + component + + IsolateComponent + + 0 % + (0/3) +
                        + src/app/lazy-module/lazy-component/lazy-component.component.ts + + component + + LazyComponentComponent + + 0 % + (0/3) +
                        + src/app/lazy-role-isolate/lazy-role-isolate-test/lazy-role-isolate-test.component.ts + + component + + LazyRoleIsolateTestComponent + + 0 % + (0/3) +
                        + src/app/lazy-roles-async-isolate/async-test.service.ts + + injectable + + AsyncTestService + + 0 % + (0/5) +
                        + src/app/lazy-roles-async-isolate/lazy-roles-async-test/lazy-roles-async-test.component.ts + + component + + LazyRolesAsyncTestComponent + + 0 % + (0/3) +
                        + +
                        +
                        +

                        results matching ""

                        +
                          +
                          +
                          +

                          No results matching ""

                          +
                          +
                          +
                          +
                          +
                          + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/directives/NgxPermissionsAllowStubDirective.html b/docs/directives/NgxPermissionsAllowStubDirective.html new file mode 100644 index 0000000..4f6e219 --- /dev/null +++ b/docs/directives/NgxPermissionsAllowStubDirective.html @@ -0,0 +1,927 @@ + + + + + + ngx-permissions + + + + + + + + + + + + +
                          +
                          + +
                          +
                          + + + + + + + +
                          +
                          +

                          +

                          File

                          +

                          +

                          + projects/ngx-permissions/src/lib/testing/permissions-allow.directive.stub.ts +

                          + + +

                          +

                          Implements

                          +

                          +

                          + OnInit +

                          + + +
                          +

                          Metadata

                          + + + + + + + + + +
                          selector[ngxPermissionsOnly],[ngxPermissionsExcept]
                          +
                          + +
                          +

                          Inputs

                          + + + + + + + + + + +
                          + ngxPermissionsElse + +

                          + Type: any + +

                          +
                          + +
                          + + + + + + + + + + +
                          + ngxPermissionsExcept + +

                          + Type: string | {} + +

                          +
                          + +
                          + + + + + + + + + + +
                          + ngxPermissionsExceptElse + +

                          + Type: any + +

                          +
                          + +
                          + + + + + + + + + + +
                          + ngxPermissionsExceptThen + +

                          + Type: any + +

                          +
                          + +
                          + + + + + + + + + + +
                          + ngxPermissionsOnly + +

                          + Type: string | {} + +

                          +
                          + +
                          + + + + + + + + + + +
                          + ngxPermissionsOnlyElse + +

                          + Type: any + +

                          +
                          + +
                          + + + + + + + + + + +
                          + ngxPermissionsOnlyThen + +

                          + Type: any + +

                          +
                          + +
                          + + + + + + + + + + +
                          + ngxPermissionsThen + +

                          + Type: any + +

                          +
                          + +
                          +
                          + +
                          +

                          Outputs

                          + + + + + + + + + + +
                          + permissionsAuthorized + + $event type: EventEmitter + +
                          + +
                          + + + + + + + + + + +
                          + permissionsUnauthorized + + $event type: EventEmitter + +
                          + +
                          +
                          + +
                          +

                          Constructor

                          + + + + + + + + + + +
                          + constructor(viewContainer: any, templateRef: any) +
                          + +
                          +
                          + +
                          + +

                          + Methods +

                          + + + + + + + + + + + + + + + + + + +
                          + ngOnInit +
                          + ngOnInit() +
                          + +
                          + +
                          + Returns : void + +
                          +
                          + + + + + + + + + + + + + + + + + + +
                          + Private getAuthorizedTemplate +
                          + + getAuthorizedTemplate() +
                          + +
                          + +
                          + Returns : void + +
                          +
                          +
                          + + +
                          +
                          +
                          import { Directive, EventEmitter, Input, OnInit, Output, TemplateRef, ViewContainerRef } from '@angular/core';
                          +
                          +@Directive({
                          +    selector: '[ngxPermissionsOnly],[ngxPermissionsExcept]'
                          +})
                          +export class NgxPermissionsAllowStubDirective implements OnInit {
                          +
                          +    @Input() ngxPermissionsOnly: string | string[];
                          +    @Input() ngxPermissionsOnlyThen: TemplateRef<any>;
                          +    @Input() ngxPermissionsOnlyElse: TemplateRef<any>;
                          +
                          +    @Input() ngxPermissionsExcept: string | string[];
                          +    @Input() ngxPermissionsExceptElse: TemplateRef<any>;
                          +    @Input() ngxPermissionsExceptThen: TemplateRef<any>;
                          +
                          +    @Input() ngxPermissionsThen: TemplateRef<any>;
                          +    @Input() ngxPermissionsElse: TemplateRef<any>;
                          +
                          +    @Output() permissionsAuthorized = new EventEmitter();
                          +    @Output() permissionsUnauthorized = new EventEmitter();
                          +
                          +
                          +    constructor(private viewContainer: ViewContainerRef,
                          +                private templateRef: TemplateRef<any>) {}
                          +
                          +
                          +    ngOnInit(): void {
                          +        this.viewContainer.clear();
                          +        if (this.getAuthorizedTemplate()) {
                          +            this.viewContainer.createEmbeddedView(this.getAuthorizedTemplate());
                          +        }
                          +        this.permissionsUnauthorized.emit();
                          +    }
                          +
                          +
                          +    private getAuthorizedTemplate() {
                          +        return this.ngxPermissionsOnlyThen ||
                          +            this.ngxPermissionsExceptThen ||
                          +            this.ngxPermissionsThen ||
                          +            this.templateRef;
                          +    }
                          +
                          +}
                          +
                          +
                          +
                          + + + + + + + + +
                          +
                          +

                          results matching ""

                          +
                            +
                            +
                            +

                            No results matching ""

                            +
                            +
                            +
                            +
                            +
                            + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/directives/NgxPermissionsDirective.html b/docs/directives/NgxPermissionsDirective.html new file mode 100644 index 0000000..dbc1c38 --- /dev/null +++ b/docs/directives/NgxPermissionsDirective.html @@ -0,0 +1,1671 @@ + + + + + + ngx-permissions + + + + + + + + + + + + +
                            +
                            + +
                            +
                            + + + + + + + +
                            +
                            +

                            +

                            File

                            +

                            +

                            + projects/ngx-permissions/src/lib/directive/permissions.directive.ts +

                            + + +

                            +

                            Implements

                            +

                            +

                            + OnInit + OnDestroy +

                            + + +
                            +

                            Metadata

                            + + + + + + + + + +
                            selector[ngxPermissionsOnly],[ngxPermissionsExcept]
                            +
                            + +
                            +

                            Inputs

                            + + + + + + + + + + +
                            + ngxPermissionsAuthorisedStrategy + +

                            + Type: any + +

                            +
                            + +
                            + + + + + + + + + + +
                            + ngxPermissionsElse + +

                            + Type: any + +

                            +
                            + +
                            + + + + + + + + + + +
                            + ngxPermissionsExcept + +

                            + Type: string | {} + +

                            +
                            + +
                            + + + + + + + + + + +
                            + ngxPermissionsExceptAuthorisedStrategy + +

                            + Type: any + +

                            +
                            + +
                            + + + + + + + + + + +
                            + ngxPermissionsExceptElse + +

                            + Type: any + +

                            +
                            + +
                            + + + + + + + + + + +
                            + ngxPermissionsExceptThen + +

                            + Type: any + +

                            +
                            + +
                            + + + + + + + + + + +
                            + ngxPermissionsExceptUnauthorisedStrategy + +

                            + Type: any + +

                            +
                            + +
                            + + + + + + + + + + +
                            + ngxPermissionsOnly + +

                            + Type: string | {} + +

                            +
                            + +
                            + + + + + + + + + + +
                            + ngxPermissionsOnlyAuthorisedStrategy + +

                            + Type: any + +

                            +
                            + +
                            + + + + + + + + + + +
                            + ngxPermissionsOnlyElse + +

                            + Type: any + +

                            +
                            + +
                            + + + + + + + + + + +
                            + ngxPermissionsOnlyThen + +

                            + Type: any + +

                            +
                            + +
                            + + + + + + + + + + +
                            + ngxPermissionsOnlyUnauthorisedStrategy + +

                            + Type: any + +

                            +
                            + +
                            + + + + + + + + + + +
                            + ngxPermissionsThen + +

                            + Type: any + +

                            +
                            + +
                            + + + + + + + + + + +
                            + ngxPermissionsUnauthorisedStrategy + +

                            + Type: any + +

                            +
                            + +
                            +
                            + +
                            +

                            Outputs

                            + + + + + + + + + + +
                            + permissionsAuthorized + + $event type: EventEmitter + +
                            + +
                            + + + + + + + + + + +
                            + permissionsUnauthorized + + $event type: EventEmitter + +
                            + +
                            +
                            + +
                            +

                            Constructor

                            + + + + + + + + + + +
                            + constructor(permissionsService: any, configurationService: any, rolesService: any, viewContainer: any, templateRef: any) +
                            + +
                            +
                            + +
                            + +

                            + Methods +

                            + + + + + + + + + + + + + + + + + + +
                            + ngOnInit +
                            + ngOnInit() +
                            + +
                            + +
                            + Returns : void + +
                            +
                            + + + + + + + + + + + + + + + + + + +
                            + ngOnDestroy +
                            + ngOnDestroy() +
                            + +
                            + +
                            + Returns : void + +
                            +
                            + + + + + + + + + + + + + + + + + + +
                            + Private validateExceptOnlyPermissions +
                            + + validateExceptOnlyPermissions() +
                            + +
                            + +
                            + Returns : any + +
                            +
                            + + + + + + + + + + + + + + + + + + +
                            + Private validateExceptAndOnlyPermissions +
                            + + validateExceptAndOnlyPermissions() +
                            + +
                            + +
                            + Returns : void + +
                            +
                            + + + + + + + + + + + + + + + + + + +
                            + Private validateOnlyPermissions +
                            + + validateOnlyPermissions() +
                            + +
                            + +
                            + Returns : void + +
                            +
                            + + + + + + + + + + + + + + + + + + +
                            + Private handleUnauthorisedPermission +
                            + + handleUnauthorisedPermission(template: any) +
                            + +
                            + +
                            + Returns : void + +
                            +
                            + + + + + + + + + + + + + + + + + + +
                            + Private handleAuthorisedPermission +
                            + + handleAuthorisedPermission(template: any) +
                            + +
                            + +
                            + Returns : void + +
                            +
                            + + + + + + + + + + + + + + + + + + +
                            + Private showTemplateBlockInView +
                            + + showTemplateBlockInView(template: any) +
                            + +
                            + +
                            + Returns : void + +
                            +
                            + + + + + + + + + + + + + + + + + + +
                            + Private getAuthorisedTemplates +
                            + + getAuthorisedTemplates() +
                            + +
                            + +
                            + Returns : any + +
                            +
                            + + + + + + + + + + + + + + + + + + +
                            + Private noElseBlockDefined +
                            + + noElseBlockDefined() +
                            + +
                            + +
                            + Returns : boolean + +
                            +
                            + + + + + + + + + + + + + + + + + + +
                            + Private noThenBlockDefined +
                            + + noThenBlockDefined() +
                            + +
                            + +
                            + Returns : void + +
                            +
                            + + + + + + + + + + + + + + + + + + +
                            + Private onlyAuthorisedStrategyDefined +
                            + + onlyAuthorisedStrategyDefined() +
                            + +
                            + +
                            + Returns : void + +
                            +
                            + + + + + + + + + + + + + + + + + + +
                            + Private unauthorisedStrategyDefined +
                            + + unauthorisedStrategyDefined() +
                            + +
                            + +
                            + Returns : void + +
                            +
                            + + + + + + + + + + + + + + + + + + +
                            + Private applyStrategy +
                            + + applyStrategy(str: any) +
                            + +
                            + +
                            + Returns : void + +
                            +
                            +
                            + +
                            + +

                            + Properties +

                            + + + + + + + + + + + + +
                            + Private currentAuthorizedState +
                            + currentAuthorizedState: boolean + +
                            + +
                            + + + + + + + + + + + + + + + +
                            + Private firstMergeUnusedRun +
                            + firstMergeUnusedRun: number + +
                            + Default value : 1 +
                            + +
                            + + + + + + + + + + + + +
                            + Private initPermissionSubscription +
                            + initPermissionSubscription: any + +
                            + +
                            +
                            + +
                            +
                            +
                            import { Directive, EventEmitter, Input, OnDestroy, OnInit, Output, TemplateRef, ViewContainerRef } from '@angular/core';
                            +import { Subscription, merge } from 'rxjs';
                            +import { skip } from 'rxjs/operators';
                            +import { NgxPermissionsPredefinedStrategies } from '../enums/predefined-strategies.enum';
                            +import { NgxPermissionsConfigurationService, StrategyFunction } from '../service/configuration.service';
                            +import { NgxPermissionsService } from '../service/permissions.service';
                            +import { NgxRolesService } from '../service/roles.service';
                            +import { isBoolean, isFunction, isString, notEmptyValue } from '../utils/utils';
                            +
                            +@Directive({
                            +    selector: '[ngxPermissionsOnly],[ngxPermissionsExcept]'
                            +})
                            +export class NgxPermissionsDirective implements OnInit, OnDestroy {
                            +
                            +    @Input() ngxPermissionsOnly: string | string[];
                            +    @Input() ngxPermissionsOnlyThen: TemplateRef<any>;
                            +    @Input() ngxPermissionsOnlyElse: TemplateRef<any>;
                            +
                            +    @Input() ngxPermissionsExcept: string | string[];
                            +    @Input() ngxPermissionsExceptElse: TemplateRef<any>;
                            +    @Input() ngxPermissionsExceptThen: TemplateRef<any>;
                            +
                            +    @Input() ngxPermissionsThen: TemplateRef<any>;
                            +    @Input() ngxPermissionsElse: TemplateRef<any>;
                            +
                            +    @Input() ngxPermissionsOnlyAuthorisedStrategy: string | StrategyFunction;
                            +    @Input() ngxPermissionsOnlyUnauthorisedStrategy: string | StrategyFunction;
                            +
                            +    @Input() ngxPermissionsExceptUnauthorisedStrategy: string | StrategyFunction;
                            +    @Input() ngxPermissionsExceptAuthorisedStrategy: string | StrategyFunction;
                            +
                            +    @Input() ngxPermissionsUnauthorisedStrategy: string | StrategyFunction;
                            +    @Input() ngxPermissionsAuthorisedStrategy: string | StrategyFunction;
                            +
                            +    @Output() permissionsAuthorized = new EventEmitter();
                            +    @Output() permissionsUnauthorized = new EventEmitter();
                            +
                            +    private initPermissionSubscription: Subscription;
                            +    // skip first run cause merge will fire twice
                            +    private firstMergeUnusedRun = 1;
                            +    private currentAuthorizedState: boolean;
                            +
                            +    constructor(
                            +        private permissionsService: NgxPermissionsService,
                            +        private configurationService: NgxPermissionsConfigurationService,
                            +        private rolesService: NgxRolesService,
                            +        private viewContainer: ViewContainerRef,
                            +        private templateRef: TemplateRef<any>
                            +    ) {
                            +    }
                            +
                            +    ngOnInit(): void {
                            +        this.viewContainer.clear();
                            +        this.initPermissionSubscription = this.validateExceptOnlyPermissions();
                            +    }
                            +
                            +    ngOnDestroy(): void {
                            +        if (this.initPermissionSubscription) {
                            +            this.initPermissionSubscription.unsubscribe();
                            +        }
                            +    }
                            +
                            +    private validateExceptOnlyPermissions(): Subscription {
                            +        return merge(this.permissionsService.permissions$, this.rolesService.roles$)
                            +            .pipe(skip(this.firstMergeUnusedRun))
                            +            .subscribe(() => {
                            +                if (notEmptyValue(this.ngxPermissionsExcept)) {
                            +                    return this.validateExceptAndOnlyPermissions();
                            +                }
                            +
                            +                if (notEmptyValue(this.ngxPermissionsOnly)) {
                            +                    return this.validateOnlyPermissions();
                            +                }
                            +
                            +                this.handleAuthorisedPermission(this.getAuthorisedTemplates());
                            +            });
                            +    }
                            +
                            +    private validateExceptAndOnlyPermissions(): void {
                            +        Promise.all([ this.permissionsService.hasPermission(this.ngxPermissionsExcept), this.rolesService.hasOnlyRoles(this.ngxPermissionsExcept) ])
                            +               .then(([ hasPermission, hasRole ]) => {
                            +                   if (hasPermission || hasRole) {
                            +                       this.handleUnauthorisedPermission(this.ngxPermissionsExceptElse || this.ngxPermissionsElse);
                            +                   } else {
                            +                       if (!!this.ngxPermissionsOnly) {
                            +                           throw false;
                            +                       } else {
                            +                           this.handleAuthorisedPermission(this.ngxPermissionsExceptThen || this.ngxPermissionsThen || this.templateRef);
                            +                       }
                            +                   }
                            +               }).catch(() => {
                            +            if (!!this.ngxPermissionsOnly) {
                            +                this.validateOnlyPermissions();
                            +            } else {
                            +                this.handleAuthorisedPermission(this.ngxPermissionsExceptThen || this.ngxPermissionsThen || this.templateRef);
                            +            }
                            +        });
                            +    }
                            +
                            +    private validateOnlyPermissions(): void {
                            +        Promise.all([ this.permissionsService.hasPermission(this.ngxPermissionsOnly), this.rolesService.hasOnlyRoles(this.ngxPermissionsOnly) ])
                            +               .then(([ permissionPr, roles ]) => {
                            +                   if (permissionPr || roles) {
                            +                       this.handleAuthorisedPermission(this.ngxPermissionsOnlyThen || this.ngxPermissionsThen || this.templateRef);
                            +                   } else {
                            +                       this.handleUnauthorisedPermission(this.ngxPermissionsOnlyElse || this.ngxPermissionsElse);
                            +                   }
                            +               }).catch(() => {
                            +            this.handleUnauthorisedPermission(this.ngxPermissionsOnlyElse || this.ngxPermissionsElse);
                            +        });
                            +    }
                            +
                            +    private handleUnauthorisedPermission(template: TemplateRef<any>): void {
                            +
                            +        if (!isBoolean(this.currentAuthorizedState) || this.currentAuthorizedState) {
                            +            this.currentAuthorizedState = false;
                            +            this.permissionsUnauthorized.emit();
                            +
                            +            if (this.unauthorisedStrategyDefined()) {
                            +                if (isString(this.unauthorisedStrategyDefined())) {
                            +                    this.applyStrategy(this.unauthorisedStrategyDefined());
                            +                } else if (isFunction(this.unauthorisedStrategyDefined())) {
                            +                    this.showTemplateBlockInView(this.templateRef);
                            +                    (this.unauthorisedStrategyDefined() as Function)(this.templateRef);
                            +                }
                            +                return;
                            +            }
                            +
                            +            if (this.configurationService.onUnAuthorisedDefaultStrategy && this.noElseBlockDefined()) {
                            +                this.applyStrategy(this.configurationService.onUnAuthorisedDefaultStrategy);
                            +            } else {
                            +                this.showTemplateBlockInView(template);
                            +            }
                            +
                            +        }
                            +    }
                            +
                            +    private handleAuthorisedPermission(template: TemplateRef<any>): void {
                            +        if (!isBoolean(this.currentAuthorizedState) || !this.currentAuthorizedState) {
                            +            this.currentAuthorizedState = true;
                            +            this.permissionsAuthorized.emit();
                            +
                            +            if (this.onlyAuthorisedStrategyDefined()) {
                            +                if (isString(this.onlyAuthorisedStrategyDefined())) {
                            +                    this.applyStrategy(this.onlyAuthorisedStrategyDefined());
                            +                } else if (isFunction(this.onlyAuthorisedStrategyDefined())) {
                            +                    this.showTemplateBlockInView(this.templateRef);
                            +                    (this.onlyAuthorisedStrategyDefined() as Function)(this.templateRef);
                            +                }
                            +                return;
                            +            }
                            +
                            +            if (this.configurationService.onAuthorisedDefaultStrategy && this.noThenBlockDefined()) {
                            +                this.applyStrategy(this.configurationService.onAuthorisedDefaultStrategy);
                            +            } else {
                            +                this.showTemplateBlockInView(template);
                            +            }
                            +        }
                            +    }
                            +
                            +    private showTemplateBlockInView(template: TemplateRef<any>): void {
                            +        this.viewContainer.clear();
                            +        if (!template) {
                            +            return;
                            +        }
                            +
                            +        this.viewContainer.createEmbeddedView(template);
                            +    }
                            +
                            +    private getAuthorisedTemplates(): TemplateRef<any> {
                            +        return this.ngxPermissionsOnlyThen
                            +            || this.ngxPermissionsExceptThen
                            +            || this.ngxPermissionsThen
                            +            || this.templateRef;
                            +    }
                            +
                            +    private noElseBlockDefined(): boolean {
                            +        return !this.ngxPermissionsExceptElse || !this.ngxPermissionsElse;
                            +    }
                            +
                            +    private noThenBlockDefined() {
                            +        return !this.ngxPermissionsExceptThen || !this.ngxPermissionsThen;
                            +    }
                            +
                            +    private onlyAuthorisedStrategyDefined() {
                            +        return this.ngxPermissionsOnlyAuthorisedStrategy ||
                            +            this.ngxPermissionsExceptAuthorisedStrategy ||
                            +            this.ngxPermissionsAuthorisedStrategy;
                            +    }
                            +
                            +    private unauthorisedStrategyDefined() {
                            +        return this.ngxPermissionsOnlyUnauthorisedStrategy ||
                            +            this.ngxPermissionsExceptUnauthorisedStrategy ||
                            +            this.ngxPermissionsUnauthorisedStrategy;
                            +    }
                            +
                            +    private applyStrategy(str: any) {
                            +        if (str === NgxPermissionsPredefinedStrategies.SHOW) {
                            +            this.showTemplateBlockInView(this.templateRef);
                            +            return;
                            +        }
                            +
                            +        if (str === NgxPermissionsPredefinedStrategies.REMOVE) {
                            +            this.viewContainer.clear();
                            +            return;
                            +        }
                            +        const strategy = this.configurationService.getStrategy(str);
                            +        this.showTemplateBlockInView(this.templateRef);
                            +        strategy(this.templateRef);
                            +    }
                            +
                            +}
                            +
                            +
                            +
                            + + + + + + + + +
                            +
                            +

                            results matching ""

                            +
                              +
                              +
                              +

                              No results matching ""

                              +
                              +
                              +
                              +
                              +
                              + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/directives/NgxPermissionsRestrictStubDirective.html b/docs/directives/NgxPermissionsRestrictStubDirective.html new file mode 100644 index 0000000..fe50229 --- /dev/null +++ b/docs/directives/NgxPermissionsRestrictStubDirective.html @@ -0,0 +1,925 @@ + + + + + + ngx-permissions + + + + + + + + + + + + +
                              +
                              + +
                              +
                              + + + + + + + +
                              +
                              +

                              +

                              File

                              +

                              +

                              + projects/ngx-permissions/src/lib/testing/permissions-restrict.directive.stub.ts +

                              + + +

                              +

                              Implements

                              +

                              +

                              + OnInit +

                              + + +
                              +

                              Metadata

                              + + + + + + + + + +
                              selector[ngxPermissionsOnly],[ngxPermissionsExcept]
                              +
                              + +
                              +

                              Inputs

                              + + + + + + + + + + +
                              + ngxPermissionsElse + +

                              + Type: any + +

                              +
                              + +
                              + + + + + + + + + + +
                              + ngxPermissionsExcept + +

                              + Type: string | {} + +

                              +
                              + +
                              + + + + + + + + + + +
                              + ngxPermissionsExceptElse + +

                              + Type: any + +

                              +
                              + +
                              + + + + + + + + + + +
                              + ngxPermissionsExceptThen + +

                              + Type: any + +

                              +
                              + +
                              + + + + + + + + + + +
                              + ngxPermissionsOnly + +

                              + Type: string | {} + +

                              +
                              + +
                              + + + + + + + + + + +
                              + ngxPermissionsOnlyElse + +

                              + Type: any + +

                              +
                              + +
                              + + + + + + + + + + +
                              + ngxPermissionsOnlyThen + +

                              + Type: any + +

                              +
                              + +
                              + + + + + + + + + + +
                              + ngxPermissionsThen + +

                              + Type: any + +

                              +
                              + +
                              +
                              + +
                              +

                              Outputs

                              + + + + + + + + + + +
                              + permissionsAuthorized + + $event type: EventEmitter + +
                              + +
                              + + + + + + + + + + +
                              + permissionsUnauthorized + + $event type: EventEmitter + +
                              + +
                              +
                              + +
                              +

                              Constructor

                              + + + + + + + + + + +
                              + constructor(viewContainer: any) +
                              + +
                              +
                              + +
                              + +

                              + Methods +

                              + + + + + + + + + + + + + + + + + + +
                              + ngOnInit +
                              + ngOnInit() +
                              + +
                              + +
                              + Returns : void + +
                              +
                              + + + + + + + + + + + + + + + + + + +
                              + Private getUnAuthorizedTemplate +
                              + + getUnAuthorizedTemplate() +
                              + +
                              + +
                              + Returns : void + +
                              +
                              +
                              + + +
                              +
                              +
                              import { Directive, EventEmitter, Input, OnInit, Output, TemplateRef, ViewContainerRef } from '@angular/core';
                              +
                              +@Directive({
                              +    selector: '[ngxPermissionsOnly],[ngxPermissionsExcept]'
                              +})
                              +export class NgxPermissionsRestrictStubDirective implements OnInit {
                              +
                              +    @Input() ngxPermissionsOnly: string | string[];
                              +    @Input() ngxPermissionsOnlyThen: TemplateRef<any>;
                              +    @Input() ngxPermissionsOnlyElse: TemplateRef<any>;
                              +
                              +    @Input() ngxPermissionsExcept: string | string[];
                              +    @Input() ngxPermissionsExceptElse: TemplateRef<any>;
                              +    @Input() ngxPermissionsExceptThen: TemplateRef<any>;
                              +
                              +    @Input() ngxPermissionsThen: TemplateRef<any>;
                              +    @Input() ngxPermissionsElse: TemplateRef<any>;
                              +
                              +    @Output() permissionsAuthorized = new EventEmitter();
                              +    @Output() permissionsUnauthorized = new EventEmitter();
                              +
                              +
                              +    constructor(private viewContainer: ViewContainerRef) {}
                              +
                              +
                              +    ngOnInit(): void {
                              +        this.viewContainer.clear();
                              +        if (this.getUnAuthorizedTemplate()) {
                              +            this.viewContainer.createEmbeddedView(this.getUnAuthorizedTemplate());
                              +        }
                              +        this.permissionsUnauthorized.emit();
                              +    }
                              +
                              +
                              +    private getUnAuthorizedTemplate() {
                              +        return this.ngxPermissionsOnlyElse ||
                              +            this.ngxPermissionsExceptElse ||
                              +            this.ngxPermissionsElse;
                              +    }
                              +
                              +}
                              +
                              +
                              +
                              + + + + + + + + +
                              +
                              +

                              results matching ""

                              +
                                +
                                +
                                +

                                No results matching ""

                                +
                                +
                                +
                                +
                                +
                                + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/fonts/FontAwesome.otf b/docs/fonts/FontAwesome.otf new file mode 100644 index 0000000..d4de13e Binary files /dev/null and b/docs/fonts/FontAwesome.otf differ diff --git a/docs/fonts/fontawesome-webfont.eot b/docs/fonts/fontawesome-webfont.eot new file mode 100644 index 0000000..c7b00d2 Binary files /dev/null and b/docs/fonts/fontawesome-webfont.eot differ diff --git a/docs/fonts/fontawesome-webfont.svg b/docs/fonts/fontawesome-webfont.svg new file mode 100644 index 0000000..8b66187 --- /dev/null +++ b/docs/fonts/fontawesome-webfont.svg @@ -0,0 +1,685 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/fonts/fontawesome-webfont.ttf b/docs/fonts/fontawesome-webfont.ttf new file mode 100644 index 0000000..f221e50 Binary files /dev/null and b/docs/fonts/fontawesome-webfont.ttf differ diff --git a/docs/fonts/fontawesome-webfont.woff b/docs/fonts/fontawesome-webfont.woff new file mode 100644 index 0000000..6e7483c Binary files /dev/null and b/docs/fonts/fontawesome-webfont.woff differ diff --git a/docs/fonts/fontawesome-webfont.woff2 b/docs/fonts/fontawesome-webfont.woff2 new file mode 100644 index 0000000..7eb74fd Binary files /dev/null and b/docs/fonts/fontawesome-webfont.woff2 differ diff --git a/docs/fonts/roboto-v15-latin-300.eot b/docs/fonts/roboto-v15-latin-300.eot new file mode 100644 index 0000000..826acfd Binary files /dev/null and b/docs/fonts/roboto-v15-latin-300.eot differ diff --git a/docs/fonts/roboto-v15-latin-300.svg b/docs/fonts/roboto-v15-latin-300.svg new file mode 100644 index 0000000..52b2832 --- /dev/null +++ b/docs/fonts/roboto-v15-latin-300.svg @@ -0,0 +1,314 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/fonts/roboto-v15-latin-300.ttf b/docs/fonts/roboto-v15-latin-300.ttf new file mode 100644 index 0000000..66bc5ab Binary files /dev/null and b/docs/fonts/roboto-v15-latin-300.ttf differ diff --git a/docs/fonts/roboto-v15-latin-300.woff b/docs/fonts/roboto-v15-latin-300.woff new file mode 100644 index 0000000..7e6c479 Binary files /dev/null and b/docs/fonts/roboto-v15-latin-300.woff differ diff --git a/docs/fonts/roboto-v15-latin-300.woff2 b/docs/fonts/roboto-v15-latin-300.woff2 new file mode 100644 index 0000000..c34c128 Binary files /dev/null and b/docs/fonts/roboto-v15-latin-300.woff2 differ diff --git a/docs/fonts/roboto-v15-latin-700.eot b/docs/fonts/roboto-v15-latin-700.eot new file mode 100644 index 0000000..f89cad7 Binary files /dev/null and b/docs/fonts/roboto-v15-latin-700.eot differ diff --git a/docs/fonts/roboto-v15-latin-700.svg b/docs/fonts/roboto-v15-latin-700.svg new file mode 100644 index 0000000..fc8d42f --- /dev/null +++ b/docs/fonts/roboto-v15-latin-700.svg @@ -0,0 +1,310 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/fonts/roboto-v15-latin-700.ttf b/docs/fonts/roboto-v15-latin-700.ttf new file mode 100644 index 0000000..19090af Binary files /dev/null and b/docs/fonts/roboto-v15-latin-700.ttf differ diff --git a/docs/fonts/roboto-v15-latin-700.woff b/docs/fonts/roboto-v15-latin-700.woff new file mode 100644 index 0000000..bf737c1 Binary files /dev/null and b/docs/fonts/roboto-v15-latin-700.woff differ diff --git a/docs/fonts/roboto-v15-latin-700.woff2 b/docs/fonts/roboto-v15-latin-700.woff2 new file mode 100644 index 0000000..11cde5d Binary files /dev/null and b/docs/fonts/roboto-v15-latin-700.woff2 differ diff --git a/docs/fonts/roboto-v15-latin-regular.eot b/docs/fonts/roboto-v15-latin-regular.eot new file mode 100644 index 0000000..d26bc8f Binary files /dev/null and b/docs/fonts/roboto-v15-latin-regular.eot differ diff --git a/docs/fonts/roboto-v15-latin-regular.svg b/docs/fonts/roboto-v15-latin-regular.svg new file mode 100644 index 0000000..ed55c10 --- /dev/null +++ b/docs/fonts/roboto-v15-latin-regular.svg @@ -0,0 +1,308 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/fonts/roboto-v15-latin-regular.ttf b/docs/fonts/roboto-v15-latin-regular.ttf new file mode 100644 index 0000000..7b25f3c Binary files /dev/null and b/docs/fonts/roboto-v15-latin-regular.ttf differ diff --git a/docs/fonts/roboto-v15-latin-regular.woff b/docs/fonts/roboto-v15-latin-regular.woff new file mode 100644 index 0000000..941dfa4 Binary files /dev/null and b/docs/fonts/roboto-v15-latin-regular.woff differ diff --git a/docs/fonts/roboto-v15-latin-regular.woff2 b/docs/fonts/roboto-v15-latin-regular.woff2 new file mode 100644 index 0000000..120796b Binary files /dev/null and b/docs/fonts/roboto-v15-latin-regular.woff2 differ diff --git a/docs/graph/dependencies.svg b/docs/graph/dependencies.svg new file mode 100644 index 0000000..9026ba8 --- /dev/null +++ b/docs/graph/dependencies.svg @@ -0,0 +1,374 @@ + + + + + + +dependencies + +Legend + +  Declarations + +  Module + +  Bootstrap + +  Providers + +  Exports + +cluster_AppModule + + + +cluster_AppModule_imports + + + +cluster_AppModule_bootstrap + + + +cluster_LazyIsolateModule + + + +cluster_LazyIsolateModule_imports + + + +cluster_LazyIsolateRoutingModule + + + +cluster_LazyIsolateRoutingModule_imports + + + +cluster_LazyIsolateRoutingModule_exports + + + +cluster_LazyModule + + + +cluster_LazyModule_imports + + + +cluster_LazyRoleIsolateModule + + + +cluster_LazyRoleIsolateModule_imports + + + +cluster_LazyRolesAsyncIsolateModule + + + +cluster_LazyRolesAsyncIsolateModule_imports + + + +cluster_NgxPermissionsAllowStubModule + + + +cluster_NgxPermissionsAllowStubModule_exports + + + +cluster_NgxPermissionsModule + + + +cluster_NgxPermissionsModule_exports + + + +cluster_NgxPermissionsRestrictStubModule + + + +cluster_NgxPermissionsRestrictStubModule_exports + + + + +BrowserModule + +BrowserModule + + + +AppModule + +AppModule + + + +BrowserModule->AppModule + + + + + +AppRoutingModule + +AppRoutingModule + + + +AppRoutingModule->AppModule + + + + + +NgxPermissionsModule.forRoot() + +NgxPermissionsModule.forRoot() + + + +NgxPermissionsModule.forRoot()->AppModule + + + + + +AppComponent + +AppComponent + + + +AppModule->AppComponent + + + + + +CommonModule + +CommonModule + + + +LazyIsolateModule + +LazyIsolateModule + + + +CommonModule->LazyIsolateModule + + + + + +LazyModule + +LazyModule + + + +CommonModule->LazyModule + + + + + +LazyRoleIsolateModule + +LazyRoleIsolateModule + + + +CommonModule->LazyRoleIsolateModule + + + + + +LazyRolesAsyncIsolateModule + +LazyRolesAsyncIsolateModule + + + +CommonModule->LazyRolesAsyncIsolateModule + + + + + +LazyIsolateRoutingModule + +LazyIsolateRoutingModule + + + +LazyIsolateRoutingModule->LazyIsolateModule + + + + + +RouterModule + +RouterModule + + + +LazyIsolateRoutingModule->RouterModule + + + + + +NgxPermissionsModule.forChild(args) + +NgxPermissionsModule.forChild(args) + + + +NgxPermissionsModule.forChild(args)->LazyIsolateModule + + + + + +NgxPermissionsModule.forChild(args)->LazyRoleIsolateModule + + + + + +NgxPermissionsModule.forChild(args)->LazyRolesAsyncIsolateModule + + + + + +RouterModule.forChild(args) + +RouterModule.forChild(args) + + + +RouterModule.forChild(args)->LazyIsolateRoutingModule + + + + + +LazyRoutingModule + +LazyRoutingModule + + + +LazyRoutingModule->LazyModule + + + + + +NgxPermissionsModule.forChild() + +NgxPermissionsModule.forChild() + + + +NgxPermissionsModule.forChild()->LazyModule + + + + + +LazyIsolateRolesRoutingModule + +LazyIsolateRolesRoutingModule + + + +LazyIsolateRolesRoutingModule->LazyRoleIsolateModule + + + + + +LazyIsolateAsyncRolesRoutingModule + +LazyIsolateAsyncRolesRoutingModule + + + +LazyIsolateAsyncRolesRoutingModule->LazyRolesAsyncIsolateModule + + + + + +NgxPermissionsAllowStubDirective + +NgxPermissionsAllowStubDirective + + + +NgxPermissionsAllowStubModule + +NgxPermissionsAllowStubModule + + + +NgxPermissionsAllowStubModule->NgxPermissionsAllowStubDirective + + + + + +NgxPermissionsDirective + +NgxPermissionsDirective + + + +NgxPermissionsModule + +NgxPermissionsModule + + + +NgxPermissionsModule->NgxPermissionsDirective + + + + + +NgxPermissionsRestrictStubDirective + +NgxPermissionsRestrictStubDirective + + + +NgxPermissionsRestrictStubModule + +NgxPermissionsRestrictStubModule + + + +NgxPermissionsRestrictStubModule->NgxPermissionsRestrictStubDirective + + + + + diff --git a/docs/images/banner b/docs/images/banner new file mode 100644 index 0000000..78d771e --- /dev/null +++ b/docs/images/banner @@ -0,0 +1,12 @@ + +                                                                         +                                                                         +                                                                         +                                                                                  +                                                                            +                                                                            +                                                                            +                                                                                  +                                               +                                               +                                               diff --git a/docs/images/compodoc-vectorise-inverted.svg b/docs/images/compodoc-vectorise-inverted.svg new file mode 100644 index 0000000..d1479a5 --- /dev/null +++ b/docs/images/compodoc-vectorise-inverted.svg @@ -0,0 +1,201 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/compodoc-vectorise.svg b/docs/images/compodoc-vectorise.svg new file mode 100644 index 0000000..5e21f1e --- /dev/null +++ b/docs/images/compodoc-vectorise.svg @@ -0,0 +1,201 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/images/compodoc.png b/docs/images/compodoc.png new file mode 100644 index 0000000..9c85608 Binary files /dev/null and b/docs/images/compodoc.png differ diff --git a/docs/images/compodoc.svg b/docs/images/compodoc.svg new file mode 100644 index 0000000..e841815 --- /dev/null +++ b/docs/images/compodoc.svg @@ -0,0 +1,185 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + compo + doc + + diff --git a/docs/images/coverage-badge.svg b/docs/images/coverage-badge.svg new file mode 100644 index 0000000..ae0815b --- /dev/null +++ b/docs/images/coverage-badge.svg @@ -0,0 +1,9 @@ + + + + + + documentation + 9% + + diff --git a/docs/images/favicon.ico b/docs/images/favicon.ico new file mode 100644 index 0000000..4144ee4 Binary files /dev/null and b/docs/images/favicon.ico differ diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000..164f505 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,1600 @@ + + + + + + ngx-permissions + + + + + + + + + + + + +
                                +
                                + +
                                +
                                +

                                ngx-permissions

                                +

                                Permission and roles based access control for your angular(angular 2,4,5,6+) applications(AOT, lazy modules compatible)

                                +

                                ##

                                +

                                Build Status +codecov +npm version

                                +

                                Documentation and examples

                                +

                                To see better structured documentation go to wiki-page.
                                In one month the detailed functionality description will be available only on wiki page.

                                +

                                Demo

                                +

                                You can test library in Plunker

                                +

                                Table of contents

                                +

                                Some functionality is missing visit wiki-page

                                + +

                                With version 5 minimal rxjs dependency 6.0

                                +

                                With version 4 minimal rxjs dependency 5.5

                                +

                                Version 2 for angular 4/5. Version 1 for angular 2/4

                                +

                                Installation

                                +

                                To install this library, run:

                                +
                                $ npm install ngx-permissions --save

                                Consuming library

                                +

                                You can import library in any Angular application by running:

                                +
                                $ npm install ngx-permissions  --save

                                and then from your Angular AppModule:

                                +
                                import { BrowserModule } from '@angular/platform-browser';
                                +import { NgModule } from '@angular/core';
                                +
                                +import { AppComponent } from './app.component';
                                +
                                +// Import your library
                                +import { NgxPermissionsModule } from 'ngx-permissions';
                                +
                                +@NgModule({
                                +  declarations: [
                                +    AppComponent
                                +  ],
                                +  imports: [
                                +    BrowserModule,
                                +
                                +    // Specify your library as an import
                                +     NgxPermissionsModule.forRoot()
                                +  ],
                                +  providers: [],
                                +  bootstrap: [AppComponent]
                                +})
                                +export class AppModule { }

                                SharedModule

                                +

                                If you use a SharedModule that you import in multiple other feature modules, you can export the NgxPermissionsModule to make sure you don't have to import it in every module.

                                +
                                @NgModule({
                                +    exports: [
                                +        CommonModule,
                                +        NgxPermissionsModule
                                +    ]
                                +})
                                +export class SharedModule { }
                                +

                                Note: Never call a forRoot static method in the SharedModule. You might end up with different instances of the service in your injector tree. But you can use forChild if necessary.

                                +
                                +
                                Lazy loaded modules
                                +

                                When you lazy load a module, you should use the forChild static method to import the NgxPermissionsModule.

                                +

                                Since lazy loaded modules use a different injector from the rest of your application, you can configure them separately. +You can also isolate the service by using permissionsIsolate: true or rolesIsolate: true. In which case the service is a completely isolated instance. +Otherwise, by default, it will share its data with other instances of the service.

                                +
                                @NgModule({
                                +    imports: [
                                +        NgxPermissionsModule.forChild()
                                +    ]
                                +})
                                +export class LazyLoadedModule { }
                                @NgModule({
                                +    imports: [
                                +        NgxPermissionsModule.forChild({
                                +        permissionsIsolate: true, 
                                +        rolesIsolate: true})
                                +    ]
                                +})
                                +export class LazyIsolatedLoadedModule { }

                                Once your library is imported, you can use its components, directives and pipes in your Angular application:

                                +

                                Import service to the main application and load permissions

                                +
                                import { Component, OnInit } from '@angular/core';
                                +import { NgxPermissionsService } from 'ngx-permissions';
                                +import { HttpClient } from '@angular/common/http';
                                +@Component({
                                +  selector: 'app-root',
                                +  templateUrl: './app.component.html',
                                +  styleUrls: ['./app.component.css']
                                +})
                                +export class AppComponent implements OnInit {
                                +
                                +  title = 'app';
                                +
                                +   constructor(private permissionsService: NgxPermissionsService,
                                +               private http: HttpClient) {}
                                +
                                +  ngOnInit(): void {
                                +    const perm = ["ADMIN", "EDITOR"];
                                +
                                +    this.permissionsService.loadPermissions(perm);
                                +
                                +     this.http.get('url').subscribe((permissions) => {
                                +       //const perm = ["ADMIN", "EDITOR"]; example of permissions
                                +       this.permissionsService.loadPermissions(permissions);
                                +    })
                                +  }
                                +}

                                Usage in templates

                                +
                                <div *ngxPermissionsOnly="['ADMIN', 'GUEST']">
                                +    <div>You can see this text congrats</div>
                                +</div>
                                +
                                +<ng-template ngxPermissionsOnly="ADMIN">
                                +  <div>You can see this text congrats</div>
                                + </ng-template>
                                +
                                + <ng-template [ngxPermissionsExcept]="['JOHNY']">
                                +   <div> All will see it except JOHNY</div>
                                + </ng-template>

                                Managing permissions

                                +

                                Overview

                                +
                                  +
                                1. Introduction
                                2. +
                                3. Defining permissions
                                    +
                                  1. Individual permissions
                                  2. +
                                  3. To load permissions before application start up
                                  4. +
                                  5. Multiple permissions
                                  6. +
                                  +
                                4. +
                                5. Removing permissions
                                6. +
                                7. Retrieving permissions
                                8. +
                                +

                                Introduction

                                +

                                Let's start with little explanation what permission is. Permission is the most atomic ability that a user can have +in your application. So you can think about permission as a smallest action that user can do inside your site.

                                +

                                But can user or anonymous be a permission? Technically yes, but from business point of view you should treat them +as Roles that are more complex objects that can store more complex logic.

                                +
                                +

                                :bulb: Note
                                It's a good convention to start permission with a verb and combine them with resource or object, so permissions like readDocuments or listSongs +are meaningful and easy to understand for other programmes. Notice that they are named lowerCamelCase for easy differentiation form roles.

                                +
                                +
                                +

                                :skull: Warning
                                This library is intended for simplify the client side development workflow in a role based web application. DO NOT RELY ONLY ON THIS CHECKS FOR YOU APPLICATION SECURITY! Client side checks can be easily bypassed, so always implement the checks on the backend!

                                +
                                +

                                Defining permissions

                                +

                                So, how do you tell Permission what does 'readDocuments' or 'listSongs' mean and how to know if the current user belongs +to those definitions?

                                +

                                Well, Permission allows you to set different 'permissions' definitions along with the logic that determines if the current +session belongs to them. To do that library exposes special container NgxPermissionsService that allows you to manipulate them freely.

                                +

                                Individual permissions

                                +

                                To add permissions individually NgxPermissionsService exposes method addPermission that generic usage is shown below or add as array:

                                +
                                [...]
                                + ngOnInit() {
                                +    this.permissionsService.addPermission('changeSomething')
                                +    this.permissionsService.addPermission(['changeSomething', 'anotherAlso'])
                                +    this.permissionsService.addPermission('changeSomething', () => {
                                +        return true;
                                +    })
                                +
                                +    this.permissionsService.addPermission('anotherPermissions', (permissionName, permissionsObject) => {
                                +        return !!permissionsObject[permissionName];
                                +    });
                                +    this.permissionsService.addPermission(['anotherPermissions', 'AnotherOne'], (permissionName, permissionsObject) => {
                                +        return !!permissionsObject[permissionName];
                                +    });
                                +
                                +    //Will add validation function to every permission
                                +     this.permissionsService.addPermission(['anotherPermissions', 'AnotherOne'], (permissionName, permissionsObject) => {
                                +         return !!permissionsObject[permissionName];
                                +     });
                                +
                                +     this.permissionsService.addPermission('permissions', (permissionName, permissionsObject) => {
                                +       return this.checkSession().toPromise();
                                +     });
                                + }
                                +

                                To load permissions before application start up

                                +

                                APP_INITIALIZER is defined in angular/core. You include it in your app.module.ts like this.

                                +

                                APP_INITIALIZER is an OpaqueToken that references the ApplicationInitStatus service. ApplicationInitStatus is a multi provider. It supports multiple dependencies and you can use it in your providers list multiple times. It is used like this.

                                +
                                import { APP_INITIALIZER } from '@angular/core';
                                +
                                +@NgModule({
                                +  providers: [
                                +    DictionaryService,
                                +    {
                                +      provide: APP_INITIALIZER,
                                +      useFactory: (ds: DictionaryService, ps: NgxPermissionsService ) => function() {return ds.load().then((data) => {return ps.loadPermissions(data)})},
                                +      deps: [LoadService, NgxPermissionsService],
                                +      multi: true
                                +    }]
                                +})
                                +export class AppModule { }

                                Validation function are injected with any angular services. There are 2 local injectables available that can be used to implement more complex validation logic.

                                + + + + + + + + + + + + + + + + + +
                                Injectable LocalDescription
                                permissionNameString representing name of checked permission
                                permissionsObjectObject of store permissions storing permissions properties
                                +

                                It also have to return one of values to properly represent results:

                                + + + + + + + + + + + + + + + + + + + +
                                Validation resultReturned value
                                Valid[true\Promise.resolve() but it should not resolve false]
                                Invalid[false\Promise.reject() or Promise.resolve(false)]
                                +

                                Multiple permissions

                                +

                                To define multiple permissions method loadPermissions can be used. The only +difference from definePermission is that it accepts Array of permission names instead of single one.

                                +

                                Often meet example of usage is set of permissions (e.g. received from server after user login) that you will iterate over to +check if permission is valid.

                                +
                                const permissions = ['listMeeting', 'seeMeeting', 'editMeeting', 'deleteMeeting']
                                +NgxPermissionsService.loadPermissions(permissions) 
                                +NgxPermissionsService.loadPermissions(permissions, (permissionName, permissionStore) => {
                                +    return !!permissionStore[permissionName];
                                +}) 

                                NOTE: This method will remove older permissions and pass only new;

                                +

                                Removing permissions

                                +

                                You can easily remove all permissions form the NgxPermissionsService (e.g. after user logged out or switched profile) by calling:

                                +
                                NgxPermissionsService.flushPermissions();

                                Alternatively you can use removePermission to delete defined permissions manually:

                                +
                                NgxPermissionsService.removePermission('user');

                                Retrieving permissions

                                +

                                And to get all user permissions use method getPermissions or use Observable permissions$:

                                +
                                var permissions = NgxPermissionsService.getPermissions();
                                +
                                +NgxPermissionsService.permissions$.subscribe((permissions) => {
                                +    console.log(permissions)
                                +})

                                Managing roles

                                +

                                Before start

                                +

                                Make sure you are familiar with:

                                + +

                                Overview

                                +
                                  +
                                1. Introduction
                                2. +
                                3. Defining roles
                                    +
                                  1. Individual roles
                                  2. +
                                  3. Multiple roles
                                  4. +
                                  +
                                4. +
                                5. Removing roles
                                6. +
                                7. Getting all roles
                                8. +
                                +

                                Introduction

                                +

                                By definition a role is a named set of abilities (permissions) by which a specific group of users is identified. +So for example USER or ANONYMOUS would be roles and not permissions. We can represent our USER role as a group of permissions that the role should be able to perform. For example: listArticles, editArticles and other custom server/browser validated privileges.

                                +
                                +

                                :bulb: Note
                                It's a good convention to name roles with UPPER_CASE, so roles like ACCOUNTANT or ADMIN are easier to distinguish from permissions.

                                +
                                +

                                Defining roles

                                +

                                Individual roles

                                +

                                Similarly to permissions we are gonna use here RolesService that exposes addRole allowing to define custom roles used by users in your application.

                                +
                                [...]
                                +
                                +NgxRolesService
                                +  .addRole('ROLE_NAME', ['permissionNameA', 'permissionNameB', 'permissionNameC', ...])
                                +
                                +NgxRolesService.addRole('Guest', () => {
                                +      return this.sessionService.checkSession().toPromise();
                                +  }); 
                                +
                                +NgxRolesService.addRole('Guest', () => {
                                +      return true;
                                +  }); 

                                Validation function are injected with any angular services. There are 2 local injectables available that can be used to implement more complex validation logic.

                                + + + + + + + + + + + + + + + + + +
                                ParameterDescription
                                roleNameString representing name of checked role
                                transitionPropertiesArray or validation function
                                +

                                It also have to return one of values to properly represent results:

                                + + + + + + + + + + + + + + + + + + + +
                                Validation resultReturned value
                                Valid[true\Promise.resolve() but it should not resolve false]
                                Invalid[false\Promise.reject() or Promise.resolve(false)]
                                +
                                +

                                Note: Right now to make request to the backend it only supports promises +Note: If at least one of request fulfils it will show the component

                                +
                                +

                                Usage of addRole is very similar to addPermissions:

                                +
                                NgxRolesService
                                +  NgxPermission
                                +  // Library will internally validate if 'listEvents' and 'editEvents' permissions are valid when checking if role is valid   
                                +  .addRole('ADMIN', ['listEvents', 'editEvents']);  
                                +
                                +NgxRolesService.addRole('Guest', () => {
                                +      return this.sessionService.checkSession().toPromise();
                                +  });  
                                +

                                Multiple roles

                                +

                                Service NgxRolesService allows you define multiple roles with addRoles method. This method accepts Object containing keys as a role names and corresponding validators as values.

                                +
                                NgxRolesService    
                                +  // Or use your own function/service to validate role
                                +  .addRoles({
                                +    'USER': ['canReadInvoices'],
                                +    'ADMIN': ['canReadInvoices','canEditInvoices','canUploadImages'],
                                +    'GUEST': () => {
                                +        return this.sessionService.checkSessions().toPromise();
                                +    }
                                +  });
                                +

                                :bulb: Note

                                +
                                +

                                Removing roles

                                +

                                To remove all roles use flushRoles method:

                                +
                                NgxRolesService.flushRoles();

                                Alternatively you can use removeRole to delete defined role manually:

                                +
                                NgxRolesService.removeRole('USER');

                                Getting all roles

                                +

                                To get specific role use method getRole:

                                +
                                let role = NgxRolesService.getRole('roleName');

                                And to get all roles form NgxRolesService use method getRoles or use Observable roles$:

                                +
                                let roles = NgxRolesService.getRoles();
                                +
                                +NgxRolesService.roles$.subscribe((data) => {
                                +    console.log(data);
                                +})

                                Controlling access in views

                                +

                                Overview

                                +
                                  +
                                1. Permission directive
                                    +
                                  1. Basic usage
                                  2. +
                                  +
                                2. +
                                +

                                Permission directive

                                +

                                Permission module exposes directive ngxPermissionsOnly and ngxPermissionsExcept that can show/hide elements of your application based on set of permissions.

                                +
                                +

                                :fire: Important
                                Else, then syntax is supported.
                                Note if you use then block don't put anything in main block it will be not visible, only then block will be used.

                                +
                                +

                                Permission directive accepts several attributes:

                                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                AttributeValueDescription
                                ngxPermissionsOnly[String | String[]]Single or multiple permissions allowed to access content
                                ngxPermissionsExcept[String | String[]]Single or multiple permissions denied to access content
                                (permissionsAuthorized)EventEmitterEventEmitter emitted when authorized
                                (permissionsUnauthorized)EventEmitterEventEmitter emitted when unAuthorized
                                +

                                Basic usage

                                +

                                Directives accepts either single permission that has to be met in order to display it's content, +You can use both ngxPermissionsOnly and ngxPermissionsExcept at the same time:

                                +
                                <ng-template [ngxPermissionsOnly]="['ADMIN']" (permissionsAuthorized)="yourCustomAuthorizedFunction()" (permissionsUnauthorized)="yourCustomAuthorizedFunction()">
                                +    <div>You can see this text congrats</div>
                                + </ng-template>
                                + <ng-template [ngxPermissionsOnly]="'ADMIN'"  [ngxPermissionsExcept]="'Manager'">
                                +    <div>You can see this text congrats</div>
                                + </ng-template>
                                +  <ng-template ngxPermissionsOnly="ADMIN">
                                +    <div>You can see this text congrats</div>
                                + </ng-template>
                                +
                                + <ng-template [ngxPermissionsExcept]="['JOHNY']">
                                +   <div> All will see it except JOHNY</div>
                                + </ng-template>

                                Or set of permissions separated by 'coma':

                                +
                                <ng-template [ngxPermissionsOnly]="['ADMIN', 'GUEST']">
                                +    <div>You can see this text congrats</div>
                                +</ng-template>
                                +
                                + <ng-template [ngxPermissionsExcept]="['ADMIN', 'JOHNY']">
                                +   <div>All will see it except admin and Johny</div>
                                + </ng-template>
                                +  <ng-template [ngxPermissionsExcept]="['ADMIN', 'JOHNY']" [ngxPermissionsOnly]="['MANAGER']">
                                +    <div>All will see it except admin and Johny</div>
                                +  </ng-template>
                                +
                                +  <ng-template [ngxPermissionsExcept]="['MANAGER']" 
                                +  [ngxPermissionExceptThen]="thenBlock" 
                                +  [ngxPermissionExceptElse]="elseBlock">
                                +    </ng-template>
                                +   <ng-template #elseBlock>
                                +       <div>elseBlock</div>
                                +   </ng-template>
                                +   <ng-template #thenBlock>
                                +       <div>thenBlock</div>
                                +   </ng-template>
                                +
                                +   <ng-template
                                +     [ngxPermissionsOnly]="['MANAGER']" 
                                +     [ngxPermissionsOnlyThen]="thenBlock" 
                                +     [ngxPermissionsOnlyElse]="elseBlock">
                                +       </ng-template>
                                +      <ng-template #elseBlock>
                                +          <div>elseBlock</div>
                                +      </ng-template>
                                +      <ng-template #thenBlock>
                                +          <div>thenBlock</div>
                                +      </ng-template>
                                +
                                +
                                +

                                Or just simply by *

                                +
                                <div *ngxPermissionsOnly="['ADMIN', 'GUEST']">
                                +    <div>You can see this text congrats</div>
                                +</div>
                                +
                                + <div *ngxPermissionsOnly="['THEN_BLOCK']; else elseBlock; then thenBlock">main</div>
                                +     <ng-template #elseBlock>
                                +         <div>elseBlock</div>
                                +     </ng-template>
                                +     <ng-template #thenBlock>
                                +         <div>thenBlock</div>
                                +     </ng-template>
                                +
                                + <div *ngxPermissionsExcept="['THEN_BLOCK']; else elseBlock; then thenBlock"></div>
                                +       <ng-template #elseBlock>
                                +           <div>elseBlock</div>
                                +       </ng-template>
                                +       <ng-template #thenBlock>
                                +           <div>thenBlock</div>
                                +       </ng-template>
                                +
                                +

                                Note: You cant use * style with other style directives like `ngIf. You should wrap them. And YES i don't like it either. + ``html +

                                +
                                + You can see this text congrats +
                                +

                                +
                                +
                                   >  :fire: **Important**   
                                +   >  Using with except and only `together` should use `ngxPermissionsElse` or `ngxPermissionsThen`
                                +   ```html
                                +       <ng-template [ngxPermissionsExcept]="'FAIL_BLOCK'" 
                                +       [ngxPermissionsOnly]="'ONLY_BLOCK'"
                                +       [ngxPermissionsElse]="elseBlock"
                                +       [ngxPermissionsThen]="thenBlock">
                                +
                                +       </ng-template>
                                +       <ng-template #elseBlock>
                                +           <div>elseBlock</div>
                                +       </ng-template>
                                +       <ng-template #thenBlock>
                                +           <div>thenBlock</div>
                                +       </ng-template>

                                Usage with Routes

                                +
                                  +
                                1. Introduction
                                2. +
                                3. Property only and except
                                    +
                                  1. Single permission/role
                                  2. +
                                  3. Multiple permissions/roles
                                  4. +
                                  5. Dynamic access
                                  6. +
                                  +
                                4. +
                                5. Property redirectTo
                                    +
                                  1. Single rule redirection
                                  2. +
                                  3. Multiple rule redirection
                                  4. +
                                  5. Dynamic redirection rules
                                  6. +
                                  +
                                6. +
                                7. Implemented Guards
                                    +
                                  1. Can Activate Guard
                                  2. +
                                  3. Can Load Guard
                                  4. +
                                  5. Can Activate Child Guard
                                  6. +
                                  +
                                8. +
                                9. Common use cases
                                    +
                                  1. Two guards when first make request for authorisation and gets permissions second checks for permissions
                                  2. +
                                  +
                                10. +
                                +

                                Introduction

                                +

                                Now you are ready to start working with controlling access to the states of your application. In order to restrict any state ngx-permission rely on angular-route's data property, reserving key permissions allowing to define authorization configuration.

                                +

                                Permissions object accepts following properties:

                                + + + + + + + + + + + + + + + + + + + + + + + + + +
                                PropertyAccepted value
                                only[String\Array\Function]
                                except[String\Array\Function]
                                redirectTo[String]
                                +

                                Property only and except

                                +

                                Property only:

                                +
                                  +
                                • is used to explicitly define permission or role that are allowed to access the state
                                • +
                                • when used as String contains single permission or role
                                • +
                                • when used as Array contains set of permissions and/or roles
                                • +
                                +

                                Property except:

                                +
                                  +
                                • is used to explicitly define permission or role that are denied to access the state
                                • +
                                • when used as String contains single permission or role
                                • +
                                • when used as Array contains set of permissions and/or roles
                                • +
                                +
                                +

                                :fire: Important
                                If you combine both only and except properties you have to make sure they are not excluding each other, because denied roles/permissions would not allow access the state for users even if allowed ones would pass them.

                                +
                                +

                                Single permission/role

                                +

                                In simplest cases you allow users having single role permission to access the state. To achieve that you can pass as String desired role/permission to only/except property: +You can use except and only at the same time;

                                +
                                import { RouterModule, Routes } from '@angular/router';
                                +import { NgModule } from '@angular/core';
                                +import { HomeComponent } from './home/home.component';
                                +import { NgxPermissionsGuard } from 'ngx-permissions';
                                +
                                +const appRoutes: Routes = [
                                +  { path: 'home',
                                +    component: HomeComponent,
                                +    canActivate: [NgxPermissionsGuard],
                                +    data: {
                                +      permissions: {
                                +        only: 'ADMIN'
                                +      }
                                +    }
                                +  },
                                +];
                                +@NgModule({
                                +  imports: [
                                +    RouterModule.forRoot(appRoutes)
                                +  ],
                                +  exports: [
                                +    RouterModule
                                +  ]
                                +})
                                +export class AppRoutingModule {}
                                +

                                In given case when user is trying to access home state NgxPermissionsGuard service is called checking if isAuthorized permission is valid:

                                +
                                  +
                                • if permission definition is not found it stops transition
                                • +
                                +

                                Multiple permissions/roles

                                +

                                Often several permissions/roles are sufficient to allow/deny user to access the state. Then array value comes in handy:

                                +
                                import { RouterModule, Routes } from '@angular/router';
                                +import { NgModule } from '@angular/core';
                                +import { HomeComponent } from './home/home.component';
                                +import { NgxPermissionsGuard } from 'ngx-permissions';
                                +
                                +const appRoutes: Routes = [
                                +  { path: 'home',
                                +    component: HomeComponent,
                                +    canActivate: [NgxPermissionsGuard],
                                +    data: {
                                +      permissions: {
                                +        only: ['ADMIN', 'MODERATOR'],
                                +        except: ['GUEST']
                                +      }
                                +    }
                                +  },
                                +];
                                +@NgModule({
                                +  imports: [
                                +    RouterModule.forRoot(appRoutes)
                                +  ],
                                +  exports: [
                                +    RouterModule
                                +  ]
                                +})
                                +export class AppRoutingModule {}

                                When NgxPermissionsGuard service will be called it would expect user to have either ADMIN or MODERATOR permissions to pass him to home route.

                                +

                                Dynamic access

                                +

                                You can find states that would require to verify access dynamically - often depending on parameters.

                                +

                                Let's imagine situation where user want to modify the invoice. We need to check every time if he is allowed to do that on state level. We are gonna use ActivatedRouteSnapshot and RouterStateSnapshot object to check weather he is able to do that.

                                +
                                +

                                To make AOT compatible you should export function. +Below is presented code AOT Compatible

                                +
                                +

                                AOT compatible

                                +
                                export function testPermissions(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
                                +  if (route.params['id'] === 42) {
                                +    return ['MANAGER', "UTILS"]
                                +  } else {
                                +    return 'ADMIN'
                                +  }
                                +}
                                +const appRoutes: Routes = [
                                +  { path: 'dynamic/:id',
                                +      component: HomeComponent,
                                +      canActivate: [NgxPermissionsGuard],
                                +      data: {
                                +        permissions: {
                                +          only: testPermissions
                                +        }
                                +      }
                                +    }
                                +];
                                +

                                :skull: Warning
                                Below is presented code not AOT compatible

                                +
                                +
                                const appRoutes: Routes = [
                                +  { path: 'dynamic/:id',
                                +      component: HomeComponent,
                                +      canActivate: [NgxPermissionsGuard],
                                +      data: {
                                +        permissions: {
                                +          only: (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => {
                                +              if (route.params['id'] === 42) {
                                +                  return ['MANAGER', "UTILS"]
                                +                } else {
                                +                  return 'ADMIN'
                                +                }
                                +          }
                                +        }
                                +      }
                                +    }
                                +];

                                So whenever we try access state with param id = 42 set to true additional check for permission manager and utils will be made. Otherwise only ADMIN will be required.

                                +
                                +

                                :fire: Important
                                Notice that function require to always return array or string of roles/permissions in order to work properly.

                                +
                                +

                                Property redirectTo

                                +

                                Property redirectTo:

                                +
                                  +
                                • when used as String defines single redirection rule
                                • +
                                • when used as Objects defines single/multiple redirection rules
                                • +
                                • when used as Function defines dynamic redirection rule(s)
                                • +
                                +

                                Single redirection rule

                                +

                                In case you want to redirect to some specific state when user is not authorized pass to redirectTo path of that route.

                                +
                                import { RouterModule, Routes } from '@angular/router';
                                +import { NgModule } from '@angular/core';
                                +import { HomeComponent } from './home/home.component';
                                +import { NgxPermissionsGuard } from 'ngx-permissions';
                                +
                                +const appRoutes: Routes = [
                                +  { path: 'home',
                                +    component: HomeComponent,
                                +    canActivate: [NgxPermissionsGuard],
                                +    data: {
                                +      permissions: {
                                +        only: ['ADMIN', 'MODERATOR'],
                                +        redirectTo: '/another-route'
                                +      }
                                +    }
                                +  },
                                +];
                                +@NgModule({
                                +  imports: [
                                +    RouterModule.forRoot(appRoutes)
                                +  ],
                                +  exports: [
                                +    RouterModule
                                +  ]
                                +})
                                +export class AppRoutingModule {}

                                In order to pass additional properties like params use pass redirectTo as object. +navigationCommands and navigationExtras are reserved words it corresponds to parameters passed to router.navigate function +navigate(commands: any[], extras: NavigationExtras): Promise<boolean>

                                +
                                
                                +const appRoutes: Routes = [
                                +  { path: 'home',
                                +    component: HomeComponent,
                                +    canActivate: [NgxPermissionsGuard],
                                +    data: {
                                +      permissions: {
                                +        only: ['ADMIN', 'MODERATOR'],
                                +        redirectTo: {
                                +            navigationCommands: ['123'],
                                +            navigationExtras: {
                                +                skipLocationChange: true
                                +            }
                                +        }               
                                +    }
                                +  },
                                +];
                                +@NgModule({
                                +  imports: [
                                +    RouterModule.forRoot(appRoutes)
                                +  ],
                                +  exports: [
                                +    RouterModule
                                +  ]
                                +})
                                +`

                                Multiple redirection rules

                                +

                                In some situation you want to redirect user based on denied permission/role to create redirection strategies. In order to do that you have to create redirection Object that contain keys representing rejected permissions or roles and values implementing redirection rules.

                                +

                                Redirection rules are represented by following values:

                                + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                Value typeReturnUsage
                                String[String]Simple state transitions
                                Object[Object]Redirection with custom parameters or options
                                Function[String\Object]Dynamic properties-based redirection
                                +
                                +

                                :bulb: Note
                                Use default property that will handle fallback redirect for not defined permissions.

                                +
                                +

                                The simplest example of multiple redirection rules are redirection based on pairs role/permission and state. When user is not granted to access the state will be redirected to agendaList if missing canReadAgenda permission or to dashboard when missing canEditAgenda. Property default is reserved for cases when you want handle specific cases leaving default redirection.

                                +
                                  const appRoutes: Routes = [
                                +    { path: 'home',
                                +      component: HomeComponent,
                                +      canActivate: [NgxPermissionsGuard],
                                +      data: {
                                +       permissions: {
                                +               only: ['canReadAgenda','canEditAgenda'],
                                +               redirectTo: {
                                +                 canReadAgenda: 'agendaList',
                                +                 canEditAgenda: 'dashboard',
                                +                 default: 'login'
                                +               }
                                +        }
                                +      }
                                +    },
                                +  ];
                                +  @NgModule({
                                +    imports: [
                                +      RouterModule.forRoot(appRoutes)
                                +    ],
                                +    exports: [
                                +      RouterModule
                                +    ]
                                +  })

                                If you need more control over redirection parameters Object as a value can be used to customise target url navigationCommands and transition navigationExtras.

                                +
                                +

                                :bulb: Note navigationCommands and navigationExtras are reserved words it corresponds to parameters passed to router.navigate function +navigate(commands: any[], extras: NavigationExtras): Promise<boolean>

                                +
                                +
                                
                                +  const appRoutes: Routes = [
                                +    { path: 'home',
                                +      component: HomeComponent,
                                +      canActivate: [NgxPermissionsGuard],
                                +      data: {
                                +         permissions: {
                                +               only: ['canEditAgenda'],
                                +               redirectTo: 
                                +                 canEditAgenda: {
                                +                   navigationCommands: 'dashboard',
                                +                   navigationExtras: {
                                +                       skipLocationChange: true
                                +                   }
                                +
                                +                 },
                                +                 default: 'login'
                                +             }
                                +          }
                                +      }
                                +    },
                                +  ];
                                +  @NgModule({
                                +    imports: [
                                +      RouterModule.forRoot(appRoutes)
                                +    ],
                                +    exports: [
                                +      RouterModule
                                +    ]
                                +  })  

                                To present usage redirectTo as Object with values as Function in a state definition agenda presented below redirection rules are interpreted as:

                                +
                                  +
                                • when user does not have canReadAgenda invoked function returns string representing the state name to which unauthorized user will be redirected
                                • +
                                • when user does not have canEditAgenda invoked function returns object with custom options and params that will be passed along to transited dashboard url
                                • +
                                +
                                
                                + const appRoutes: Routes = [
                                +    { path: 'home',
                                +      component: HomeComponent,
                                +      canActivate: [NgxPermissionsGuard],
                                +      data: {
                                +       permissions: {
                                +              only: ['canReadAgenda','canEditAgenda'],
                                +              redirectTo: {
                                +                canReadAgenda: (rejectedPermissionName: string, activateRouteSnapshot: ActivatedRouteSnapshot, routeStateSnapshot: RouterStateSnapshot) => {
                                +                  return 'dashboard';
                                +                },
                                +                canEditAgenda: (rejectedPermissionName: string, activateRouteSnapshot: ActivatedRouteSnapshot, routeStateSnapshot: RouterStateSnapshot) => {
                                +                  return {
                                +                      navigationCommands: ['/dashboard'],
                                +                      navigationExtras: {
                                +                          skipLocationChange: true
                                +                      }
                                +                  }
                                +                },
                                +                default: 'login'
                                +            }
                                +        }
                                +      }
                                +    },
                                +  ];
                                +  @NgModule({
                                +    imports: [
                                +      RouterModule.forRoot(appRoutes)
                                +    ],
                                +    exports: [
                                +      RouterModule
                                +    ]
                                +  })
                                +

                                :fire: Important
                                Above code is not AOT compatible to make it AOT compatible extract it to function +navigationCommands and navigationExtras reserved words. Matching parameter to router.navigate function

                                +
                                +
                                export function canReadAgenda(rejectedPermissionName: string, activateRouteSnapshot: ActivatedRouteSnapshot, routeStateSnapshot: RouterStateSnapshot) => {                                                 
                                +    return 'dashboard';
                                +},
                                +
                                +redirectTo: {
                                +    canReadAgenda: canReadAgenda
                                +
                                +}

                                Dynamic redirection rules

                                +

                                Similarly to examples showing defining dynamic access to state redirection can also be defined based on any parameters of ActivatedRouteSnapshot and RouterStateSnapshot;

                                +
                                +

                                :bulb: Note
                                Remember to always return from function state name or object.

                                +
                                +
                                const appRoutes: Routes = [
                                +    { path: 'home/:isEditable',
                                +      component: HomeComponent,
                                +      canActivate: [NgxPermissionsGuard],
                                +      data: {
                                +      permissions: {
                                +             only: ['canReadAgenda','canEditAgenda'],
                                +             redirectTo: (rejectedPermissionName: string, activateRouteSnapshot: ActivatedRouteSnapshot, routerStateSnapshot: RouterStateSnapshot) => {
                                +               if(activateRouteSnapshot.params['id'] === 42){
                                +                 return 'login';
                                +               } else {
                                +                 return 'dashboard'
                                +               }
                                +             }
                                +      }
                                +    },
                                +  ];
                                +  @NgModule({
                                +    imports: [
                                +      RouterModule.forRoot(appRoutes)
                                +    ],
                                +    exports: [
                                +      RouterModule
                                +    ]
                                +  })
                                +

                                :fire: Important
                                Above code is not AOT compatible to make it AOT compatible extract it to function

                                +
                                +
                                export function redirectToFunc(rejectedPermissionName: string, activateRouteSnapshot: ActivatedRouteSnapshot, routerStateSnapshot: RouterStateSnapshot) => {
                                +     if(activateRouteSnapshot.params['id'] === 42){
                                +       return 'login';
                                +     } else {
                                +       return 'dashboard'
                                +     }
                                +   }
                                +
                                +redirectTo: redirectToFunc

                                +

                                Implemented Guards

                                +

                                Can Activate Guard

                                +

                                NgxPermissionsGuard implements CanActivate interface for examples you can see above

                                +

                                Can Load Guard

                                +

                                NgxPermissionsGuard implements CanLoad Interface. Functionality is the same as with canActivate

                                +
                                const appRoutes: Routes = [
                                +
                                +  {
                                +    path: 'lazy',
                                +    data: {
                                +      permissions: {
                                +        except: 'ADDDMIN',
                                +      }
                                +    },
                                +    canLoad: [NgxPermissionsGuard],
                                +    loadChildren: 'app/lazy-module/lazy-module.module#LazyModule'
                                +  },
                                +
                                +
                                +];
                                +@NgModule({
                                +  imports: [
                                +    RouterModule.forRoot(appRoutes)
                                +  ],
                                +  exports: [
                                +    RouterModule
                                +  ],
                                +  providers: [
                                +    // CanDeactivateGuard
                                +  ]
                                +})
                                +export class AppRoutingModule {}
                                +
                                +
                                +
                                +

                                :fire: Warning

                                +
                                  +
                                • The only difference if you use as a function the parameter is only 1 and its type of Route
                                • +
                                +
                                +
                                
                                +{
                                +    path: 'lazy',
                                +    data: {
                                +      permissions: {
                                +         only: (route: Route) => {
                                +                  //logic here
                                +                   return ['MANAGER', "UTILS"]
                                +                  }
                                +      }
                                +    },
                                +    canLoad: [NgxPermissionsGuard],
                                +    loadChildren: 'app/lazy-module/lazy-module.module#LazyModule'
                                +  },

                                Can Activate Child Guard

                                +

                                NgxPermissionsGuard implements CanLoad Interface. Functionality is the same as with canActivate

                                +
                                +

                                :fire: Warning

                                +
                                  +
                                • Need to remember that rules and data you should specify on Child Components not on parent component
                                • +
                                +
                                +
                                const appRoutes: Routes = [
                                +  { path: '',
                                +    component: IsolateComponent,
                                +    canActivateChild: [NgxPermissionsGuard],
                                +    children: [
                                +      {
                                +        path: 'except-should',
                                +        component: AnotherComponent,
                                +        data: {
                                +          permissions: {
                                +            except: 'ADMIN'
                                +          }
                                +        }
                                +      },
                                +      {
                                +        path: 'only-should',
                                +        component: ComeComponent,
                                +        data: {
                                +          permissions: {
                                +            only: 'GUEST'
                                +          }
                                +        }
                                +      },
                                +    ]
                                +  },
                                +];

                                +

                                Common use cases

                                +

                                Two guards when first make request for authorisation and gets permissions second checks for permissions

                                +

                                This method only works with angular 4.3.2 or higher see https://github.com/angular/angular/issues/15670

                                +

                                There are a lot of times you have 2 guard one for authorisation when it makes request for permissions and second is permissions guard +and you want them to work in chain. To make them work in chain You should use them next

                                +
                                
                                +let routes = [
                                +  { path: '', 
                                +    canActivate: [AuthGuard],
                                +    children: [
                                +      {path: 'component', 
                                +      component: ComponentName, 
                                +      canActivate: [NgxPermissionsGuard],
                                +      data: {
                                +         permissions: {
                                +           only: ['ADMIN', 'MODERATOR'],
                                +           redirectTo: 'another-route'
                                +         }
                                +       }}
                                +    ]
                                +  }
                                +]
                                +

                                Note: Make sure the permission request in chained in auth guard + `js + canActivate() { + return authLogin().then((obj) => { + // or load here if you dont need second request + // this.permissions.service.loadPermissions(obj.permissions)

                                +
                                +
                                        return this.authPermissions.getPermissions('url');
                                +    }).then((permissions) => {
                                +        this.permissions.service.loadPermissions(permissions)
                                +    )
                                +}

                                `

                                +

                                | --- |

                                +

                                Development

                                +

                                This project was generated with Angular CLI version 6.0.0.

                                +

                                Demo App

                                +

                                Run ng serve for a dev server. Navigate to http://localhost:4200/. The app will automatically reload if you change any of the source files.

                                +

                                Build

                                +

                                Run ng build to build the project. The build artifacts will be stored in the dist/ directory. Use the --prod flag for a production build.

                                +

                                Running unit tests

                                +

                                Run ng test to execute the unit tests via Karma.

                                +

                                Running end-to-end tests

                                +

                                Run ng e2e to execute the end-to-end tests via Protractor.

                                +

                                Thank You

                                +

                                Thank You for using the library and support. HAVE A GREAT DAY!

                                +

                                For google

                                +

                                angular 2 permissions, angular 4 permissions, angular permissions, angular 5 permissions ng2 permissions ng permissions +ng-permissions ng2-permissions angular2 permissions angular4 permissions angular 5 permissions

                                +

                                License

                                +

                                MIT © Oleksandr Khymenko

                                + + + + + + + + + + + + +
                                +
                                +

                                results matching ""

                                +
                                  +
                                  +
                                  +

                                  No results matching ""

                                  +
                                  +
                                  +
                                  +
                                  +
                                  + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/injectables/AsyncTestService.html b/docs/injectables/AsyncTestService.html new file mode 100644 index 0000000..bcfbcb4 --- /dev/null +++ b/docs/injectables/AsyncTestService.html @@ -0,0 +1,712 @@ + + + + + + ngx-permissions + + + + + + + + + + + + +
                                  +
                                  + +
                                  +
                                  + + + + + + + + +
                                  +
                                  +

                                  +

                                  File

                                  +

                                  +

                                  + src/app/lazy-roles-async-isolate/async-test.service.ts +

                                  + + +
                                  +

                                  Constructor

                                  + + + + + + + + + + +
                                  + constructor() +
                                  + +
                                  +
                                  + +
                                  + +

                                  + Methods +

                                  + + + + + + + + + + + + + + + + + + +
                                  + Public promiseResolveTrue +
                                  + + promiseResolveTrue() +
                                  + +
                                  + +
                                  + Returns : void + +
                                  +
                                  + + + + + + + + + + + + + + + + + + +
                                  + Public promiseResolveFalse +
                                  + + promiseResolveFalse() +
                                  + +
                                  + +
                                  + Returns : void + +
                                  +
                                  + + + + + + + + + + + + + + + + + + +
                                  + Public promiseReject +
                                  + + promiseReject() +
                                  + +
                                  + +
                                  + Returns : void + +
                                  +
                                  +
                                  + +
                                  +
                                  +
                                  import { Injectable } from '@angular/core';
                                  +
                                  +@Injectable()
                                  +export class AsyncTestService {
                                  +
                                  +  constructor() { }
                                  +
                                  +
                                  +  public promiseResolveTrue() {
                                  +    return Promise.resolve(true);
                                  +  }
                                  +
                                  +  public promiseResolveFalse() {
                                  +    return Promise.resolve(false);
                                  +  }
                                  +
                                  +  public promiseReject() {
                                  +    return <any>Promise.reject(() => {
                                  +
                                  +    });
                                  +  }
                                  +}
                                  +
                                  +
                                  +
                                  + + + + + + + +
                                  +
                                  +

                                  results matching ""

                                  +
                                    +
                                    +
                                    +

                                    No results matching ""

                                    +
                                    +
                                    +
                                    +
                                    +
                                    + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/injectables/NgxPermissionsConfigurationService.html b/docs/injectables/NgxPermissionsConfigurationService.html new file mode 100644 index 0000000..0182276 --- /dev/null +++ b/docs/injectables/NgxPermissionsConfigurationService.html @@ -0,0 +1,938 @@ + + + + + + ngx-permissions + + + + + + + + + + + + +
                                    +
                                    + +
                                    +
                                    + + + + + + + + +
                                    +
                                    +

                                    +

                                    File

                                    +

                                    +

                                    + projects/ngx-permissions/src/lib/service/configuration.service.ts +

                                    + + +
                                    +

                                    Constructor

                                    + + + + + + + + + + +
                                    + constructor(isolate: boolean, configurationStore: any) +
                                    + +
                                    +
                                    + +
                                    + +

                                    + Methods +

                                    + + + + + + + + + + + + + + + + + + +
                                    + Public setDefaultOnAuthorizedStrategy +
                                    + + setDefaultOnAuthorizedStrategy(name: string) +
                                    + +
                                    + +
                                    + Returns : void + +
                                    +
                                    + + + + + + + + + + + + + + + + + + +
                                    + Public setDefaultOnUnauthorizedStrategy +
                                    + + setDefaultOnUnauthorizedStrategy(name: string) +
                                    + +
                                    + +
                                    + Returns : void + +
                                    +
                                    + + + + + + + + + + + + + + + + + + +
                                    + Public addPermissionStrategy +
                                    + + addPermissionStrategy(key: string, func: StrategyFunction) +
                                    + +
                                    + +
                                    + Returns : void + +
                                    +
                                    + + + + + + + + + + + + + + + + + + +
                                    + Public getStrategy +
                                    + + getStrategy(key: string) +
                                    + +
                                    + +
                                    + Returns : void + +
                                    +
                                    + + + + + + + + + + + + + + + + + + +
                                    + Public getAllStrategies +
                                    + + getAllStrategies() +
                                    + +
                                    + +
                                    + Returns : void + +
                                    +
                                    + + + + + + + + + + + + + + + + + + +
                                    + Private predefinedStrategy +
                                    + + predefinedStrategy(strategy: string) +
                                    + +
                                    + +
                                    + Returns : boolean + +
                                    +
                                    +
                                    + +
                                    + +

                                    + Properties +

                                    + + + + + + + + + + + + +
                                    + Public onAuthorisedDefaultStrategy +
                                    + onAuthorisedDefaultStrategy: string + +
                                    + +
                                    + + + + + + + + + + + + +
                                    + Public onUnAuthorisedDefaultStrategy +
                                    + onUnAuthorisedDefaultStrategy: string + +
                                    + +
                                    + + + + + + + + + + + + +
                                    + Public strategies$ +
                                    + strategies$: any + +
                                    + +
                                    + + + + + + + + + + + + +
                                    + Private strategiesSource +
                                    + strategiesSource: any + +
                                    + +
                                    +
                                    +
                                    +
                                    +
                                    import { Inject, Injectable, InjectionToken, TemplateRef } from '@angular/core';
                                    +import { BehaviorSubject, Observable } from 'rxjs';
                                    +import { NgxPermissionsPredefinedStrategies } from '../enums/predefined-strategies.enum';
                                    +import { NgxPermissionsConfigurationStore } from '../store/configuration.store';
                                    +
                                    +export type StrategyFunction = (templateRef?: TemplateRef<any>) => void;
                                    +
                                    +export type Strategy = {
                                    +    [ key: string ]: StrategyFunction
                                    +};
                                    +
                                    +export const USE_CONFIGURATION_STORE = new InjectionToken('USE_CONFIGURATION_STORE');
                                    +
                                    +@Injectable()
                                    +export class NgxPermissionsConfigurationService {
                                    +
                                    +    private strategiesSource: BehaviorSubject<Strategy>;
                                    +    public strategies$: Observable<Strategy>;
                                    +    public onAuthorisedDefaultStrategy: string | undefined;
                                    +    public onUnAuthorisedDefaultStrategy: string | undefined;
                                    +
                                    +    constructor(
                                    +        @Inject(USE_CONFIGURATION_STORE) private isolate: boolean = false,
                                    +        private configurationStore: NgxPermissionsConfigurationStore
                                    +    ) {
                                    +        this.strategiesSource = this.isolate ? new BehaviorSubject<Strategy>({}) : this.configurationStore.strategiesSource;
                                    +        this.strategies$ = this.strategiesSource.asObservable();
                                    +
                                    +        this.onAuthorisedDefaultStrategy = this.isolate ? undefined : this.configurationStore.onAuthorisedDefaultStrategy;
                                    +        this.onUnAuthorisedDefaultStrategy = this.isolate ? undefined : this.configurationStore.onUnAuthorisedDefaultStrategy;
                                    +
                                    +    }
                                    +
                                    +    public setDefaultOnAuthorizedStrategy(name: string | 'remove' | 'show') {
                                    +        if (this.strategiesSource.value[ name ] || this.predefinedStrategy(name)) {
                                    +            this.onAuthorisedDefaultStrategy = name;
                                    +        } else {
                                    +            throw new Error(`No ${name} strategy is found please define one`);
                                    +        }
                                    +    }
                                    +
                                    +    public setDefaultOnUnauthorizedStrategy(name: string | 'remove' | 'show') {
                                    +        if (this.strategiesSource.value[ name ] || this.predefinedStrategy(name)) {
                                    +            this.onUnAuthorisedDefaultStrategy = name;
                                    +        } else {
                                    +            throw new Error(`No ' ${name} ' strategy is found please define one`);
                                    +        }
                                    +    }
                                    +
                                    +    public addPermissionStrategy(key: string, func: StrategyFunction): void {
                                    +        this.strategiesSource.value[ key ] = func;
                                    +    }
                                    +
                                    +    public getStrategy(key: string) {
                                    +        return this.strategiesSource.value[ key ];
                                    +    }
                                    +
                                    +    public getAllStrategies() {
                                    +        return this.strategiesSource.value;
                                    +    }
                                    +
                                    +    private predefinedStrategy(strategy: string): boolean {
                                    +        return strategy === NgxPermissionsPredefinedStrategies.SHOW || strategy === NgxPermissionsPredefinedStrategies.REMOVE;
                                    +    }
                                    +
                                    +}
                                    +
                                    +
                                    +
                                    + + + + + + + +
                                    +
                                    +

                                    results matching ""

                                    +
                                      +
                                      +
                                      +

                                      No results matching ""

                                      +
                                      +
                                      +
                                      +
                                      +
                                      + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/injectables/NgxPermissionsConfigurationStore.html b/docs/injectables/NgxPermissionsConfigurationStore.html new file mode 100644 index 0000000..6e3d7b2 --- /dev/null +++ b/docs/injectables/NgxPermissionsConfigurationStore.html @@ -0,0 +1,691 @@ + + + + + + ngx-permissions + + + + + + + + + + + + +
                                      +
                                      + +
                                      +
                                      + + + + + + + + +
                                      +
                                      +

                                      +

                                      File

                                      +

                                      +

                                      + projects/ngx-permissions/src/lib/store/configuration.store.ts +

                                      + + +
                                      +

                                      Constructor

                                      + + + + + + + + + + +
                                      + constructor() +
                                      + +
                                      +
                                      + + +
                                      + +

                                      + Properties +

                                      + + + + + + + + + + + + +
                                      + Public onAuthorisedDefaultStrategy +
                                      + onAuthorisedDefaultStrategy: string + +
                                      + +
                                      + + + + + + + + + + + + +
                                      + Public onUnAuthorisedDefaultStrategy +
                                      + onUnAuthorisedDefaultStrategy: string + +
                                      + +
                                      + + + + + + + + + + + + +
                                      + Public strategies$ +
                                      + strategies$: any + +
                                      + +
                                      + + + + + + + + + + + + +
                                      + Public strategiesSource +
                                      + strategiesSource: any + +
                                      + +
                                      +
                                      +
                                      +
                                      +
                                      import { Injectable } from '@angular/core';
                                      +import { BehaviorSubject, Observable } from 'rxjs';
                                      +import { Strategy } from '../service/configuration.service';
                                      +
                                      +@Injectable()
                                      +export class NgxPermissionsConfigurationStore {
                                      +
                                      +    public strategiesSource: BehaviorSubject<Strategy> = new BehaviorSubject<Strategy>({});
                                      +    public strategies$: Observable<Strategy> = this.strategiesSource.asObservable();
                                      +
                                      +    public onAuthorisedDefaultStrategy: string | undefined;
                                      +    public onUnAuthorisedDefaultStrategy: string | undefined;
                                      +
                                      +    constructor() {
                                      +    }
                                      +
                                      +}
                                      +
                                      +
                                      +
                                      + + + + + + + +
                                      +
                                      +

                                      results matching ""

                                      +
                                        +
                                        +
                                        +

                                        No results matching ""

                                        +
                                        +
                                        +
                                        +
                                        +
                                        + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/injectables/NgxPermissionsGuard.html b/docs/injectables/NgxPermissionsGuard.html new file mode 100644 index 0000000..6ed9541 --- /dev/null +++ b/docs/injectables/NgxPermissionsGuard.html @@ -0,0 +1,1396 @@ + + + + + + ngx-permissions + + + + + + + + + + + + +
                                        +
                                        + +
                                        +
                                        + + + + + + + + +
                                        +
                                        +

                                        +

                                        File

                                        +

                                        +

                                        + projects/ngx-permissions/src/lib/router/permissions-guard.service.ts +

                                        + + +
                                        +

                                        Constructor

                                        + + + + + + + + + + +
                                        + constructor(permissionsService: any, rolesService: any, router: any) +
                                        + +
                                        +
                                        + +
                                        + +

                                        + Methods +

                                        + + + + + + + + + + + + + + + + + + +
                                        + canActivate +
                                        + canActivate(route: any, state: any) +
                                        + +
                                        + +
                                        + Returns : any + +
                                        +
                                        + + + + + + + + + + + + + + + + + + +
                                        + canActivateChild +
                                        + canActivateChild(childRoute: any, state: any) +
                                        + +
                                        + +
                                        + Returns : any + +
                                        +
                                        + + + + + + + + + + + + + + + + + + +
                                        + canLoad +
                                        + canLoad(route: any) +
                                        + +
                                        + +
                                        + Returns : any + +
                                        +
                                        + + + + + + + + + + + + + + + + + + +
                                        + Private hasPermissions +
                                        + + hasPermissions(route: any, state: any) +
                                        + +
                                        + +
                                        + Returns : void + +
                                        +
                                        + + + + + + + + + + + + + + + + + + +
                                        + Private transformPermission +
                                        + + transformPermission(purePermissions: any, route: any, state: any) +
                                        + +
                                        + +
                                        + Returns : any + +
                                        +
                                        + + + + + + + + + + + + + + + + + + +
                                        + Private isParameterAvailable +
                                        + + isParameterAvailable(permission: any) +
                                        + +
                                        + +
                                        + Returns : void + +
                                        +
                                        + + + + + + + + + + + + + + + + + + +
                                        + Private passingExceptPermissionsValidation +
                                        + + passingExceptPermissionsValidation(permissions: any, route: any, state: any) +
                                        + +
                                        + +
                                        + Returns : void + +
                                        +
                                        + + + + + + + + + + + + + + + + + + +
                                        + Private redirectToAnotherRoute +
                                        + + redirectToAnotherRoute(redirectTo: any, route: any, state: any, failedPermissionName: string) +
                                        + +
                                        + +
                                        + Returns : void + +
                                        +
                                        + + + + + + + + + + + + + + + + + + +
                                        + Private isRedirectionWithParameters +
                                        + + isRedirectionWithParameters(object: any) +
                                        + +
                                        + +
                                        + Returns : boolean + +
                                        +
                                        + + + + + + + + + + + + + + + + + + +
                                        + Private hasNavigationExtrasAsFunction +
                                        + + hasNavigationExtrasAsFunction(redirectTo: any) +
                                        + +
                                        + +
                                        + Returns : boolean + +
                                        +
                                        + + + + + + + + + + + + + + + + + + +
                                        + Private hasNavigationCommandsAsFunction +
                                        + + hasNavigationCommandsAsFunction(redirectTo: any) +
                                        + +
                                        + +
                                        + Returns : boolean + +
                                        +
                                        + + + + + + + + + + + + + + + + + + +
                                        + Private onlyRedirectCheck +
                                        + + onlyRedirectCheck(permissions: any, route: any, state: any) +
                                        + +
                                        + +
                                        + Returns : any + +
                                        +
                                        + + + + + + + + + + + + + + + + + + +
                                        + Private handleRedirectOfFailedPermission +
                                        + + handleRedirectOfFailedPermission(permissions: any, failedPermission: string, route: any, state: any) +
                                        + +
                                        + +
                                        + Returns : void + +
                                        +
                                        + + + + + + + + + + + + + + + + + + +
                                        + Private isFailedPermissionPropertyOfRedirectTo +
                                        + + isFailedPermissionPropertyOfRedirectTo(permissions: any, failedPermission: string) +
                                        + +
                                        + +
                                        + Returns : void + +
                                        +
                                        + + + + + + + + + + + + + + + + + + +
                                        + Private checkOnlyPermissions +
                                        + + checkOnlyPermissions(purePermissions: any, route: any, state: any) +
                                        + +
                                        + +
                                        + Returns : void + +
                                        +
                                        + + + + + + + + + + + + + + + + + + +
                                        + Private passingOnlyPermissionsValidation +
                                        + + passingOnlyPermissionsValidation(permissions: any, route: any, state: any) +
                                        + +
                                        + +
                                        + Returns : void + +
                                        +
                                        +
                                        + +
                                        +
                                        +
                                        import { Injectable } from '@angular/core';
                                        +import {
                                        +    ActivatedRouteSnapshot,
                                        +    CanActivate,
                                        +    CanActivateChild,
                                        +    CanLoad,
                                        +    NavigationExtras,
                                        +    Route,
                                        +    Router,
                                        +    RouterStateSnapshot,
                                        +} from '@angular/router';
                                        +import { forkJoin, from, Observable, of } from 'rxjs';
                                        +import { first, mergeMap, tap } from 'rxjs/operators';
                                        +
                                        +import { NgxPermissionsRouterData } from '../model/permissions-router-data.model';
                                        +import { NgxPermissionsService } from '../service/permissions.service';
                                        +import { NgxRolesService } from '../service/roles.service';
                                        +import { isFunction, isPlainObject, transformStringToArray } from '../utils/utils';
                                        +
                                        +
                                        +
                                        +
                                        +interface NgxRedirectToNavigationParameters {
                                        +    navigationCommands: any[] | Function;
                                        +    navigationExtras?: NavigationExtras | Function;
                                        +}
                                        +
                                        +@Injectable()
                                        +export class NgxPermissionsGuard implements CanActivate, CanLoad, CanActivateChild {
                                        +
                                        +    constructor(private permissionsService: NgxPermissionsService, private rolesService: NgxRolesService, private router: Router) {
                                        +    }
                                        +
                                        +    canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean> | boolean {
                                        +        return this.hasPermissions(route, state);
                                        +    }
                                        +
                                        +    canActivateChild(childRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
                                        +        return this.hasPermissions(childRoute, state);
                                        +    }
                                        +
                                        +    canLoad(route: Route): boolean | Observable<boolean> | Promise<boolean> {
                                        +        return this.hasPermissions(route);
                                        +    }
                                        +
                                        +    private hasPermissions(route: ActivatedRouteSnapshot | Route, state?: RouterStateSnapshot) {
                                        +        const purePermissions = !!route && route.data ? route.data['permissions'] as NgxPermissionsRouterData : {};
                                        +        let permissions: NgxPermissionsRouterData = this.transformPermission(purePermissions, route, state);
                                        +
                                        +        if (this.isParameterAvailable(permissions.except)) {
                                        +            return this.passingExceptPermissionsValidation(permissions, route, state);
                                        +        }
                                        +
                                        +        if (this.isParameterAvailable(permissions.only)) {
                                        +            return this.passingOnlyPermissionsValidation(permissions, route, state);
                                        +        }
                                        +
                                        +        return true;
                                        +    }
                                        +
                                        +    private transformPermission(purePermissions: NgxPermissionsRouterData, route: any, state: any): any {
                                        +        let permissions = {
                                        +            ...purePermissions
                                        +        };
                                        +
                                        +        if (isFunction(permissions.except)) {
                                        +            permissions.except = (permissions.except as Function)(route, state);
                                        +        }
                                        +
                                        +        if (isFunction(permissions.only)) {
                                        +            permissions.only = (permissions.only as Function)(route, state);
                                        +        }
                                        +
                                        +        permissions.except = transformStringToArray(permissions.except);
                                        +        permissions.only = transformStringToArray(permissions.only);
                                        +
                                        +        return permissions;
                                        +    }
                                        +
                                        +    private isParameterAvailable(permission: any) {
                                        +        return !!(permission) && permission.length > 0;
                                        +    }
                                        +
                                        +    private passingExceptPermissionsValidation(permissions: NgxPermissionsRouterData, route: any, state: any) {
                                        +        if (!!permissions.redirectTo && (isFunction(permissions.redirectTo) ||
                                        +            (isPlainObject(permissions.redirectTo) && !this.isRedirectionWithParameters(permissions.redirectTo)))) {
                                        +            let failedPermission = '';
                                        +
                                        +            return from(permissions.except as any[]).pipe(
                                        +                mergeMap((data) => {
                                        +                    return forkJoin([
                                        +                        this.permissionsService.hasPermission(<string | string[]>data),
                                        +                        this.rolesService.hasOnlyRoles(<string | string[]>data)
                                        +                    ]).pipe(tap((hasPermissions: boolean[]) => {
                                        +                        const dontHavePermissions = hasPermissions.every((_data) => _data === false);
                                        +
                                        +                        if (!dontHavePermissions) {
                                        +                            failedPermission = data;
                                        +                        }
                                        +                    }));
                                        +                }),
                                        +                first((data: any) => data.some((_data: boolean) => _data === true), false),
                                        +                mergeMap((isAllFalse) => {
                                        +                    if (!!failedPermission) {
                                        +                        this.handleRedirectOfFailedPermission(permissions, failedPermission, route, state);
                                        +
                                        +                        return of(false);
                                        +                    }
                                        +
                                        +                    if (!isAllFalse && permissions.only) {
                                        +                        return this.onlyRedirectCheck(permissions, route, state);
                                        +                    }
                                        +
                                        +                    return of(!isAllFalse);
                                        +                })
                                        +            ).toPromise();
                                        +        }
                                        +
                                        +        return Promise.all([
                                        +            this.permissionsService.hasPermission(<string | string[]>permissions.except),
                                        +            this.rolesService.hasOnlyRoles(<string | string[]>permissions.except)
                                        +        ]).then(([permissionsPr, roles]) => {
                                        +            if (permissionsPr || roles) {
                                        +                if (permissions.redirectTo) {
                                        +                    this.redirectToAnotherRoute(permissions.redirectTo, route, state);
                                        +                    return false;
                                        +                } else {
                                        +                    return false;
                                        +                }
                                        +            } else {
                                        +                if (permissions.only) {
                                        +                    return this.checkOnlyPermissions(permissions, route, state);
                                        +                }
                                        +                return true;
                                        +            }
                                        +        });
                                        +    }
                                        +
                                        +    private redirectToAnotherRoute(
                                        +        redirectTo: string | any[] | NgxRedirectToNavigationParameters | Function,
                                        +        route: ActivatedRouteSnapshot | Route,
                                        +        state?: RouterStateSnapshot,
                                        +        failedPermissionName?: string
                                        +    ) {
                                        +        if (isFunction(redirectTo)) {
                                        +            redirectTo = (redirectTo as Function)(failedPermissionName, route, state);
                                        +        }
                                        +
                                        +        if (this.isRedirectionWithParameters(redirectTo)) {
                                        +            if (this.hasNavigationExtrasAsFunction(redirectTo)) {
                                        +                (<NgxRedirectToNavigationParameters>redirectTo).navigationExtras =
                                        +                    ((<NgxRedirectToNavigationParameters>redirectTo).navigationExtras as Function)(
                                        +                        route,
                                        +                        state
                                        +                    );
                                        +            }
                                        +
                                        +            if (this.hasNavigationCommandsAsFunction(redirectTo)) {
                                        +                (<NgxRedirectToNavigationParameters>redirectTo).navigationCommands =
                                        +                    ((<NgxRedirectToNavigationParameters>redirectTo).navigationCommands as Function)(
                                        +                        route,
                                        +                        state
                                        +                    );
                                        +            }
                                        +
                                        +            this.router.navigate(
                                        +                ((<NgxRedirectToNavigationParameters>redirectTo).navigationCommands as any[]),
                                        +                ((<NgxRedirectToNavigationParameters>redirectTo).navigationExtras as NavigationExtras)
                                        +            );
                                        +
                                        +            return;
                                        +        }
                                        +
                                        +        if (Array.isArray(redirectTo)) {
                                        +            this.router.navigate(redirectTo);
                                        +        } else {
                                        +            this.router.navigate([redirectTo]);
                                        +        }
                                        +    }
                                        +
                                        +    private isRedirectionWithParameters(object: any | NgxRedirectToNavigationParameters): boolean {
                                        +        return isPlainObject(object) && (!!object.navigationCommands || !!object.navigationExtras);
                                        +    }
                                        +
                                        +    private hasNavigationExtrasAsFunction(redirectTo: any): boolean {
                                        +        return !!(<NgxRedirectToNavigationParameters>redirectTo).navigationExtras &&
                                        +            isFunction((<NgxRedirectToNavigationParameters>redirectTo).navigationExtras);
                                        +    }
                                        +
                                        +    private hasNavigationCommandsAsFunction(redirectTo: any): boolean {
                                        +        return !!(<NgxRedirectToNavigationParameters>redirectTo).navigationCommands &&
                                        +            isFunction((<NgxRedirectToNavigationParameters>redirectTo).navigationCommands);
                                        +    }
                                        +
                                        +    private onlyRedirectCheck(permissions: any, route: ActivatedRouteSnapshot | Route, state?: RouterStateSnapshot): Promise<boolean> {
                                        +        let failedPermission = '';
                                        +
                                        +        return from(permissions.only).pipe(
                                        +            mergeMap((data: any) => {
                                        +                return forkJoin([
                                        +                    this.permissionsService.hasPermission(<string | string[]>data),
                                        +                    this.rolesService.hasOnlyRoles(<string | string[]>data)
                                        +                ]).pipe(
                                        +                    tap((hasPermission: boolean[]) => {
                                        +                        const failed = hasPermission.every((_data) => _data === false);
                                        +
                                        +                        if (failed) {
                                        +                            failedPermission = data;
                                        +                        }
                                        +                    })
                                        +                );
                                        +            }),
                                        +            first(
                                        +                (data: any) => {
                                        +                    if (isFunction(permissions.redirectTo)) {
                                        +                        return data.some((_data: boolean) => _data === true);
                                        +                    }
                                        +
                                        +                    return data.every((_data: boolean) => _data === false);
                                        +                },
                                        +                false
                                        +            ),
                                        +            mergeMap((pass: boolean): Observable<boolean> => {
                                        +                if (isFunction(permissions.redirectTo)) {
                                        +                    if (pass) {
                                        +                        return of(true);
                                        +                    } else {
                                        +                        this.handleRedirectOfFailedPermission(permissions, failedPermission, route, state);
                                        +                        return of(false);
                                        +                    }
                                        +                } else {
                                        +                    if (!!failedPermission) {
                                        +                        this.handleRedirectOfFailedPermission(permissions, failedPermission, route, state);
                                        +                    }
                                        +                    return of(!pass);
                                        +                }
                                        +            })
                                        +        ).toPromise();
                                        +    }
                                        +
                                        +    private handleRedirectOfFailedPermission(
                                        +        permissions: any,
                                        +        failedPermission: string,
                                        +        route: ActivatedRouteSnapshot | Route,
                                        +        state?: RouterStateSnapshot
                                        +    ) {
                                        +        if (this.isFailedPermissionPropertyOfRedirectTo(permissions, failedPermission)) {
                                        +            this.redirectToAnotherRoute((<any>permissions.redirectTo)[failedPermission], route, state, failedPermission);
                                        +        } else {
                                        +            if (isFunction(permissions.redirectTo)) {
                                        +                this.redirectToAnotherRoute((<any>permissions.redirectTo), route, state, failedPermission);
                                        +            } else {
                                        +                this.redirectToAnotherRoute((<any>permissions.redirectTo)['default'], route, state, failedPermission);
                                        +            }
                                        +        }
                                        +    }
                                        +
                                        +    private isFailedPermissionPropertyOfRedirectTo(permissions: any, failedPermission: string) {
                                        +        return !!permissions.redirectTo && permissions.redirectTo[<any>failedPermission];
                                        +    }
                                        +
                                        +    private checkOnlyPermissions(purePermissions: any, route: ActivatedRouteSnapshot | Route, state?: RouterStateSnapshot) {
                                        +        let permissions: NgxPermissionsRouterData = {
                                        +            ...purePermissions
                                        +        };
                                        +
                                        +        return Promise.all([
                                        +            this.permissionsService.hasPermission(<string | string[]>permissions.only),
                                        +            this.rolesService.hasOnlyRoles(<string | string[]>permissions.only)
                                        +        ]).then(([permissionsPr, roles]) => {
                                        +            if (permissionsPr || roles) {
                                        +                return true;
                                        +            } else {
                                        +                if (permissions.redirectTo) {
                                        +                    this.redirectToAnotherRoute(permissions.redirectTo, route, state);
                                        +                    return false;
                                        +                } else {
                                        +                    return false;
                                        +                }
                                        +            }
                                        +        });
                                        +    }
                                        +
                                        +    private passingOnlyPermissionsValidation(
                                        +        permissions: NgxPermissionsRouterData, route: ActivatedRouteSnapshot | Route, state?: RouterStateSnapshot) {
                                        +        if ((isFunction(permissions.redirectTo) ||
                                        +            isPlainObject(permissions.redirectTo) && !this.isRedirectionWithParameters(permissions.redirectTo))) {
                                        +            return this.onlyRedirectCheck(permissions, route, state);
                                        +        }
                                        +        return this.checkOnlyPermissions(permissions, route, state);
                                        +    }
                                        +
                                        +}
                                        +
                                        +
                                        +
                                        + + + + + + + +
                                        +
                                        +

                                        results matching ""

                                        +
                                          +
                                          +
                                          +

                                          No results matching ""

                                          +
                                          +
                                          +
                                          +
                                          +
                                          + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/injectables/NgxPermissionsService.html b/docs/injectables/NgxPermissionsService.html new file mode 100644 index 0000000..07a3a6f --- /dev/null +++ b/docs/injectables/NgxPermissionsService.html @@ -0,0 +1,1094 @@ + + + + + + ngx-permissions + + + + + + + + + + + + +
                                          +
                                          + +
                                          +
                                          + + + + + + + + +
                                          +
                                          +

                                          +

                                          File

                                          +

                                          +

                                          + projects/ngx-permissions/src/lib/service/permissions.service.ts +

                                          + + +
                                          +

                                          Constructor

                                          + + + + + + + + + + +
                                          + constructor(isolate: boolean, permissionsStore: any) +
                                          + +
                                          +
                                          + +
                                          + +

                                          + Methods +

                                          + + + + + + + + + + + + + + + + + + +
                                          + Public flushPermissions +
                                          + + flushPermissions() +
                                          + +
                                          +

                                          Remove all permissions from permissions source

                                          +
                                          + +
                                          + Returns : void + +
                                          +
                                          + + + + + + + + + + + + + + + + + + +
                                          + Public hasPermission +
                                          + + hasPermission(permission: string | {}) +
                                          + +
                                          + +
                                          + Returns : any + +
                                          +
                                          + + + + + + + + + + + + + + + + + + +
                                          + Public loadPermissions +
                                          + + loadPermissions(permissions: {}, validationFunction: any) +
                                          + +
                                          + +
                                          + Returns : void + +
                                          +
                                          + + + + + + + + + + + + + + + + + + +
                                          + Public addPermission +
                                          + + addPermission(permission: string | {}, validationFunction: any) +
                                          + +
                                          + +
                                          + Returns : void + +
                                          +
                                          + + + + + + + + + + + + + + + + + + +
                                          + Public removePermission +
                                          + + removePermission(permissionName: string) +
                                          + +
                                          + +
                                          + Returns : void + +
                                          +
                                          + + + + + + + + + + + + + + + + + + +
                                          + Public getPermission +
                                          + + getPermission(name: string) +
                                          + +
                                          + +
                                          + Returns : any + +
                                          +
                                          + + + + + + + + + + + + + + + + + + +
                                          + Public getPermissions +
                                          + + getPermissions() +
                                          + +
                                          + +
                                          + Returns : NgxPermissionsObject + +
                                          +
                                          + + + + + + + + + + + + + + + + + + +
                                          + Private reducePermission +
                                          + + reducePermission(source: NgxPermissionsObject, name: string, validationFunction: any) +
                                          + +
                                          + +
                                          + Returns : NgxPermissionsObject + +
                                          +
                                          + + + + + + + + + + + + + + + + + + +
                                          + Private hasArrayPermission +
                                          + + hasArrayPermission(permissions: {}) +
                                          + +
                                          + +
                                          + Returns : any + +
                                          +
                                          + + + + + + + + + + + + + + + + + + +
                                          + Private hasPermissionValidationFunction +
                                          + + hasPermissionValidationFunction(key: string) +
                                          + +
                                          + +
                                          + Returns : boolean + +
                                          +
                                          +
                                          + +
                                          + +

                                          + Properties +

                                          + + + + + + + + + + + + +
                                          + Public permissions$ +
                                          + permissions$: any + +
                                          + +
                                          + + + + + + + + + + + + +
                                          + Private permissionsSource +
                                          + permissionsSource: any + +
                                          + +
                                          +
                                          +
                                          +
                                          +
                                          import { Inject, Injectable, InjectionToken } from '@angular/core';
                                          +
                                          +import { BehaviorSubject, from, Observable, ObservableInput, of } from 'rxjs';
                                          +import { catchError, first, map, mergeAll, switchMap, tap } from 'rxjs/operators';
                                          +
                                          +import { NgxPermission } from '../model/permission.model';
                                          +import { NgxPermissionsStore } from '../store/permissions.store';
                                          +
                                          +import { isBoolean, isFunction, transformStringToArray } from '../utils/utils';
                                          +
                                          +export type NgxPermissionsObject = { [ name: string ]: NgxPermission };
                                          +
                                          +export const USE_PERMISSIONS_STORE = new InjectionToken('USE_PERMISSIONS_STORE');
                                          +
                                          +@Injectable()
                                          +export class NgxPermissionsService {
                                          +
                                          +    private permissionsSource: BehaviorSubject<NgxPermissionsObject>;
                                          +    public permissions$: Observable<NgxPermissionsObject>;
                                          +
                                          +    constructor(
                                          +        @Inject(USE_PERMISSIONS_STORE) private isolate: boolean = false,
                                          +        private permissionsStore: NgxPermissionsStore
                                          +    ) {
                                          +        this.permissionsSource = isolate ? new BehaviorSubject<NgxPermissionsObject>({}) : permissionsStore.permissionsSource;
                                          +        this.permissions$ = this.permissionsSource.asObservable();
                                          +    }
                                          +
                                          +    /**
                                          +     * Remove all permissions from permissions source
                                          +     */
                                          +    public flushPermissions(): void {
                                          +        this.permissionsSource.next({});
                                          +    }
                                          +
                                          +    public hasPermission(permission: string | string[]): Promise<boolean> {
                                          +        if (!permission || (Array.isArray(permission) && permission.length === 0)) {
                                          +            return Promise.resolve(true);
                                          +        }
                                          +
                                          +        permission = transformStringToArray(permission);
                                          +        return this.hasArrayPermission(permission);
                                          +    }
                                          +
                                          +    public loadPermissions(permissions: string[], validationFunction?: Function): void {
                                          +        const newPermissions = permissions.reduce((source, p) =>
                                          +                this.reducePermission(source, p, validationFunction)
                                          +            , {});
                                          +
                                          +        this.permissionsSource.next(newPermissions);
                                          +    }
                                          +
                                          +    public addPermission(permission: string | string[], validationFunction?: Function): void {
                                          +        if (Array.isArray(permission)) {
                                          +            const permissions = permission.reduce((source, p) =>
                                          +                    this.reducePermission(source, p, validationFunction)
                                          +                , this.permissionsSource.value);
                                          +
                                          +            this.permissionsSource.next(permissions);
                                          +        } else {
                                          +            const permissions = this.reducePermission(this.permissionsSource.value, permission, validationFunction);
                                          +
                                          +            this.permissionsSource.next(permissions);
                                          +        }
                                          +    }
                                          +
                                          +    public removePermission(permissionName: string): void {
                                          +        const permissions = {
                                          +            ...this.permissionsSource.value
                                          +        };
                                          +        delete permissions[ permissionName ];
                                          +        this.permissionsSource.next(permissions);
                                          +    }
                                          +
                                          +    public getPermission(name: string): NgxPermission {
                                          +        return this.permissionsSource.value[ name ];
                                          +    }
                                          +
                                          +    public getPermissions(): NgxPermissionsObject {
                                          +        return this.permissionsSource.value;
                                          +    }
                                          +
                                          +    private reducePermission(
                                          +        source: NgxPermissionsObject,
                                          +        name: string,
                                          +        validationFunction?: Function
                                          +    ): NgxPermissionsObject {
                                          +        if (!!validationFunction && isFunction(validationFunction)) {
                                          +            return {
                                          +                ...source,
                                          +                [ name ]: { name, validationFunction }
                                          +            };
                                          +        } else {
                                          +            return {
                                          +                ...source,
                                          +                [ name ]: { name }
                                          +            };
                                          +        }
                                          +    }
                                          +
                                          +    private hasArrayPermission(permissions: string[]): Promise<boolean> {
                                          +        const promises: Observable<boolean>[] = permissions.map((key) => {
                                          +            if (this.hasPermissionValidationFunction(key)) {
                                          +                const immutableValue = { ...this.permissionsSource.value };
                                          +                const validationFunction: Function = <Function>this.permissionsSource.value[ key ].validationFunction;
                                          +
                                          +                return of(null).pipe(
                                          +                    map(() => validationFunction(key, immutableValue)),
                                          +                    switchMap((promise: Promise<boolean> | boolean): ObservableInput<boolean> => isBoolean(promise) ?
                                          +                        of(promise as boolean) : promise as Promise<boolean>),
                                          +                    catchError(() => of(false))
                                          +                );
                                          +            }
                                          +
                                          +            // check for name of the permission if there is no validation function
                                          +            return of(!!this.permissionsSource.value[ key ]);
                                          +        });
                                          +
                                          +        return from(promises).pipe(
                                          +            mergeAll(),
                                          +            first((data) => data !== false, false),
                                          +            map((data) => data === false ? false : true)
                                          +        ).toPromise().then((data: any) => data);
                                          +    }
                                          +
                                          +    private hasPermissionValidationFunction(key: string): boolean {
                                          +        return !!this.permissionsSource.value[ key ] &&
                                          +            !!this.permissionsSource.value[ key ].validationFunction &&
                                          +            isFunction(this.permissionsSource.value[ key ].validationFunction);
                                          +    }
                                          +
                                          +}
                                          +
                                          +
                                          +
                                          + + + + + + + +
                                          +
                                          +

                                          results matching ""

                                          +
                                            +
                                            +
                                            +

                                            No results matching ""

                                            +
                                            +
                                            +
                                            +
                                            +
                                            + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/injectables/NgxPermissionsStore.html b/docs/injectables/NgxPermissionsStore.html new file mode 100644 index 0000000..b81f137 --- /dev/null +++ b/docs/injectables/NgxPermissionsStore.html @@ -0,0 +1,647 @@ + + + + + + ngx-permissions + + + + + + + + + + + + +
                                            +
                                            + +
                                            +
                                            + + + + + + + + +
                                            +
                                            +

                                            +

                                            File

                                            +

                                            +

                                            + projects/ngx-permissions/src/lib/store/permissions.store.ts +

                                            + + +
                                            +

                                            Constructor

                                            + + + + + + + + + + +
                                            + constructor() +
                                            + +
                                            +
                                            + + +
                                            + +

                                            + Properties +

                                            + + + + + + + + + + + + +
                                            + Public permissions$ +
                                            + permissions$: any + +
                                            + +
                                            + + + + + + + + + + + + +
                                            + Public permissionsSource +
                                            + permissionsSource: any + +
                                            + +
                                            +
                                            +
                                            +
                                            +
                                            import { Injectable } from '@angular/core';
                                            +import { BehaviorSubject, Observable } from 'rxjs';
                                            +
                                            +@Injectable()
                                            +export class NgxPermissionsStore {
                                            +
                                            +    public permissionsSource = new BehaviorSubject<{}>({});
                                            +    public permissions$: Observable<{}> = this.permissionsSource.asObservable();
                                            +
                                            +    constructor() {
                                            +    }
                                            +
                                            +}
                                            +
                                            +
                                            +
                                            + + + + + + + +
                                            +
                                            +

                                            results matching ""

                                            +
                                              +
                                              +
                                              +

                                              No results matching ""

                                              +
                                              +
                                              +
                                              +
                                              +
                                              + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/injectables/NgxRolesService.html b/docs/injectables/NgxRolesService.html new file mode 100644 index 0000000..041795f --- /dev/null +++ b/docs/injectables/NgxRolesService.html @@ -0,0 +1,1048 @@ + + + + + + ngx-permissions + + + + + + + + + + + + +
                                              +
                                              + +
                                              +
                                              + + + + + + + + +
                                              +
                                              +

                                              +

                                              File

                                              +

                                              +

                                              + projects/ngx-permissions/src/lib/service/roles.service.ts +

                                              + + +
                                              +

                                              Constructor

                                              + + + + + + + + + + +
                                              + constructor(isolate: boolean, rolesStore: any, permissionsService: any) +
                                              + +
                                              +
                                              + +
                                              + +

                                              + Methods +

                                              + + + + + + + + + + + + + + + + + + +
                                              + Public addRole +
                                              + + addRole(name: string, validationFunction: any) +
                                              + +
                                              + +
                                              + Returns : void + +
                                              +
                                              + + + + + + + + + + + + + + + + + + +
                                              + Public addRoles +
                                              + + addRoles(rolesObj: { [name: string]: any; }) +
                                              + +
                                              + +
                                              + Returns : void + +
                                              +
                                              + + + + + + + + + + + + + + + + + + +
                                              + Public flushRoles +
                                              + + flushRoles() +
                                              + +
                                              + +
                                              + Returns : void + +
                                              +
                                              + + + + + + + + + + + + + + + + + + +
                                              + Public removeRole +
                                              + + removeRole(roleName: string) +
                                              + +
                                              + +
                                              + Returns : void + +
                                              +
                                              + + + + + + + + + + + + + + + + + + +
                                              + Public getRoles +
                                              + + getRoles() +
                                              + +
                                              + +
                                              + Returns : void + +
                                              +
                                              + + + + + + + + + + + + + + + + + + +
                                              + Public getRole +
                                              + + getRole(name: string) +
                                              + +
                                              + +
                                              + Returns : void + +
                                              +
                                              + + + + + + + + + + + + + + + + + + +
                                              + Public hasOnlyRoles +
                                              + + hasOnlyRoles(names: string | {}) +
                                              + +
                                              + +
                                              + Returns : any + +
                                              +
                                              + + + + + + + + + + + + + + + + + + +
                                              + Private hasRoleKey +
                                              + + hasRoleKey(roleName: {}) +
                                              + +
                                              + +
                                              + Returns : any + +
                                              +
                                              + + + + + + + + + + + + + + + + + + +
                                              + Private hasRolePermission +
                                              + + hasRolePermission(roles: NgxRolesObject, roleNames: {}) +
                                              + +
                                              + +
                                              + Returns : any + +
                                              +
                                              +
                                              + +
                                              + +

                                              + Properties +

                                              + + + + + + + + + + + + +
                                              + Public roles$ +
                                              + roles$: any + +
                                              + +
                                              + + + + + + + + + + + + +
                                              + Private rolesSource +
                                              + rolesSource: any + +
                                              + +
                                              +
                                              +
                                              +
                                              +
                                              import { Inject, Injectable, InjectionToken } from '@angular/core';
                                              +import { BehaviorSubject, Observable, ObservableInput, from, of } from 'rxjs';
                                              +import { catchError, every, first, map, mergeAll, mergeMap, switchMap } from 'rxjs/operators';
                                              +import { NgxRole } from '../model/role.model';
                                              +import { NgxRolesStore } from '../store/roles.store';
                                              +import { isBoolean, isFunction, isPromise, transformStringToArray } from '../utils/utils';
                                              +import { NgxPermissionsService } from './permissions.service';
                                              +
                                              +export const USE_ROLES_STORE = new InjectionToken('USE_ROLES_STORE');
                                              +
                                              +export type NgxRolesObject = { [name: string]: NgxRole };
                                              +
                                              +@Injectable()
                                              +export class NgxRolesService {
                                              +
                                              +    private rolesSource: BehaviorSubject<NgxRolesObject>;
                                              +
                                              +    public roles$: Observable<NgxRolesObject>;
                                              +
                                              +    constructor(
                                              +        @Inject(USE_ROLES_STORE) private isolate: boolean = false,
                                              +        private rolesStore: NgxRolesStore,
                                              +        private permissionsService: NgxPermissionsService
                                              +    ) {
                                              +        this.rolesSource = this.isolate ? new BehaviorSubject<NgxRolesObject>({}) : this.rolesStore.rolesSource;
                                              +        this.roles$ = this.rolesSource.asObservable();
                                              +    }
                                              +
                                              +    public addRole(name: string, validationFunction: Function | string[]) {
                                              +        const roles = {
                                              +            ...this.rolesSource.value,
                                              +            [name]: { name, validationFunction }
                                              +        };
                                              +        this.rolesSource.next(roles);
                                              +    }
                                              +
                                              +    public addRoles(rolesObj: { [name: string]: Function | string[] }) {
                                              +        Object.keys(rolesObj).forEach((key, index) => {
                                              +            this.addRole(key, rolesObj[key]);
                                              +        });
                                              +    }
                                              +
                                              +    public flushRoles() {
                                              +        this.rolesSource.next({});
                                              +    }
                                              +
                                              +    public removeRole(roleName: string) {
                                              +        let roles = {
                                              +            ...this.rolesSource.value
                                              +        };
                                              +        delete roles[roleName];
                                              +        this.rolesSource.next(roles);
                                              +    }
                                              +
                                              +    public getRoles() {
                                              +        return this.rolesSource.value;
                                              +    }
                                              +
                                              +    public getRole(name: string) {
                                              +        return this.rolesSource.value[name];
                                              +    }
                                              +
                                              +    public hasOnlyRoles(names: string | string[]): Promise<boolean> {
                                              +        if (!names || (Array.isArray(names) && names.length === 0)) {
                                              +            return Promise.resolve(true);
                                              +        }
                                              +
                                              +        names = transformStringToArray(names);
                                              +
                                              +        return Promise.all([this.hasRoleKey(names), this.hasRolePermission(this.rolesSource.value, names)])
                                              +            .then(([hasRoles, hasPermissions]: [boolean, boolean]) => {
                                              +                return hasRoles || hasPermissions;
                                              +            });
                                              +    }
                                              +
                                              +    private hasRoleKey(roleName: string[]): Promise<boolean> {
                                              +        const promises: Observable<boolean>[] = roleName.map((key) => {
                                              +            if (
                                              +                !!this.rolesSource.value[key] &&
                                              +                !!this.rolesSource.value[key].validationFunction &&
                                              +                isFunction(this.rolesSource.value[key].validationFunction) &&
                                              +                !isPromise(this.rolesSource.value[key].validationFunction)
                                              +            ) {
                                              +                const validationFunction: Function = <Function>this.rolesSource.value[key].validationFunction;
                                              +
                                              +                return of(null).pipe(
                                              +                    map(() => validationFunction()),
                                              +                    switchMap((promise: Promise<boolean> | boolean): ObservableInput<boolean> => isBoolean(promise) ?
                                              +                        of(promise as boolean) : promise as Promise<boolean>),
                                              +                    catchError(() => of(false))
                                              +                );
                                              +            }
                                              +
                                              +            return of(false);
                                              +        });
                                              +
                                              +        return from(promises).pipe(
                                              +            mergeAll(),
                                              +            first((data: any) => data !== false, false),
                                              +            map((data) => data === false ? false : true)
                                              +        ).toPromise().then((data: any) => data);
                                              +    }
                                              +
                                              +    private hasRolePermission(roles: NgxRolesObject, roleNames: string[]): Promise<boolean> {
                                              +        return from(roleNames).pipe(
                                              +            mergeMap((key) => {
                                              +                if (roles[key] && Array.isArray(roles[key].validationFunction)) {
                                              +                    return from(<string[]>roles[key].validationFunction).pipe(
                                              +                        mergeMap((permission) => this.permissionsService.hasPermission(permission)),
                                              +                        every((hasPermissions) => hasPermissions === true)
                                              +                    );
                                              +                }
                                              +
                                              +                return of(false);
                                              +            }),
                                              +            first((hasPermission) => hasPermission === true, false)
                                              +        ).toPromise();
                                              +    }
                                              +
                                              +}
                                              +
                                              +
                                              +
                                              + + + + + + + +
                                              +
                                              +

                                              results matching ""

                                              +
                                                +
                                                +
                                                +

                                                No results matching ""

                                                +
                                                +
                                                +
                                                +
                                                +
                                                + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/interfaces/NgxPermissionsModuleConfig.html b/docs/interfaces/NgxPermissionsModuleConfig.html new file mode 100644 index 0000000..b87fd0f --- /dev/null +++ b/docs/interfaces/NgxPermissionsModuleConfig.html @@ -0,0 +1,780 @@ + + + + + + ngx-permissions + + + + + + + + + + + + +
                                                +
                                                + +
                                                +
                                                + + + + + + + + + + + +
                                                +
                                                +

                                                +

                                                File

                                                +

                                                +

                                                + projects/ngx-permissions/src/lib/index.ts +

                                                + + + + + +
                                                +

                                                Properties

                                                + + + + + + + + + + + + + + + + + + + + + +
                                                + configurationIsolate +
                                                + configurationIsolate: boolean + +
                                                + Type : boolean + +
                                                + +
                                                + + + + + + + + + + + + + + + + + + + + + +
                                                + permissionsIsolate +
                                                + permissionsIsolate: boolean + +
                                                + Type : boolean + +
                                                + +
                                                + + + + + + + + + + + + + + + + + + + + + +
                                                + rolesIsolate +
                                                + rolesIsolate: boolean + +
                                                + Type : boolean + +
                                                + +
                                                +
                                                +
                                                +
                                                +
                                                import { ModuleWithProviders, NgModule } from '@angular/core';
                                                +import { NgxPermissionsDirective } from './directive/permissions.directive';
                                                +import { NgxPermissionsGuard } from './router/permissions-guard.service';
                                                +import { NgxPermissionsConfigurationService, USE_CONFIGURATION_STORE } from './service/configuration.service';
                                                +import { NgxPermissionsService, USE_PERMISSIONS_STORE } from './service/permissions.service';
                                                +import { NgxRolesService, USE_ROLES_STORE } from './service/roles.service';
                                                +import { NgxPermissionsConfigurationStore } from './store/configuration.store';
                                                +import { NgxPermissionsStore } from './store/permissions.store';
                                                +import { NgxRolesStore } from './store/roles.store';
                                                +import { NgxPermissionsAllowStubDirective } from './testing/permissions-allow.directive.stub';
                                                +import { NgxPermissionsRestrictStubDirective } from './testing/permissions-restrict.directive.stub';
                                                +
                                                +export * from './store/roles.store';
                                                +export * from './store/permissions.store';
                                                +export * from './store/configuration.store';
                                                +
                                                +export * from './directive/permissions.directive';
                                                +
                                                +export * from './service/permissions.service';
                                                +export * from './service/roles.service';
                                                +export * from './service/configuration.service';
                                                +
                                                +export * from './router/permissions-guard.service';
                                                +
                                                +export * from './model/permissions-router-data.model';
                                                +export * from './model/role.model';
                                                +
                                                +export * from './testing/permissions-allow.directive.stub';
                                                +export * from './testing/permissions-restrict.directive.stub';
                                                +
                                                +export * from './enums/predefined-strategies.enum';
                                                +
                                                +export interface NgxPermissionsModuleConfig {
                                                +    // isolate the service instance, only works for lazy loaded modules or components with the "providers" property
                                                +    rolesIsolate?: boolean;
                                                +    permissionsIsolate?: boolean;
                                                +    configurationIsolate?: boolean;
                                                +}
                                                +
                                                +
                                                +@NgModule({
                                                +    imports: [],
                                                +    declarations: [
                                                +        NgxPermissionsDirective
                                                +    ],
                                                +    exports: [
                                                +        NgxPermissionsDirective
                                                +    ]
                                                +})
                                                +export class NgxPermissionsModule {
                                                +    static forRoot(config: NgxPermissionsModuleConfig = {}): ModuleWithProviders {
                                                +        return {
                                                +            ngModule: NgxPermissionsModule,
                                                +            providers: [
                                                +                NgxPermissionsStore,
                                                +                NgxRolesStore,
                                                +                NgxPermissionsConfigurationStore,
                                                +                NgxPermissionsService,
                                                +                NgxPermissionsGuard,
                                                +                NgxRolesService,
                                                +                NgxPermissionsConfigurationService,
                                                +                { provide: USE_PERMISSIONS_STORE, useValue: config.permissionsIsolate },
                                                +                { provide: USE_ROLES_STORE, useValue: config.rolesIsolate },
                                                +                { provide: USE_CONFIGURATION_STORE, useValue: config.configurationIsolate },
                                                +            ]
                                                +        };
                                                +    }
                                                +
                                                +    static forChild(config: NgxPermissionsModuleConfig = {}): ModuleWithProviders {
                                                +        return {
                                                +            ngModule: NgxPermissionsModule,
                                                +            providers: [
                                                +                { provide: USE_PERMISSIONS_STORE, useValue: config.permissionsIsolate },
                                                +                { provide: USE_ROLES_STORE, useValue: config.rolesIsolate },
                                                +                { provide: USE_CONFIGURATION_STORE, useValue: config.configurationIsolate },
                                                +                NgxPermissionsConfigurationService,
                                                +                NgxPermissionsService,
                                                +                NgxRolesService,
                                                +                NgxPermissionsGuard
                                                +            ]
                                                +        };
                                                +    }
                                                +}
                                                +
                                                +@NgModule({
                                                +    imports: [],
                                                +    declarations: [
                                                +        NgxPermissionsAllowStubDirective
                                                +    ],
                                                +    exports: [
                                                +        NgxPermissionsAllowStubDirective
                                                +    ]
                                                +})
                                                +export class NgxPermissionsAllowStubModule {
                                                +}
                                                +
                                                +
                                                +@NgModule({
                                                +    imports: [],
                                                +    declarations: [
                                                +        NgxPermissionsRestrictStubDirective
                                                +    ],
                                                +    exports: [
                                                +        NgxPermissionsRestrictStubDirective
                                                +    ]
                                                +})
                                                +export class NgxPermissionsRestrictStubModule {
                                                +}
                                                +
                                                +
                                                +
                                                +
                                                +
                                                + + + + +
                                                +
                                                +

                                                results matching ""

                                                +
                                                  +
                                                  +
                                                  +

                                                  No results matching ""

                                                  +
                                                  +
                                                  +
                                                  +
                                                  +
                                                  + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/interfaces/NgxPermissionsRouterData.html b/docs/interfaces/NgxPermissionsRouterData.html new file mode 100644 index 0000000..33beff9 --- /dev/null +++ b/docs/interfaces/NgxPermissionsRouterData.html @@ -0,0 +1,675 @@ + + + + + + ngx-permissions + + + + + + + + + + + + +
                                                  +
                                                  + +
                                                  +
                                                  + + + + + + + + + + + +
                                                  +
                                                  +

                                                  +

                                                  File

                                                  +

                                                  +

                                                  + projects/ngx-permissions/src/lib/model/permissions-router-data.model.ts +

                                                  + + + + + +
                                                  +

                                                  Properties

                                                  + + + + + + + + + + + + + + + + + + + + + +
                                                  + except +
                                                  + except: any + +
                                                  + Type : any + +
                                                  + +
                                                  + + + + + + + + + + + + + + + + + + + + + +
                                                  + only +
                                                  + only: any + +
                                                  + Type : any + +
                                                  + +
                                                  + + + + + + + + + + + + + + + + + + + + + +
                                                  + redirectTo +
                                                  + redirectTo: string + +
                                                  + Type : string + +
                                                  + +
                                                  +
                                                  +
                                                  +
                                                  +
                                                  export interface NgxPermissionsRouterData {
                                                  +    only?: string | string[] | Function;
                                                  +    except?: string | string[] | Function;
                                                  +    redirectTo?: string;
                                                  +}
                                                  +
                                                  +
                                                  +
                                                  + + + + +
                                                  +
                                                  +

                                                  results matching ""

                                                  +
                                                    +
                                                    +
                                                    +

                                                    No results matching ""

                                                    +
                                                    +
                                                    +
                                                    +
                                                    +
                                                    + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/interfaces/NgxRedirectToNavigationParameters.html b/docs/interfaces/NgxRedirectToNavigationParameters.html new file mode 100644 index 0000000..70451e0 --- /dev/null +++ b/docs/interfaces/NgxRedirectToNavigationParameters.html @@ -0,0 +1,931 @@ + + + + + + ngx-permissions + + + + + + + + + + + + +
                                                    +
                                                    + +
                                                    +
                                                    + + + + + + + + + + + +
                                                    +
                                                    +

                                                    +

                                                    File

                                                    +

                                                    +

                                                    + projects/ngx-permissions/src/lib/router/permissions-guard.service.ts +

                                                    + + + + + +
                                                    +

                                                    Properties

                                                    + + + + + + + + + + + + + + + + + + + + + +
                                                    + navigationCommands +
                                                    + navigationCommands: any + +
                                                    + Type : any + +
                                                    + +
                                                    + + + + + + + + + + + + + + + + + + + + + +
                                                    + navigationExtras +
                                                    + navigationExtras: any + +
                                                    + Type : any + +
                                                    + +
                                                    +
                                                    +
                                                    +
                                                    +
                                                    import { Injectable } from '@angular/core';
                                                    +import {
                                                    +    ActivatedRouteSnapshot,
                                                    +    CanActivate,
                                                    +    CanActivateChild,
                                                    +    CanLoad,
                                                    +    NavigationExtras,
                                                    +    Route,
                                                    +    Router,
                                                    +    RouterStateSnapshot,
                                                    +} from '@angular/router';
                                                    +import { forkJoin, from, Observable, of } from 'rxjs';
                                                    +import { first, mergeMap, tap } from 'rxjs/operators';
                                                    +
                                                    +import { NgxPermissionsRouterData } from '../model/permissions-router-data.model';
                                                    +import { NgxPermissionsService } from '../service/permissions.service';
                                                    +import { NgxRolesService } from '../service/roles.service';
                                                    +import { isFunction, isPlainObject, transformStringToArray } from '../utils/utils';
                                                    +
                                                    +
                                                    +
                                                    +
                                                    +interface NgxRedirectToNavigationParameters {
                                                    +    navigationCommands: any[] | Function;
                                                    +    navigationExtras?: NavigationExtras | Function;
                                                    +}
                                                    +
                                                    +@Injectable()
                                                    +export class NgxPermissionsGuard implements CanActivate, CanLoad, CanActivateChild {
                                                    +
                                                    +    constructor(private permissionsService: NgxPermissionsService, private rolesService: NgxRolesService, private router: Router) {
                                                    +    }
                                                    +
                                                    +    canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean> | boolean {
                                                    +        return this.hasPermissions(route, state);
                                                    +    }
                                                    +
                                                    +    canActivateChild(childRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
                                                    +        return this.hasPermissions(childRoute, state);
                                                    +    }
                                                    +
                                                    +    canLoad(route: Route): boolean | Observable<boolean> | Promise<boolean> {
                                                    +        return this.hasPermissions(route);
                                                    +    }
                                                    +
                                                    +    private hasPermissions(route: ActivatedRouteSnapshot | Route, state?: RouterStateSnapshot) {
                                                    +        const purePermissions = !!route && route.data ? route.data['permissions'] as NgxPermissionsRouterData : {};
                                                    +        let permissions: NgxPermissionsRouterData = this.transformPermission(purePermissions, route, state);
                                                    +
                                                    +        if (this.isParameterAvailable(permissions.except)) {
                                                    +            return this.passingExceptPermissionsValidation(permissions, route, state);
                                                    +        }
                                                    +
                                                    +        if (this.isParameterAvailable(permissions.only)) {
                                                    +            return this.passingOnlyPermissionsValidation(permissions, route, state);
                                                    +        }
                                                    +
                                                    +        return true;
                                                    +    }
                                                    +
                                                    +    private transformPermission(purePermissions: NgxPermissionsRouterData, route: any, state: any): any {
                                                    +        let permissions = {
                                                    +            ...purePermissions
                                                    +        };
                                                    +
                                                    +        if (isFunction(permissions.except)) {
                                                    +            permissions.except = (permissions.except as Function)(route, state);
                                                    +        }
                                                    +
                                                    +        if (isFunction(permissions.only)) {
                                                    +            permissions.only = (permissions.only as Function)(route, state);
                                                    +        }
                                                    +
                                                    +        permissions.except = transformStringToArray(permissions.except);
                                                    +        permissions.only = transformStringToArray(permissions.only);
                                                    +
                                                    +        return permissions;
                                                    +    }
                                                    +
                                                    +    private isParameterAvailable(permission: any) {
                                                    +        return !!(permission) && permission.length > 0;
                                                    +    }
                                                    +
                                                    +    private passingExceptPermissionsValidation(permissions: NgxPermissionsRouterData, route: any, state: any) {
                                                    +        if (!!permissions.redirectTo && (isFunction(permissions.redirectTo) ||
                                                    +            (isPlainObject(permissions.redirectTo) && !this.isRedirectionWithParameters(permissions.redirectTo)))) {
                                                    +            let failedPermission = '';
                                                    +
                                                    +            return from(permissions.except as any[]).pipe(
                                                    +                mergeMap((data) => {
                                                    +                    return forkJoin([
                                                    +                        this.permissionsService.hasPermission(<string | string[]>data),
                                                    +                        this.rolesService.hasOnlyRoles(<string | string[]>data)
                                                    +                    ]).pipe(tap((hasPermissions: boolean[]) => {
                                                    +                        const dontHavePermissions = hasPermissions.every((_data) => _data === false);
                                                    +
                                                    +                        if (!dontHavePermissions) {
                                                    +                            failedPermission = data;
                                                    +                        }
                                                    +                    }));
                                                    +                }),
                                                    +                first((data: any) => data.some((_data: boolean) => _data === true), false),
                                                    +                mergeMap((isAllFalse) => {
                                                    +                    if (!!failedPermission) {
                                                    +                        this.handleRedirectOfFailedPermission(permissions, failedPermission, route, state);
                                                    +
                                                    +                        return of(false);
                                                    +                    }
                                                    +
                                                    +                    if (!isAllFalse && permissions.only) {
                                                    +                        return this.onlyRedirectCheck(permissions, route, state);
                                                    +                    }
                                                    +
                                                    +                    return of(!isAllFalse);
                                                    +                })
                                                    +            ).toPromise();
                                                    +        }
                                                    +
                                                    +        return Promise.all([
                                                    +            this.permissionsService.hasPermission(<string | string[]>permissions.except),
                                                    +            this.rolesService.hasOnlyRoles(<string | string[]>permissions.except)
                                                    +        ]).then(([permissionsPr, roles]) => {
                                                    +            if (permissionsPr || roles) {
                                                    +                if (permissions.redirectTo) {
                                                    +                    this.redirectToAnotherRoute(permissions.redirectTo, route, state);
                                                    +                    return false;
                                                    +                } else {
                                                    +                    return false;
                                                    +                }
                                                    +            } else {
                                                    +                if (permissions.only) {
                                                    +                    return this.checkOnlyPermissions(permissions, route, state);
                                                    +                }
                                                    +                return true;
                                                    +            }
                                                    +        });
                                                    +    }
                                                    +
                                                    +    private redirectToAnotherRoute(
                                                    +        redirectTo: string | any[] | NgxRedirectToNavigationParameters | Function,
                                                    +        route: ActivatedRouteSnapshot | Route,
                                                    +        state?: RouterStateSnapshot,
                                                    +        failedPermissionName?: string
                                                    +    ) {
                                                    +        if (isFunction(redirectTo)) {
                                                    +            redirectTo = (redirectTo as Function)(failedPermissionName, route, state);
                                                    +        }
                                                    +
                                                    +        if (this.isRedirectionWithParameters(redirectTo)) {
                                                    +            if (this.hasNavigationExtrasAsFunction(redirectTo)) {
                                                    +                (<NgxRedirectToNavigationParameters>redirectTo).navigationExtras =
                                                    +                    ((<NgxRedirectToNavigationParameters>redirectTo).navigationExtras as Function)(
                                                    +                        route,
                                                    +                        state
                                                    +                    );
                                                    +            }
                                                    +
                                                    +            if (this.hasNavigationCommandsAsFunction(redirectTo)) {
                                                    +                (<NgxRedirectToNavigationParameters>redirectTo).navigationCommands =
                                                    +                    ((<NgxRedirectToNavigationParameters>redirectTo).navigationCommands as Function)(
                                                    +                        route,
                                                    +                        state
                                                    +                    );
                                                    +            }
                                                    +
                                                    +            this.router.navigate(
                                                    +                ((<NgxRedirectToNavigationParameters>redirectTo).navigationCommands as any[]),
                                                    +                ((<NgxRedirectToNavigationParameters>redirectTo).navigationExtras as NavigationExtras)
                                                    +            );
                                                    +
                                                    +            return;
                                                    +        }
                                                    +
                                                    +        if (Array.isArray(redirectTo)) {
                                                    +            this.router.navigate(redirectTo);
                                                    +        } else {
                                                    +            this.router.navigate([redirectTo]);
                                                    +        }
                                                    +    }
                                                    +
                                                    +    private isRedirectionWithParameters(object: any | NgxRedirectToNavigationParameters): boolean {
                                                    +        return isPlainObject(object) && (!!object.navigationCommands || !!object.navigationExtras);
                                                    +    }
                                                    +
                                                    +    private hasNavigationExtrasAsFunction(redirectTo: any): boolean {
                                                    +        return !!(<NgxRedirectToNavigationParameters>redirectTo).navigationExtras &&
                                                    +            isFunction((<NgxRedirectToNavigationParameters>redirectTo).navigationExtras);
                                                    +    }
                                                    +
                                                    +    private hasNavigationCommandsAsFunction(redirectTo: any): boolean {
                                                    +        return !!(<NgxRedirectToNavigationParameters>redirectTo).navigationCommands &&
                                                    +            isFunction((<NgxRedirectToNavigationParameters>redirectTo).navigationCommands);
                                                    +    }
                                                    +
                                                    +    private onlyRedirectCheck(permissions: any, route: ActivatedRouteSnapshot | Route, state?: RouterStateSnapshot): Promise<boolean> {
                                                    +        let failedPermission = '';
                                                    +
                                                    +        return from(permissions.only).pipe(
                                                    +            mergeMap((data: any) => {
                                                    +                return forkJoin([
                                                    +                    this.permissionsService.hasPermission(<string | string[]>data),
                                                    +                    this.rolesService.hasOnlyRoles(<string | string[]>data)
                                                    +                ]).pipe(
                                                    +                    tap((hasPermission: boolean[]) => {
                                                    +                        const failed = hasPermission.every((_data) => _data === false);
                                                    +
                                                    +                        if (failed) {
                                                    +                            failedPermission = data;
                                                    +                        }
                                                    +                    })
                                                    +                );
                                                    +            }),
                                                    +            first(
                                                    +                (data: any) => {
                                                    +                    if (isFunction(permissions.redirectTo)) {
                                                    +                        return data.some((_data: boolean) => _data === true);
                                                    +                    }
                                                    +
                                                    +                    return data.every((_data: boolean) => _data === false);
                                                    +                },
                                                    +                false
                                                    +            ),
                                                    +            mergeMap((pass: boolean): Observable<boolean> => {
                                                    +                if (isFunction(permissions.redirectTo)) {
                                                    +                    if (pass) {
                                                    +                        return of(true);
                                                    +                    } else {
                                                    +                        this.handleRedirectOfFailedPermission(permissions, failedPermission, route, state);
                                                    +                        return of(false);
                                                    +                    }
                                                    +                } else {
                                                    +                    if (!!failedPermission) {
                                                    +                        this.handleRedirectOfFailedPermission(permissions, failedPermission, route, state);
                                                    +                    }
                                                    +                    return of(!pass);
                                                    +                }
                                                    +            })
                                                    +        ).toPromise();
                                                    +    }
                                                    +
                                                    +    private handleRedirectOfFailedPermission(
                                                    +        permissions: any,
                                                    +        failedPermission: string,
                                                    +        route: ActivatedRouteSnapshot | Route,
                                                    +        state?: RouterStateSnapshot
                                                    +    ) {
                                                    +        if (this.isFailedPermissionPropertyOfRedirectTo(permissions, failedPermission)) {
                                                    +            this.redirectToAnotherRoute((<any>permissions.redirectTo)[failedPermission], route, state, failedPermission);
                                                    +        } else {
                                                    +            if (isFunction(permissions.redirectTo)) {
                                                    +                this.redirectToAnotherRoute((<any>permissions.redirectTo), route, state, failedPermission);
                                                    +            } else {
                                                    +                this.redirectToAnotherRoute((<any>permissions.redirectTo)['default'], route, state, failedPermission);
                                                    +            }
                                                    +        }
                                                    +    }
                                                    +
                                                    +    private isFailedPermissionPropertyOfRedirectTo(permissions: any, failedPermission: string) {
                                                    +        return !!permissions.redirectTo && permissions.redirectTo[<any>failedPermission];
                                                    +    }
                                                    +
                                                    +    private checkOnlyPermissions(purePermissions: any, route: ActivatedRouteSnapshot | Route, state?: RouterStateSnapshot) {
                                                    +        let permissions: NgxPermissionsRouterData = {
                                                    +            ...purePermissions
                                                    +        };
                                                    +
                                                    +        return Promise.all([
                                                    +            this.permissionsService.hasPermission(<string | string[]>permissions.only),
                                                    +            this.rolesService.hasOnlyRoles(<string | string[]>permissions.only)
                                                    +        ]).then(([permissionsPr, roles]) => {
                                                    +            if (permissionsPr || roles) {
                                                    +                return true;
                                                    +            } else {
                                                    +                if (permissions.redirectTo) {
                                                    +                    this.redirectToAnotherRoute(permissions.redirectTo, route, state);
                                                    +                    return false;
                                                    +                } else {
                                                    +                    return false;
                                                    +                }
                                                    +            }
                                                    +        });
                                                    +    }
                                                    +
                                                    +    private passingOnlyPermissionsValidation(
                                                    +        permissions: NgxPermissionsRouterData, route: ActivatedRouteSnapshot | Route, state?: RouterStateSnapshot) {
                                                    +        if ((isFunction(permissions.redirectTo) ||
                                                    +            isPlainObject(permissions.redirectTo) && !this.isRedirectionWithParameters(permissions.redirectTo))) {
                                                    +            return this.onlyRedirectCheck(permissions, route, state);
                                                    +        }
                                                    +        return this.checkOnlyPermissions(permissions, route, state);
                                                    +    }
                                                    +
                                                    +}
                                                    +
                                                    +
                                                    +
                                                    + + + + +
                                                    +
                                                    +

                                                    results matching ""

                                                    +
                                                      +
                                                      +
                                                      +

                                                      No results matching ""

                                                      +
                                                      +
                                                      +
                                                      +
                                                      +
                                                      + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/js/compodoc.js b/docs/js/compodoc.js new file mode 100644 index 0000000..8cc41d3 --- /dev/null +++ b/docs/js/compodoc.js @@ -0,0 +1,14 @@ +var compodoc = { + EVENTS: { + READY: 'compodoc.ready', + SEARCH_READY: 'compodoc.search.ready' + } +}; + +Object.assign( compodoc, EventDispatcher.prototype ); + +document.addEventListener('DOMContentLoaded', function() { + compodoc.dispatchEvent({ + type: compodoc.EVENTS.READY + }); +}); diff --git a/docs/js/libs/EventDispatcher.js b/docs/js/libs/EventDispatcher.js new file mode 100644 index 0000000..b729f0d --- /dev/null +++ b/docs/js/libs/EventDispatcher.js @@ -0,0 +1,96 @@ +/** + * @author mrdoob / http://mrdoob.com/ + */ + +var EventDispatcher = function () {}; + +Object.assign( EventDispatcher.prototype, { + + addEventListener: function ( type, listener ) { + + if ( this._listeners === undefined ) this._listeners = {}; + + var listeners = this._listeners; + + if ( listeners[ type ] === undefined ) { + + listeners[ type ] = []; + + } + + if ( listeners[ type ].indexOf( listener ) === - 1 ) { + + listeners[ type ].push( listener ); + + } + + }, + + hasEventListener: function ( type, listener ) { + + if ( this._listeners === undefined ) return false; + + var listeners = this._listeners; + + if ( listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1 ) { + + return true; + + } + + return false; + + }, + + removeEventListener: function ( type, listener ) { + + if ( this._listeners === undefined ) return; + + var listeners = this._listeners; + var listenerArray = listeners[ type ]; + + if ( listenerArray !== undefined ) { + + var index = listenerArray.indexOf( listener ); + + if ( index !== - 1 ) { + + listenerArray.splice( index, 1 ); + + } + + } + + }, + + dispatchEvent: function ( event ) { + + if ( this._listeners === undefined ) return; + + var listeners = this._listeners; + var listenerArray = listeners[ event.type ]; + + if ( listenerArray !== undefined ) { + + event.target = this; + + var array = [], i = 0; + var length = listenerArray.length; + + for ( i = 0; i < length; i ++ ) { + + array[ i ] = listenerArray[ i ]; + + } + + for ( i = 0; i < length; i ++ ) { + + array[ i ].call( this, event ); + + } + + } + + } + +} ); diff --git a/docs/js/libs/bootstrap-native.js b/docs/js/libs/bootstrap-native.js new file mode 100644 index 0000000..b4e2215 --- /dev/null +++ b/docs/js/libs/bootstrap-native.js @@ -0,0 +1,292 @@ +// Native Javascript for Bootstrap 3 v1.1.0 | © dnp_theme | MIT-License +(function(root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD support: + define([], factory); + } else if (typeof module === 'object' && module.exports) { + // CommonJS-like: + module.exports = factory(); + } else { + // Browser globals (root is window) + var bsn = factory(); + root.Affix = bsn.Affix; + root.Alert = bsn.Alert; + root.Button = bsn.Button; + root.Carousel = bsn.Carousel; + root.Collapse = bsn.Collapse; + root.Dropdown = bsn.Dropdown; + root.Modal = bsn.Modal; + root.Popover = bsn.Popover; + root.ScrollSpy = bsn.ScrollSpy; + root.Tab = bsn.Tab; + root.Tooltip = bsn.Tooltip; + } +}(this, function() { + // Native Javascript for Bootstrap 3 | Internal Utility Functions + // by dnp_theme + var addClass = function(el, c) { // where modern browsers fail, use classList + if (el.classList) { + el.classList.add(c); + } else { + el.className += ' ' + c; + el.offsetWidth; + } + }, + removeClass = function(el, c) { + if (el.classList) { + el.classList.remove(c); + } else { + el.className = el.className.replace(c, '').replace(/^\s+|\s+$/g, ''); + } + }, + isIE = (new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})").exec(navigator.userAgent) != null) ? parseFloat(RegExp.$1) : false, + getClosest = function(el, s) { //el is the element and s the selector of the closest item to find + // source http://gomakethings.com/climbing-up-and-down-the-dom-tree-with-vanilla-javascript/ + var f = s.charAt(0); + for (; el && el !== document; el = el.parentNode) { // Get closest match + if (f === '.') { // If selector is a class + if (document.querySelector(s) !== undefined) { + return el; + } + } + if (f === '#') { // If selector is an ID + if (el.id === s.substr(1)) { + return el; + } + } + } + return false; + }, + + + // tooltip / popover stuff + isElementInViewport = function(t) { // check if this.tooltip is in viewport + var r = t.getBoundingClientRect(); + return ( + r.top >= 0 && r.left >= 0 && r.bottom <= (window.innerHeight || document.documentElement.clientHeight) && r.right <= (window.innerWidth || document.documentElement.clientWidth)) + }, + getScroll = function() { // also Affix and scrollSpy uses it + return { + y: window.pageYOffset || document.documentElement.scrollTop, + x: window.pageXOffset || document.documentElement.scrollLeft + } + }, + mouseHover = ('onmouseleave' in document) ? ['mouseenter', 'mouseleave'] : ['mouseover', 'mouseout'], + tipPositions = /\b(top|bottom|left|top)+/; + + + // Native Javascript for Bootstrap 3 | Collapse + // by dnp_theme + // COLLAPSE DEFINITION + // =================== + var Collapse = function(element, options) { + options = options || {}; + + this.btn = typeof element === 'object' ? element : document.querySelector(element); + this.accordion = null; + this.collapse = null; + this.duration = 300; // default collapse transition duration + this.options = {}; + this.options.duration = (isIE && isIE < 10) ? 0 : (options.duration || this.duration); + var self = this; + var getOuterHeight = function(el) { + var s = el && (el.currentStyle || window.getComputedStyle(el)), + // the getComputedStyle polyfill would do this for us, but we want to make sure it does + btp = /px/.test(s.borderTopWidth) ? Math.round(s.borderTopWidth.replace('px', '')) : 0, + mtp = /px/.test(s.marginTop) ? Math.round(s.marginTop.replace('px', '')) : 0, + mbp = /px/.test(s.marginBottom) ? Math.round(s.marginBottom.replace('px', '')) : 0, + mte = /em/.test(s.marginTop) ? Math.round(s.marginTop.replace('em', '') * parseInt(s.fontSize)) : 0, + mbe = /em/.test(s.marginBottom) ? Math.round(s.marginBottom.replace('em', '') * parseInt(s.fontSize)) : 0; + return el.clientHeight + parseInt(btp) + parseInt(mtp) + parseInt(mbp) + parseInt(mte) + parseInt(mbe); //we need an accurate margin value + }; + + this.toggle = function(e) { + e.preventDefault(); + + if (!/\bin/.test(self.collapse.className)) { + self.open(); + } else { + self.close(); + } + }; + this.close = function() { + this._close(this.collapse); + addClass(this.btn, 'collapsed'); + }; + this.open = function() { + this._open(this.collapse); + removeClass(this.btn, 'collapsed'); + + if (this.accordion !== null) { + var active = this.accordion.querySelectorAll('.collapse.in'), + al = active.length, + i = 0; + for (i; i < al; i++) { + if (active[i] !== this.collapse) this._close(active[i]); + } + } + }; + this._open = function(c) { + this.removeEvent(); + addClass(c, 'in'); + c.setAttribute('aria-expanded', 'true'); + addClass(c, 'collapsing'); + setTimeout(function() { + c.style.height = self.getMaxHeight(c) + 'px' + c.style.overflowY = 'hidden'; + }, 0); + setTimeout(function() { + c.style.height = ''; + c.style.overflowY = ''; + removeClass(c, 'collapsing'); + self.addEvent(); + }, this.options.duration); + }; + this._close = function(c) { + this.removeEvent(); + c.setAttribute('aria-expanded', 'false'); + c.style.height = this.getMaxHeight(c) + 'px' + setTimeout(function() { + c.style.height = '0px'; + c.style.overflowY = 'hidden'; + addClass(c, 'collapsing'); + }, 0); + + setTimeout(function() { + removeClass(c, 'collapsing'); + removeClass(c, 'in'); + c.style.overflowY = ''; + c.style.height = ''; + self.addEvent(); + }, this.options.duration); + }; + this.getMaxHeight = function(l) { // get collapse trueHeight and border + var h = 0; + for (var k = 0, ll = l.children.length; k < ll; k++) { + h += getOuterHeight(l.children[k]); + } + return h; + }; + this.removeEvent = function() { + this.btn.removeEventListener('click', this.toggle, false); + }; + this.addEvent = function() { + this.btn.addEventListener('click', this.toggle, false); + }; + this.getTarget = function() { + var t = this.btn, + h = t.href && t.getAttribute('href').replace('#', ''), + d = t.getAttribute('data-target') && (t.getAttribute('data-target')), + id = h || (d && /#/.test(d)) && d.replace('#', ''), + cl = (d && d.charAt(0) === '.') && d, + //the navbar collapse trigger targets a class + c = id && document.getElementById(id) || cl && document.querySelector(cl); + return c; + }; + + // init + this.addEvent(); + this.collapse = this.getTarget(); + this.accordion = this.btn.getAttribute('data-parent') && getClosest(this.btn, this.btn.getAttribute('data-parent')); + }; + + // COLLAPSE DATA API + // ================= + var Collapses = document.querySelectorAll('[data-toggle="collapse"]'); + for (var o = 0, cll = Collapses.length; o < cll; o++) { + var collapse = Collapses[o], + options = {}; + options.duration = collapse.getAttribute('data-duration'); + new Collapse(collapse, options); + } + + // Native Javascript for Bootstrap 3 | Tab + // by dnp_theme + + // TAB DEFINITION + // =================== + var Tab = function( element,options ) { + options = options || {}; + this.tab = typeof element === 'object' ? element : document.querySelector(element); + this.tabs = this.tab.parentNode.parentNode; + this.dropdown = this.tabs.querySelector('.dropdown'); + if ( /\bdropdown-menu/.test(this.tabs.className) ) { + this.dropdown = this.tabs.parentNode; + this.tabs = this.tabs.parentNode.parentNode; + } + this.options = options; + + // default tab transition duration + this.duration = 150; + this.options.duration = (isIE && isIE < 10) ? 0 : (options.duration || this.duration); + + var self = this; + + this.handle = function(e) { + e = e || window.e; e.preventDefault(); + var next = e.target; //the tab we clicked is now the next tab + var nextContent = document.getElementById(next.getAttribute('href').replace('#','')); //this is the actual object, the next tab content to activate + + // get current active tab and content + var activeTab = self.getActiveTab(); + var activeContent = self.getActiveContent(); + + if ( !/\bactive/.test(next.parentNode.className) ) { + // toggle "active" class name + removeClass(activeTab,'active'); + addClass(next.parentNode,'active'); + + // handle dropdown menu "active" class name + if ( self.dropdown ) { + if ( !(/\bdropdown-menu/.test(self.tab.parentNode.parentNode.className)) ) { + if (/\bactive/.test(self.dropdown.className)) removeClass(self.dropdown,'active'); + } else { + if (!/\bactive/.test(self.dropdown.className)) addClass(self.dropdown,'active'); + } + } + + //1. hide current active content first + removeClass(activeContent,'in'); + + setTimeout(function() { + //2. toggle current active content from view + removeClass(activeContent,'active'); + addClass(nextContent,'active'); + }, self.options.duration); + setTimeout(function() { + //3. show next active content + addClass(nextContent,'in'); + }, self.options.duration*2); + } + }; + this.getActiveTab = function() { + var activeTabs = this.tabs.querySelectorAll('.active'); + if ( activeTabs.length === 1 && !/\bdropdown/.test(activeTabs[0].className) ) { + return activeTabs[0] + } else if ( activeTabs.length > 1 ) { + return activeTabs[activeTabs.length-1] + } + }; + this.getActiveContent = function() { + var active = this.getActiveTab().getElementsByTagName('A')[0].getAttribute('href').replace('#',''); + return active && document.getElementById(active) + }; + + // init + this.tab.addEventListener('click', this.handle, false); + }; + + // TAB DATA API + // ================= + var Tabs = document.querySelectorAll("[data-toggle='tab'], [data-toggle='pill']"); + for ( var tb = 0, tbl = Tabs.length; tbn?-1:n>t?1:n>=t?0:0/0}function r(n){return null===n?0/0:+n}function u(n){return!isNaN(n)}function i(n){return{left:function(t,e,r,u){for(arguments.length<3&&(r=0),arguments.length<4&&(u=t.length);u>r;){var i=r+u>>>1;n(t[i],e)<0?r=i+1:u=i}return r},right:function(t,e,r,u){for(arguments.length<3&&(r=0),arguments.length<4&&(u=t.length);u>r;){var i=r+u>>>1;n(t[i],e)>0?u=i:r=i+1}return r}}}function o(n){return n.length}function a(n){for(var t=1;n*t%1;)t*=10;return t}function l(n,t){for(var e in t)Object.defineProperty(n.prototype,e,{value:t[e],enumerable:!1})}function c(){this._=Object.create(null)}function s(n){return(n+="")===ca||n[0]===sa?sa+n:n}function f(n){return(n+="")[0]===sa?n.slice(1):n}function h(n){return s(n)in this._}function g(n){return(n=s(n))in this._&&delete this._[n]}function p(){var n=[];for(var t in this._)n.push(f(t));return n}function d(){var n=0;for(var t in this._)++n;return n}function v(){for(var n in this._)return!1;return!0}function m(){this._=Object.create(null)}function y(n){return n}function M(n,t,e){return function(){var r=e.apply(t,arguments);return r===t?n:r}}function x(n,t){if(t in n)return t;t=t.charAt(0).toUpperCase()+t.slice(1);for(var e=0,r=fa.length;r>e;++e){var u=fa[e]+t;if(u in n)return u}}function _(){}function b(){}function w(n){function t(){for(var t,r=e,u=-1,i=r.length;++ue;e++)for(var u,i=n[e],o=0,a=i.length;a>o;o++)(u=i[o])&&t(u,o,e);return n}function Z(n){return ga(n,Ma),n}function V(n){var t,e;return function(r,u,i){var o,a=n[i].update,l=a.length;for(i!=e&&(e=i,t=0),u>=t&&(t=u+1);!(o=a[t])&&++t0&&(n=n.slice(0,a));var c=xa.get(n);return c&&(n=c,l=B),a?t?u:r:t?_:i}function $(n,t){return function(e){var r=Jo.event;Jo.event=e,t[0]=this.__data__;try{n.apply(this,t)}finally{Jo.event=r}}}function B(n,t){var e=$(n,t);return function(n){var t=this,r=n.relatedTarget;r&&(r===t||8&r.compareDocumentPosition(t))||e.call(t,n)}}function W(e){var r=".dragsuppress-"+ ++ba,u="click"+r,i=Jo.select(t(e)).on("touchmove"+r,S).on("dragstart"+r,S).on("selectstart"+r,S);if(null==_a&&(_a="onselectstart"in e?!1:x(e.style,"userSelect")),_a){var o=n(e).style,a=o[_a];o[_a]="none"}return function(n){if(i.on(r,null),_a&&(o[_a]=a),n){var t=function(){i.on(u,null)};i.on(u,function(){S(),t()},!0),setTimeout(t,0)}}}function J(n,e){e.changedTouches&&(e=e.changedTouches[0]);var r=n.ownerSVGElement||n;if(r.createSVGPoint){var u=r.createSVGPoint();if(0>wa){var i=t(n);if(i.scrollX||i.scrollY){r=Jo.select("body").append("svg").style({position:"absolute",top:0,left:0,margin:0,padding:0,border:"none"},"important");var o=r[0][0].getScreenCTM();wa=!(o.f||o.e),r.remove()}}return wa?(u.x=e.pageX,u.y=e.pageY):(u.x=e.clientX,u.y=e.clientY),u=u.matrixTransform(n.getScreenCTM().inverse()),[u.x,u.y]}var a=n.getBoundingClientRect();return[e.clientX-a.left-n.clientLeft,e.clientY-a.top-n.clientTop]}function G(){return Jo.event.changedTouches[0].identifier}function K(n){return n>0?1:0>n?-1:0}function Q(n,t,e){return(t[0]-n[0])*(e[1]-n[1])-(t[1]-n[1])*(e[0]-n[0])}function nt(n){return n>1?0:-1>n?Ea:Math.acos(n)}function tt(n){return n>1?Ca:-1>n?-Ca:Math.asin(n)}function et(n){return((n=Math.exp(n))-1/n)/2}function rt(n){return((n=Math.exp(n))+1/n)/2}function ut(n){return((n=Math.exp(2*n))-1)/(n+1)}function it(n){return(n=Math.sin(n/2))*n}function ot(){}function at(n,t,e){return this instanceof at?(this.h=+n,this.s=+t,void(this.l=+e)):arguments.length<2?n instanceof at?new at(n.h,n.s,n.l):_t(""+n,bt,at):new at(n,t,e)}function lt(n,t,e){function r(n){return n>360?n-=360:0>n&&(n+=360),60>n?i+(o-i)*n/60:180>n?o:240>n?i+(o-i)*(240-n)/60:i}function u(n){return Math.round(255*r(n))}var i,o;return n=isNaN(n)?0:(n%=360)<0?n+360:n,t=isNaN(t)?0:0>t?0:t>1?1:t,e=0>e?0:e>1?1:e,o=.5>=e?e*(1+t):e+t-e*t,i=2*e-o,new mt(u(n+120),u(n),u(n-120))}function ct(n,t,e){return this instanceof ct?(this.h=+n,this.c=+t,void(this.l=+e)):arguments.length<2?n instanceof ct?new ct(n.h,n.c,n.l):n instanceof ft?gt(n.l,n.a,n.b):gt((n=wt((n=Jo.rgb(n)).r,n.g,n.b)).l,n.a,n.b):new ct(n,t,e)}function st(n,t,e){return isNaN(n)&&(n=0),isNaN(t)&&(t=0),new ft(e,Math.cos(n*=za)*t,Math.sin(n)*t)}function ft(n,t,e){return this instanceof ft?(this.l=+n,this.a=+t,void(this.b=+e)):arguments.length<2?n instanceof ft?new ft(n.l,n.a,n.b):n instanceof ct?st(n.h,n.c,n.l):wt((n=mt(n)).r,n.g,n.b):new ft(n,t,e)}function ht(n,t,e){var r=(n+16)/116,u=r+t/500,i=r-e/200;return u=pt(u)*Oa,r=pt(r)*Ya,i=pt(i)*Ia,new mt(vt(3.2404542*u-1.5371385*r-.4985314*i),vt(-.969266*u+1.8760108*r+.041556*i),vt(.0556434*u-.2040259*r+1.0572252*i))}function gt(n,t,e){return n>0?new ct(Math.atan2(e,t)*qa,Math.sqrt(t*t+e*e),n):new ct(0/0,0/0,n)}function pt(n){return n>.206893034?n*n*n:(n-4/29)/7.787037}function dt(n){return n>.008856?Math.pow(n,1/3):7.787037*n+4/29}function vt(n){return Math.round(255*(.00304>=n?12.92*n:1.055*Math.pow(n,1/2.4)-.055))}function mt(n,t,e){return this instanceof mt?(this.r=~~n,this.g=~~t,void(this.b=~~e)):arguments.length<2?n instanceof mt?new mt(n.r,n.g,n.b):_t(""+n,mt,lt):new mt(n,t,e)}function yt(n){return new mt(n>>16,n>>8&255,255&n)}function Mt(n){return yt(n)+""}function xt(n){return 16>n?"0"+Math.max(0,n).toString(16):Math.min(255,n).toString(16)}function _t(n,t,e){var r,u,i,o=0,a=0,l=0;if(r=/([a-z]+)\((.*)\)/.exec(n=n.toLowerCase()))switch(u=r[2].split(","),r[1]){case"hsl":return e(parseFloat(u[0]),parseFloat(u[1])/100,parseFloat(u[2])/100);case"rgb":return t(kt(u[0]),kt(u[1]),kt(u[2]))}return(i=Xa.get(n))?t(i.r,i.g,i.b):(null==n||"#"!==n.charAt(0)||isNaN(i=parseInt(n.slice(1),16))||(4===n.length?(o=(3840&i)>>4,o=o>>4|o,a=240&i,a=a>>4|a,l=15&i,l=l<<4|l):7===n.length&&(o=(16711680&i)>>16,a=(65280&i)>>8,l=255&i)),t(o,a,l))}function bt(n,t,e){var r,u,i=Math.min(n/=255,t/=255,e/=255),o=Math.max(n,t,e),a=o-i,l=(o+i)/2;return a?(u=.5>l?a/(o+i):a/(2-o-i),r=n==o?(t-e)/a+(e>t?6:0):t==o?(e-n)/a+2:(n-t)/a+4,r*=60):(r=0/0,u=l>0&&1>l?0:r),new at(r,u,l)}function wt(n,t,e){n=St(n),t=St(t),e=St(e);var r=dt((.4124564*n+.3575761*t+.1804375*e)/Oa),u=dt((.2126729*n+.7151522*t+.072175*e)/Ya),i=dt((.0193339*n+.119192*t+.9503041*e)/Ia);return ft(116*u-16,500*(r-u),200*(u-i))}function St(n){return(n/=255)<=.04045?n/12.92:Math.pow((n+.055)/1.055,2.4)}function kt(n){var t=parseFloat(n);return"%"===n.charAt(n.length-1)?Math.round(2.55*t):t}function Et(n){return"function"==typeof n?n:function(){return n}}function At(n){return function(t,e,r){return 2===arguments.length&&"function"==typeof e&&(r=e,e=null),Nt(t,e,n,r)}}function Nt(n,t,e,r){function u(){var n,t=l.status;if(!t&&zt(l)||t>=200&&300>t||304===t){try{n=e.call(i,l)}catch(r){return void o.error.call(i,r)}o.load.call(i,n)}else o.error.call(i,l)}var i={},o=Jo.dispatch("beforesend","progress","load","error"),a={},l=new XMLHttpRequest,c=null;return!this.XDomainRequest||"withCredentials"in l||!/^(http(s)?:)?\/\//.test(n)||(l=new XDomainRequest),"onload"in l?l.onload=l.onerror=u:l.onreadystatechange=function(){l.readyState>3&&u()},l.onprogress=function(n){var t=Jo.event;Jo.event=n;try{o.progress.call(i,l)}finally{Jo.event=t}},i.header=function(n,t){return n=(n+"").toLowerCase(),arguments.length<2?a[n]:(null==t?delete a[n]:a[n]=t+"",i)},i.mimeType=function(n){return arguments.length?(t=null==n?null:n+"",i):t},i.responseType=function(n){return arguments.length?(c=n,i):c},i.response=function(n){return e=n,i},["get","post"].forEach(function(n){i[n]=function(){return i.send.apply(i,[n].concat(Ko(arguments)))}}),i.send=function(e,r,u){if(2===arguments.length&&"function"==typeof r&&(u=r,r=null),l.open(e,n,!0),null==t||"accept"in a||(a.accept=t+",*/*"),l.setRequestHeader)for(var s in a)l.setRequestHeader(s,a[s]);return null!=t&&l.overrideMimeType&&l.overrideMimeType(t),null!=c&&(l.responseType=c),null!=u&&i.on("error",u).on("load",function(n){u(null,n)}),o.beforesend.call(i,l),l.send(null==r?null:r),i},i.abort=function(){return l.abort(),i},Jo.rebind(i,o,"on"),null==r?i:i.get(Ct(r))}function Ct(n){return 1===n.length?function(t,e){n(null==t?e:null)}:n}function zt(n){var t=n.responseType;return t&&"text"!==t?n.response:n.responseText}function qt(){var n=Lt(),t=Tt()-n;t>24?(isFinite(t)&&(clearTimeout(Ja),Ja=setTimeout(qt,t)),Wa=0):(Wa=1,Ka(qt))}function Lt(){var n=Date.now();for(Ga=$a;Ga;)n>=Ga.t&&(Ga.f=Ga.c(n-Ga.t)),Ga=Ga.n;return n}function Tt(){for(var n,t=$a,e=1/0;t;)t.f?t=n?n.n=t.n:$a=t.n:(t.t8?function(n){return n/e}:function(n){return n*e},symbol:n}}function Pt(n){var t=n.decimal,e=n.thousands,r=n.grouping,u=n.currency,i=r&&e?function(n,t){for(var u=n.length,i=[],o=0,a=r[0],l=0;u>0&&a>0&&(l+a+1>t&&(a=Math.max(1,t-l)),i.push(n.substring(u-=a,u+a)),!((l+=a+1)>t));)a=r[o=(o+1)%r.length];return i.reverse().join(e)}:y;return function(n){var e=nl.exec(n),r=e[1]||" ",o=e[2]||">",a=e[3]||"-",l=e[4]||"",c=e[5],s=+e[6],f=e[7],h=e[8],g=e[9],p=1,d="",v="",m=!1,y=!0;switch(h&&(h=+h.substring(1)),(c||"0"===r&&"="===o)&&(c=r="0",o="="),g){case"n":f=!0,g="g";break;case"%":p=100,v="%",g="f";break;case"p":p=100,v="%",g="r";break;case"b":case"o":case"x":case"X":"#"===l&&(d="0"+g.toLowerCase());case"c":y=!1;case"d":m=!0,h=0;break;case"s":p=-1,g="r"}"$"===l&&(d=u[0],v=u[1]),"r"!=g||h||(g="g"),null!=h&&("g"==g?h=Math.max(1,Math.min(21,h)):("e"==g||"f"==g)&&(h=Math.max(0,Math.min(20,h)))),g=tl.get(g)||jt;var M=c&&f;return function(n){var e=v;if(m&&n%1)return"";var u=0>n||0===n&&0>1/n?(n=-n,"-"):"-"===a?"":a;if(0>p){var l=Jo.formatPrefix(n,h);n=l.scale(n),e=l.symbol+v}else n*=p;n=g(n,h);var x,_,b=n.lastIndexOf(".");if(0>b){var w=y?n.lastIndexOf("e"):-1;0>w?(x=n,_=""):(x=n.substring(0,w),_=n.substring(w))}else x=n.substring(0,b),_=t+n.substring(b+1);!c&&f&&(x=i(x,1/0));var S=d.length+x.length+_.length+(M?0:u.length),k=s>S?new Array(S=s-S+1).join(r):"";return M&&(x=i(k+x,k.length?s-_.length:1/0)),u+=d,n=x+_,("<"===o?u+n+k:">"===o?k+u+n:"^"===o?k.substring(0,S>>=1)+u+n+k.substring(S):u+(M?n:k+n))+e}}}function jt(n){return n+""}function Ut(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}function Ft(n,t,e){function r(t){var e=n(t),r=i(e,1);return r-t>t-e?e:r}function u(e){return t(e=n(new rl(e-1)),1),e}function i(n,e){return t(n=new rl(+n),e),n}function o(n,r,i){var o=u(n),a=[];if(i>1)for(;r>o;)e(o)%i||a.push(new Date(+o)),t(o,1);else for(;r>o;)a.push(new Date(+o)),t(o,1);return a}function a(n,t,e){try{rl=Ut;var r=new Ut;return r._=n,o(r,t,e)}finally{rl=Date}}n.floor=n,n.round=r,n.ceil=u,n.offset=i,n.range=o;var l=n.utc=Ht(n);return l.floor=l,l.round=Ht(r),l.ceil=Ht(u),l.offset=Ht(i),l.range=a,n}function Ht(n){return function(t,e){try{rl=Ut;var r=new Ut;return r._=t,n(r,e)._}finally{rl=Date}}}function Ot(n){function t(n){function t(t){for(var e,u,i,o=[],a=-1,l=0;++aa;){if(r>=c)return-1;if(u=t.charCodeAt(a++),37===u){if(o=t.charAt(a++),i=C[o in il?t.charAt(a++):o],!i||(r=i(n,e,r))<0)return-1}else if(u!=e.charCodeAt(r++))return-1}return r}function r(n,t,e){b.lastIndex=0;var r=b.exec(t.slice(e));return r?(n.w=w.get(r[0].toLowerCase()),e+r[0].length):-1}function u(n,t,e){x.lastIndex=0;var r=x.exec(t.slice(e));return r?(n.w=_.get(r[0].toLowerCase()),e+r[0].length):-1}function i(n,t,e){E.lastIndex=0;var r=E.exec(t.slice(e));return r?(n.m=A.get(r[0].toLowerCase()),e+r[0].length):-1}function o(n,t,e){S.lastIndex=0;var r=S.exec(t.slice(e));return r?(n.m=k.get(r[0].toLowerCase()),e+r[0].length):-1}function a(n,t,r){return e(n,N.c.toString(),t,r)}function l(n,t,r){return e(n,N.x.toString(),t,r)}function c(n,t,r){return e(n,N.X.toString(),t,r)}function s(n,t,e){var r=M.get(t.slice(e,e+=2).toLowerCase());return null==r?-1:(n.p=r,e)}var f=n.dateTime,h=n.date,g=n.time,p=n.periods,d=n.days,v=n.shortDays,m=n.months,y=n.shortMonths;t.utc=function(n){function e(n){try{rl=Ut;var t=new rl;return t._=n,r(t)}finally{rl=Date}}var r=t(n);return e.parse=function(n){try{rl=Ut;var t=r.parse(n);return t&&t._}finally{rl=Date}},e.toString=r.toString,e},t.multi=t.utc.multi=ae;var M=Jo.map(),x=It(d),_=Zt(d),b=It(v),w=Zt(v),S=It(m),k=Zt(m),E=It(y),A=Zt(y);p.forEach(function(n,t){M.set(n.toLowerCase(),t)});var N={a:function(n){return v[n.getDay()]},A:function(n){return d[n.getDay()]},b:function(n){return y[n.getMonth()]},B:function(n){return m[n.getMonth()]},c:t(f),d:function(n,t){return Yt(n.getDate(),t,2)},e:function(n,t){return Yt(n.getDate(),t,2)},H:function(n,t){return Yt(n.getHours(),t,2)},I:function(n,t){return Yt(n.getHours()%12||12,t,2)},j:function(n,t){return Yt(1+el.dayOfYear(n),t,3)},L:function(n,t){return Yt(n.getMilliseconds(),t,3)},m:function(n,t){return Yt(n.getMonth()+1,t,2)},M:function(n,t){return Yt(n.getMinutes(),t,2)},p:function(n){return p[+(n.getHours()>=12)]},S:function(n,t){return Yt(n.getSeconds(),t,2)},U:function(n,t){return Yt(el.sundayOfYear(n),t,2)},w:function(n){return n.getDay()},W:function(n,t){return Yt(el.mondayOfYear(n),t,2)},x:t(h),X:t(g),y:function(n,t){return Yt(n.getFullYear()%100,t,2)},Y:function(n,t){return Yt(n.getFullYear()%1e4,t,4)},Z:ie,"%":function(){return"%"}},C={a:r,A:u,b:i,B:o,c:a,d:Qt,e:Qt,H:te,I:te,j:ne,L:ue,m:Kt,M:ee,p:s,S:re,U:Xt,w:Vt,W:$t,x:l,X:c,y:Wt,Y:Bt,Z:Jt,"%":oe};return t}function Yt(n,t,e){var r=0>n?"-":"",u=(r?-n:n)+"",i=u.length;return r+(e>i?new Array(e-i+1).join(t)+u:u)}function It(n){return new RegExp("^(?:"+n.map(Jo.requote).join("|")+")","i")}function Zt(n){for(var t=new c,e=-1,r=n.length;++e68?1900:2e3)}function Kt(n,t,e){ol.lastIndex=0;var r=ol.exec(t.slice(e,e+2));return r?(n.m=r[0]-1,e+r[0].length):-1}function Qt(n,t,e){ol.lastIndex=0;var r=ol.exec(t.slice(e,e+2));return r?(n.d=+r[0],e+r[0].length):-1}function ne(n,t,e){ol.lastIndex=0;var r=ol.exec(t.slice(e,e+3));return r?(n.j=+r[0],e+r[0].length):-1}function te(n,t,e){ol.lastIndex=0;var r=ol.exec(t.slice(e,e+2));return r?(n.H=+r[0],e+r[0].length):-1}function ee(n,t,e){ol.lastIndex=0;var r=ol.exec(t.slice(e,e+2));return r?(n.M=+r[0],e+r[0].length):-1}function re(n,t,e){ol.lastIndex=0;var r=ol.exec(t.slice(e,e+2));return r?(n.S=+r[0],e+r[0].length):-1}function ue(n,t,e){ol.lastIndex=0;var r=ol.exec(t.slice(e,e+3));return r?(n.L=+r[0],e+r[0].length):-1}function ie(n){var t=n.getTimezoneOffset(),e=t>0?"-":"+",r=la(t)/60|0,u=la(t)%60;return e+Yt(r,"0",2)+Yt(u,"0",2)}function oe(n,t,e){al.lastIndex=0;var r=al.exec(t.slice(e,e+1));return r?e+r[0].length:-1}function ae(n){for(var t=n.length,e=-1;++e=0?1:-1,a=o*e,l=Math.cos(t),c=Math.sin(t),s=i*c,f=u*l+s*Math.cos(a),h=s*o*Math.sin(a);gl.add(Math.atan2(h,f)),r=n,u=l,i=c}var t,e,r,u,i;pl.point=function(o,a){pl.point=n,r=(t=o)*za,u=Math.cos(a=(e=a)*za/2+Ea/4),i=Math.sin(a)},pl.lineEnd=function(){n(t,e)}}function pe(n){var t=n[0],e=n[1],r=Math.cos(e);return[r*Math.cos(t),r*Math.sin(t),Math.sin(e)]}function de(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]}function ve(n,t){return[n[1]*t[2]-n[2]*t[1],n[2]*t[0]-n[0]*t[2],n[0]*t[1]-n[1]*t[0]]}function me(n,t){n[0]+=t[0],n[1]+=t[1],n[2]+=t[2]}function ye(n,t){return[n[0]*t,n[1]*t,n[2]*t]}function Me(n){var t=Math.sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]);n[0]/=t,n[1]/=t,n[2]/=t}function xe(n){return[Math.atan2(n[1],n[0]),tt(n[2])]}function _e(n,t){return la(n[0]-t[0])a;++a)u.point((e=n[a])[0],e[1]);return void u.lineEnd()}var l=new qe(e,n,null,!0),c=new qe(e,null,l,!1);l.o=c,i.push(l),o.push(c),l=new qe(r,n,null,!1),c=new qe(r,null,l,!0),l.o=c,i.push(l),o.push(c)}}),o.sort(t),ze(i),ze(o),i.length){for(var a=0,l=e,c=o.length;c>a;++a)o[a].e=l=!l;for(var s,f,h=i[0];;){for(var g=h,p=!0;g.v;)if((g=g.n)===h)return;s=g.z,u.lineStart();do{if(g.v=g.o.v=!0,g.e){if(p)for(var a=0,c=s.length;c>a;++a)u.point((f=s[a])[0],f[1]);else r(g.x,g.n.x,1,u);g=g.n}else{if(p){s=g.p.z;for(var a=s.length-1;a>=0;--a)u.point((f=s[a])[0],f[1])}else r(g.x,g.p.x,-1,u);g=g.p}g=g.o,s=g.z,p=!p}while(!g.v);u.lineEnd()}}}function ze(n){if(t=n.length){for(var t,e,r=0,u=n[0];++r0){for(_||(i.polygonStart(),_=!0),i.lineStart();++o1&&2&t&&e.push(e.pop().concat(e.shift())),g.push(e.filter(Te))}var g,p,d,v=t(i),m=u.invert(r[0],r[1]),y={point:o,lineStart:l,lineEnd:c,polygonStart:function(){y.point=s,y.lineStart=f,y.lineEnd=h,g=[],p=[]},polygonEnd:function(){y.point=o,y.lineStart=l,y.lineEnd=c,g=Jo.merge(g);var n=Fe(m,p);g.length?(_||(i.polygonStart(),_=!0),Ce(g,De,n,e,i)):n&&(_||(i.polygonStart(),_=!0),i.lineStart(),e(null,null,1,i),i.lineEnd()),_&&(i.polygonEnd(),_=!1),g=p=null},sphere:function(){i.polygonStart(),i.lineStart(),e(null,null,1,i),i.lineEnd(),i.polygonEnd()}},M=Re(),x=t(M),_=!1;return y}}function Te(n){return n.length>1}function Re(){var n,t=[];return{lineStart:function(){t.push(n=[])},point:function(t,e){n.push([t,e])},lineEnd:_,buffer:function(){var e=t;return t=[],n=null,e},rejoin:function(){t.length>1&&t.push(t.pop().concat(t.shift()))}}}function De(n,t){return((n=n.x)[0]<0?n[1]-Ca-Sa:Ca-n[1])-((t=t.x)[0]<0?t[1]-Ca-Sa:Ca-t[1])}function Pe(n){var t,e=0/0,r=0/0,u=0/0;return{lineStart:function(){n.lineStart(),t=1},point:function(i,o){var a=i>0?Ea:-Ea,l=la(i-e);la(l-Ea)0?Ca:-Ca),n.point(u,r),n.lineEnd(),n.lineStart(),n.point(a,r),n.point(i,r),t=0):u!==a&&l>=Ea&&(la(e-u)Sa?Math.atan((Math.sin(t)*(i=Math.cos(r))*Math.sin(e)-Math.sin(r)*(u=Math.cos(t))*Math.sin(n))/(u*i*o)):(t+r)/2}function Ue(n,t,e,r){var u;if(null==n)u=e*Ca,r.point(-Ea,u),r.point(0,u),r.point(Ea,u),r.point(Ea,0),r.point(Ea,-u),r.point(0,-u),r.point(-Ea,-u),r.point(-Ea,0),r.point(-Ea,u);else if(la(n[0]-t[0])>Sa){var i=n[0]a;++a){var c=t[a],s=c.length;if(s)for(var f=c[0],h=f[0],g=f[1]/2+Ea/4,p=Math.sin(g),d=Math.cos(g),v=1;;){v===s&&(v=0),n=c[v];var m=n[0],y=n[1]/2+Ea/4,M=Math.sin(y),x=Math.cos(y),_=m-h,b=_>=0?1:-1,w=b*_,S=w>Ea,k=p*M;if(gl.add(Math.atan2(k*b*Math.sin(w),d*x+k*Math.cos(w))),i+=S?_+b*Aa:_,S^h>=e^m>=e){var E=ve(pe(f),pe(n));Me(E);var A=ve(u,E);Me(A);var N=(S^_>=0?-1:1)*tt(A[2]);(r>N||r===N&&(E[0]||E[1]))&&(o+=S^_>=0?1:-1)}if(!v++)break;h=m,p=M,d=x,f=n}}return(-Sa>i||Sa>i&&0>gl)^1&o}function He(n){function t(n,t){return Math.cos(n)*Math.cos(t)>i}function e(n){var e,i,l,c,s;return{lineStart:function(){c=l=!1,s=1},point:function(f,h){var g,p=[f,h],d=t(f,h),v=o?d?0:u(f,h):d?u(f+(0>f?Ea:-Ea),h):0;if(!e&&(c=l=d)&&n.lineStart(),d!==l&&(g=r(e,p),(_e(e,g)||_e(p,g))&&(p[0]+=Sa,p[1]+=Sa,d=t(p[0],p[1]))),d!==l)s=0,d?(n.lineStart(),g=r(p,e),n.point(g[0],g[1])):(g=r(e,p),n.point(g[0],g[1]),n.lineEnd()),e=g;else if(a&&e&&o^d){var m;v&i||!(m=r(p,e,!0))||(s=0,o?(n.lineStart(),n.point(m[0][0],m[0][1]),n.point(m[1][0],m[1][1]),n.lineEnd()):(n.point(m[1][0],m[1][1]),n.lineEnd(),n.lineStart(),n.point(m[0][0],m[0][1])))}!d||e&&_e(e,p)||n.point(p[0],p[1]),e=p,l=d,i=v},lineEnd:function(){l&&n.lineEnd(),e=null},clean:function(){return s|(c&&l)<<1}}}function r(n,t,e){var r=pe(n),u=pe(t),o=[1,0,0],a=ve(r,u),l=de(a,a),c=a[0],s=l-c*c;if(!s)return!e&&n;var f=i*l/s,h=-i*c/s,g=ve(o,a),p=ye(o,f),d=ye(a,h);me(p,d);var v=g,m=de(p,v),y=de(v,v),M=m*m-y*(de(p,p)-1);if(!(0>M)){var x=Math.sqrt(M),_=ye(v,(-m-x)/y);if(me(_,p),_=xe(_),!e)return _;var b,w=n[0],S=t[0],k=n[1],E=t[1];w>S&&(b=w,w=S,S=b);var A=S-w,N=la(A-Ea)A;if(!N&&k>E&&(b=k,k=E,E=b),C?N?k+E>0^_[1]<(la(_[0]-w)Ea^(w<=_[0]&&_[0]<=S)){var z=ye(v,(-m+x)/y);return me(z,p),[_,xe(z)]}}}function u(t,e){var r=o?n:Ea-n,u=0;return-r>t?u|=1:t>r&&(u|=2),-r>e?u|=4:e>r&&(u|=8),u}var i=Math.cos(n),o=i>0,a=la(i)>Sa,l=gr(n,6*za);return Le(t,e,l,o?[0,-n]:[-Ea,n-Ea])}function Oe(n,t,e,r){return function(u){var i,o=u.a,a=u.b,l=o.x,c=o.y,s=a.x,f=a.y,h=0,g=1,p=s-l,d=f-c;if(i=n-l,p||!(i>0)){if(i/=p,0>p){if(h>i)return;g>i&&(g=i)}else if(p>0){if(i>g)return;i>h&&(h=i)}if(i=e-l,p||!(0>i)){if(i/=p,0>p){if(i>g)return;i>h&&(h=i)}else if(p>0){if(h>i)return;g>i&&(g=i)}if(i=t-c,d||!(i>0)){if(i/=d,0>d){if(h>i)return;g>i&&(g=i)}else if(d>0){if(i>g)return;i>h&&(h=i)}if(i=r-c,d||!(0>i)){if(i/=d,0>d){if(i>g)return;i>h&&(h=i)}else if(d>0){if(h>i)return;g>i&&(g=i)}return h>0&&(u.a={x:l+h*p,y:c+h*d}),1>g&&(u.b={x:l+g*p,y:c+g*d}),u}}}}}}function Ye(n,t,e,r){function u(r,u){return la(r[0]-n)0?0:3:la(r[0]-e)0?2:1:la(r[1]-t)0?1:0:u>0?3:2}function i(n,t){return o(n.x,t.x)}function o(n,t){var e=u(n,1),r=u(t,1);return e!==r?e-r:0===e?t[1]-n[1]:1===e?n[0]-t[0]:2===e?n[1]-t[1]:t[0]-n[0]}return function(a){function l(n){for(var t=0,e=v.length,r=n[1],u=0;e>u;++u)for(var i,o=1,a=v[u],l=a.length,c=a[0];l>o;++o)i=a[o],c[1]<=r?i[1]>r&&Q(c,i,n)>0&&++t:i[1]<=r&&Q(c,i,n)<0&&--t,c=i;return 0!==t}function c(i,a,l,c){var s=0,f=0;if(null==i||(s=u(i,l))!==(f=u(a,l))||o(i,a)<0^l>0){do c.point(0===s||3===s?n:e,s>1?r:t);while((s=(s+l+4)%4)!==f)}else c.point(a[0],a[1])}function s(u,i){return u>=n&&e>=u&&i>=t&&r>=i}function f(n,t){s(n,t)&&a.point(n,t)}function h(){C.point=p,v&&v.push(m=[]),S=!0,w=!1,_=b=0/0}function g(){d&&(p(y,M),x&&w&&A.rejoin(),d.push(A.buffer())),C.point=f,w&&a.lineEnd()}function p(n,t){n=Math.max(-Nl,Math.min(Nl,n)),t=Math.max(-Nl,Math.min(Nl,t));var e=s(n,t);if(v&&m.push([n,t]),S)y=n,M=t,x=e,S=!1,e&&(a.lineStart(),a.point(n,t));else if(e&&w)a.point(n,t);else{var r={a:{x:_,y:b},b:{x:n,y:t}};N(r)?(w||(a.lineStart(),a.point(r.a.x,r.a.y)),a.point(r.b.x,r.b.y),e||a.lineEnd(),k=!1):e&&(a.lineStart(),a.point(n,t),k=!1)}_=n,b=t,w=e}var d,v,m,y,M,x,_,b,w,S,k,E=a,A=Re(),N=Oe(n,t,e,r),C={point:f,lineStart:h,lineEnd:g,polygonStart:function(){a=A,d=[],v=[],k=!0},polygonEnd:function(){a=E,d=Jo.merge(d);var t=l([n,r]),e=k&&t,u=d.length;(e||u)&&(a.polygonStart(),e&&(a.lineStart(),c(null,null,1,a),a.lineEnd()),u&&Ce(d,i,t,c,a),a.polygonEnd()),d=v=m=null}};return C}}function Ie(n){var t=0,e=Ea/3,r=ir(n),u=r(t,e);return u.parallels=function(n){return arguments.length?r(t=n[0]*Ea/180,e=n[1]*Ea/180):[t/Ea*180,e/Ea*180]},u}function Ze(n,t){function e(n,t){var e=Math.sqrt(i-2*u*Math.sin(t))/u;return[e*Math.sin(n*=u),o-e*Math.cos(n)]}var r=Math.sin(n),u=(r+Math.sin(t))/2,i=1+r*(2*u-r),o=Math.sqrt(i)/u;return e.invert=function(n,t){var e=o-t;return[Math.atan2(n,e)/u,tt((i-(n*n+e*e)*u*u)/(2*u))]},e}function Ve(){function n(n,t){zl+=u*n-r*t,r=n,u=t}var t,e,r,u;Dl.point=function(i,o){Dl.point=n,t=r=i,e=u=o},Dl.lineEnd=function(){n(t,e)}}function Xe(n,t){ql>n&&(ql=n),n>Tl&&(Tl=n),Ll>t&&(Ll=t),t>Rl&&(Rl=t)}function $e(){function n(n,t){o.push("M",n,",",t,i)}function t(n,t){o.push("M",n,",",t),a.point=e}function e(n,t){o.push("L",n,",",t)}function r(){a.point=n}function u(){o.push("Z")}var i=Be(4.5),o=[],a={point:n,lineStart:function(){a.point=t},lineEnd:r,polygonStart:function(){a.lineEnd=u},polygonEnd:function(){a.lineEnd=r,a.point=n},pointRadius:function(n){return i=Be(n),a},result:function(){if(o.length){var n=o.join("");return o=[],n}}};return a}function Be(n){return"m0,"+n+"a"+n+","+n+" 0 1,1 0,"+-2*n+"a"+n+","+n+" 0 1,1 0,"+2*n+"z"}function We(n,t){ml+=n,yl+=t,++Ml}function Je(){function n(n,r){var u=n-t,i=r-e,o=Math.sqrt(u*u+i*i);xl+=o*(t+n)/2,_l+=o*(e+r)/2,bl+=o,We(t=n,e=r)}var t,e;jl.point=function(r,u){jl.point=n,We(t=r,e=u)}}function Ge(){jl.point=We}function Ke(){function n(n,t){var e=n-r,i=t-u,o=Math.sqrt(e*e+i*i);xl+=o*(r+n)/2,_l+=o*(u+t)/2,bl+=o,o=u*n-r*t,wl+=o*(r+n),Sl+=o*(u+t),kl+=3*o,We(r=n,u=t)}var t,e,r,u;jl.point=function(i,o){jl.point=n,We(t=r=i,e=u=o)},jl.lineEnd=function(){n(t,e)}}function Qe(n){function t(t,e){n.moveTo(t+o,e),n.arc(t,e,o,0,Aa)}function e(t,e){n.moveTo(t,e),a.point=r}function r(t,e){n.lineTo(t,e)}function u(){a.point=t}function i(){n.closePath()}var o=4.5,a={point:t,lineStart:function(){a.point=e},lineEnd:u,polygonStart:function(){a.lineEnd=i},polygonEnd:function(){a.lineEnd=u,a.point=t},pointRadius:function(n){return o=n,a},result:_};return a}function nr(n){function t(n){return(a?r:e)(n)}function e(t){return rr(t,function(e,r){e=n(e,r),t.point(e[0],e[1])})}function r(t){function e(e,r){e=n(e,r),t.point(e[0],e[1])}function r(){M=0/0,S.point=i,t.lineStart()}function i(e,r){var i=pe([e,r]),o=n(e,r);u(M,x,y,_,b,w,M=o[0],x=o[1],y=e,_=i[0],b=i[1],w=i[2],a,t),t.point(M,x)}function o(){S.point=e,t.lineEnd()}function l(){r(),S.point=c,S.lineEnd=s}function c(n,t){i(f=n,h=t),g=M,p=x,d=_,v=b,m=w,S.point=i}function s(){u(M,x,y,_,b,w,g,p,f,d,v,m,a,t),S.lineEnd=o,o()}var f,h,g,p,d,v,m,y,M,x,_,b,w,S={point:e,lineStart:r,lineEnd:o,polygonStart:function(){t.polygonStart(),S.lineStart=l +},polygonEnd:function(){t.polygonEnd(),S.lineStart=r}};return S}function u(t,e,r,a,l,c,s,f,h,g,p,d,v,m){var y=s-t,M=f-e,x=y*y+M*M;if(x>4*i&&v--){var _=a+g,b=l+p,w=c+d,S=Math.sqrt(_*_+b*b+w*w),k=Math.asin(w/=S),E=la(la(w)-1)i||la((y*z+M*q)/x-.5)>.3||o>a*g+l*p+c*d)&&(u(t,e,r,a,l,c,N,C,E,_/=S,b/=S,w,v,m),m.point(N,C),u(N,C,E,_,b,w,s,f,h,g,p,d,v,m))}}var i=.5,o=Math.cos(30*za),a=16;return t.precision=function(n){return arguments.length?(a=(i=n*n)>0&&16,t):Math.sqrt(i)},t}function tr(n){var t=nr(function(t,e){return n([t*qa,e*qa])});return function(n){return or(t(n))}}function er(n){this.stream=n}function rr(n,t){return{point:t,sphere:function(){n.sphere()},lineStart:function(){n.lineStart()},lineEnd:function(){n.lineEnd()},polygonStart:function(){n.polygonStart()},polygonEnd:function(){n.polygonEnd()}}}function ur(n){return ir(function(){return n})()}function ir(n){function t(n){return n=a(n[0]*za,n[1]*za),[n[0]*h+l,c-n[1]*h]}function e(n){return n=a.invert((n[0]-l)/h,(c-n[1])/h),n&&[n[0]*qa,n[1]*qa]}function r(){a=Ae(o=cr(m,M,x),i);var n=i(d,v);return l=g-n[0]*h,c=p+n[1]*h,u()}function u(){return s&&(s.valid=!1,s=null),t}var i,o,a,l,c,s,f=nr(function(n,t){return n=i(n,t),[n[0]*h+l,c-n[1]*h]}),h=150,g=480,p=250,d=0,v=0,m=0,M=0,x=0,_=Al,b=y,w=null,S=null;return t.stream=function(n){return s&&(s.valid=!1),s=or(_(o,f(b(n)))),s.valid=!0,s},t.clipAngle=function(n){return arguments.length?(_=null==n?(w=n,Al):He((w=+n)*za),u()):w},t.clipExtent=function(n){return arguments.length?(S=n,b=n?Ye(n[0][0],n[0][1],n[1][0],n[1][1]):y,u()):S},t.scale=function(n){return arguments.length?(h=+n,r()):h},t.translate=function(n){return arguments.length?(g=+n[0],p=+n[1],r()):[g,p]},t.center=function(n){return arguments.length?(d=n[0]%360*za,v=n[1]%360*za,r()):[d*qa,v*qa]},t.rotate=function(n){return arguments.length?(m=n[0]%360*za,M=n[1]%360*za,x=n.length>2?n[2]%360*za:0,r()):[m*qa,M*qa,x*qa]},Jo.rebind(t,f,"precision"),function(){return i=n.apply(this,arguments),t.invert=i.invert&&e,r()}}function or(n){return rr(n,function(t,e){n.point(t*za,e*za)})}function ar(n,t){return[n,t]}function lr(n,t){return[n>Ea?n-Aa:-Ea>n?n+Aa:n,t]}function cr(n,t,e){return n?t||e?Ae(fr(n),hr(t,e)):fr(n):t||e?hr(t,e):lr}function sr(n){return function(t,e){return t+=n,[t>Ea?t-Aa:-Ea>t?t+Aa:t,e]}}function fr(n){var t=sr(n);return t.invert=sr(-n),t}function hr(n,t){function e(n,t){var e=Math.cos(t),a=Math.cos(n)*e,l=Math.sin(n)*e,c=Math.sin(t),s=c*r+a*u;return[Math.atan2(l*i-s*o,a*r-c*u),tt(s*i+l*o)]}var r=Math.cos(n),u=Math.sin(n),i=Math.cos(t),o=Math.sin(t);return e.invert=function(n,t){var e=Math.cos(t),a=Math.cos(n)*e,l=Math.sin(n)*e,c=Math.sin(t),s=c*i-l*o;return[Math.atan2(l*i+c*o,a*r+s*u),tt(s*r-a*u)]},e}function gr(n,t){var e=Math.cos(n),r=Math.sin(n);return function(u,i,o,a){var l=o*t;null!=u?(u=pr(e,u),i=pr(e,i),(o>0?i>u:u>i)&&(u+=o*Aa)):(u=n+o*Aa,i=n-.5*l);for(var c,s=u;o>0?s>i:i>s;s-=l)a.point((c=xe([e,-r*Math.cos(s),-r*Math.sin(s)]))[0],c[1])}}function pr(n,t){var e=pe(t);e[0]-=n,Me(e);var r=nt(-e[1]);return((-e[2]<0?-r:r)+2*Math.PI-Sa)%(2*Math.PI)}function dr(n,t,e){var r=Jo.range(n,t-Sa,e).concat(t);return function(n){return r.map(function(t){return[n,t]})}}function vr(n,t,e){var r=Jo.range(n,t-Sa,e).concat(t);return function(n){return r.map(function(t){return[t,n]})}}function mr(n){return n.source}function yr(n){return n.target}function Mr(n,t,e,r){var u=Math.cos(t),i=Math.sin(t),o=Math.cos(r),a=Math.sin(r),l=u*Math.cos(n),c=u*Math.sin(n),s=o*Math.cos(e),f=o*Math.sin(e),h=2*Math.asin(Math.sqrt(it(r-t)+u*o*it(e-n))),g=1/Math.sin(h),p=h?function(n){var t=Math.sin(n*=h)*g,e=Math.sin(h-n)*g,r=e*l+t*s,u=e*c+t*f,o=e*i+t*a;return[Math.atan2(u,r)*qa,Math.atan2(o,Math.sqrt(r*r+u*u))*qa]}:function(){return[n*qa,t*qa]};return p.distance=h,p}function xr(){function n(n,u){var i=Math.sin(u*=za),o=Math.cos(u),a=la((n*=za)-t),l=Math.cos(a);Ul+=Math.atan2(Math.sqrt((a=o*Math.sin(a))*a+(a=r*i-e*o*l)*a),e*i+r*o*l),t=n,e=i,r=o}var t,e,r;Fl.point=function(u,i){t=u*za,e=Math.sin(i*=za),r=Math.cos(i),Fl.point=n},Fl.lineEnd=function(){Fl.point=Fl.lineEnd=_}}function _r(n,t){function e(t,e){var r=Math.cos(t),u=Math.cos(e),i=n(r*u);return[i*u*Math.sin(t),i*Math.sin(e)]}return e.invert=function(n,e){var r=Math.sqrt(n*n+e*e),u=t(r),i=Math.sin(u),o=Math.cos(u);return[Math.atan2(n*i,r*o),Math.asin(r&&e*i/r)]},e}function br(n,t){function e(n,t){o>0?-Ca+Sa>t&&(t=-Ca+Sa):t>Ca-Sa&&(t=Ca-Sa);var e=o/Math.pow(u(t),i);return[e*Math.sin(i*n),o-e*Math.cos(i*n)]}var r=Math.cos(n),u=function(n){return Math.tan(Ea/4+n/2)},i=n===t?Math.sin(n):Math.log(r/Math.cos(t))/Math.log(u(t)/u(n)),o=r*Math.pow(u(n),i)/i;return i?(e.invert=function(n,t){var e=o-t,r=K(i)*Math.sqrt(n*n+e*e);return[Math.atan2(n,e)/i,2*Math.atan(Math.pow(o/r,1/i))-Ca]},e):Sr}function wr(n,t){function e(n,t){var e=i-t;return[e*Math.sin(u*n),i-e*Math.cos(u*n)]}var r=Math.cos(n),u=n===t?Math.sin(n):(r-Math.cos(t))/(t-n),i=r/u+n;return la(u)u;u++){for(;r>1&&Q(n[e[r-2]],n[e[r-1]],n[u])<=0;)--r;e[r++]=u}return e.slice(0,r)}function zr(n,t){return n[0]-t[0]||n[1]-t[1]}function qr(n,t,e){return(e[0]-t[0])*(n[1]-t[1])<(e[1]-t[1])*(n[0]-t[0])}function Lr(n,t,e,r){var u=n[0],i=e[0],o=t[0]-u,a=r[0]-i,l=n[1],c=e[1],s=t[1]-l,f=r[1]-c,h=(a*(l-c)-f*(u-i))/(f*o-a*s);return[u+h*o,l+h*s]}function Tr(n){var t=n[0],e=n[n.length-1];return!(t[0]-e[0]||t[1]-e[1])}function Rr(){tu(this),this.edge=this.site=this.circle=null}function Dr(n){var t=Gl.pop()||new Rr;return t.site=n,t}function Pr(n){Xr(n),Bl.remove(n),Gl.push(n),tu(n)}function jr(n){var t=n.circle,e=t.x,r=t.cy,u={x:e,y:r},i=n.P,o=n.N,a=[n];Pr(n);for(var l=i;l.circle&&la(e-l.circle.x)s;++s)c=a[s],l=a[s-1],Kr(c.edge,l.site,c.site,u);l=a[0],c=a[f-1],c.edge=Jr(l.site,c.site,null,u),Vr(l),Vr(c)}function Ur(n){for(var t,e,r,u,i=n.x,o=n.y,a=Bl._;a;)if(r=Fr(a,o)-i,r>Sa)a=a.L;else{if(u=i-Hr(a,o),!(u>Sa)){r>-Sa?(t=a.P,e=a):u>-Sa?(t=a,e=a.N):t=e=a;break}if(!a.R){t=a;break}a=a.R}var l=Dr(n);if(Bl.insert(t,l),t||e){if(t===e)return Xr(t),e=Dr(t.site),Bl.insert(l,e),l.edge=e.edge=Jr(t.site,l.site),Vr(t),void Vr(e);if(!e)return void(l.edge=Jr(t.site,l.site));Xr(t),Xr(e);var c=t.site,s=c.x,f=c.y,h=n.x-s,g=n.y-f,p=e.site,d=p.x-s,v=p.y-f,m=2*(h*v-g*d),y=h*h+g*g,M=d*d+v*v,x={x:(v*y-g*M)/m+s,y:(h*M-d*y)/m+f};Kr(e.edge,c,p,x),l.edge=Jr(c,n,null,x),e.edge=Jr(n,p,null,x),Vr(t),Vr(e)}}function Fr(n,t){var e=n.site,r=e.x,u=e.y,i=u-t;if(!i)return r;var o=n.P;if(!o)return-1/0;e=o.site;var a=e.x,l=e.y,c=l-t;if(!c)return a;var s=a-r,f=1/i-1/c,h=s/c;return f?(-h+Math.sqrt(h*h-2*f*(s*s/(-2*c)-l+c/2+u-i/2)))/f+r:(r+a)/2}function Hr(n,t){var e=n.N;if(e)return Fr(e,t);var r=n.site;return r.y===t?r.x:1/0}function Or(n){this.site=n,this.edges=[]}function Yr(n){for(var t,e,r,u,i,o,a,l,c,s,f=n[0][0],h=n[1][0],g=n[0][1],p=n[1][1],d=$l,v=d.length;v--;)if(i=d[v],i&&i.prepare())for(a=i.edges,l=a.length,o=0;l>o;)s=a[o].end(),r=s.x,u=s.y,c=a[++o%l].start(),t=c.x,e=c.y,(la(r-t)>Sa||la(u-e)>Sa)&&(a.splice(o,0,new Qr(Gr(i.site,s,la(r-f)Sa?{x:f,y:la(t-f)Sa?{x:la(e-p)Sa?{x:h,y:la(t-h)Sa?{x:la(e-g)=-ka)){var g=l*l+c*c,p=s*s+f*f,d=(f*g-c*p)/h,v=(l*p-s*g)/h,f=v+a,m=Kl.pop()||new Zr;m.arc=n,m.site=u,m.x=d+o,m.y=f+Math.sqrt(d*d+v*v),m.cy=f,n.circle=m;for(var y=null,M=Jl._;M;)if(m.yv||v>=a)return;if(h>p){if(i){if(i.y>=c)return}else i={x:v,y:l};e={x:v,y:c}}else{if(i){if(i.yr||r>1)if(h>p){if(i){if(i.y>=c)return}else i={x:(l-u)/r,y:l};e={x:(c-u)/r,y:c}}else{if(i){if(i.yg){if(i){if(i.x>=a)return}else i={x:o,y:r*o+u};e={x:a,y:r*a+u}}else{if(i){if(i.xi||f>o||r>h||u>g)){if(p=n.point){var p,d=t-n.x,v=e-n.y,m=d*d+v*v;if(l>m){var y=Math.sqrt(l=m);r=t-y,u=e-y,i=t+y,o=e+y,a=p}}for(var M=n.nodes,x=.5*(s+h),_=.5*(f+g),b=t>=x,w=e>=_,S=w<<1|b,k=S+4;k>S;++S)if(n=M[3&S])switch(3&S){case 0:c(n,s,f,x,_);break;case 1:c(n,x,f,h,_);break;case 2:c(n,s,_,x,g);break;case 3:c(n,x,_,h,g)}}}(n,r,u,i,o),a}function gu(n,t){n=Jo.rgb(n),t=Jo.rgb(t);var e=n.r,r=n.g,u=n.b,i=t.r-e,o=t.g-r,a=t.b-u;return function(n){return"#"+xt(Math.round(e+i*n))+xt(Math.round(r+o*n))+xt(Math.round(u+a*n))}}function pu(n,t){var e,r={},u={};for(e in n)e in t?r[e]=mu(n[e],t[e]):u[e]=n[e];for(e in t)e in n||(u[e]=t[e]);return function(n){for(e in r)u[e]=r[e](n);return u}}function du(n,t){return n=+n,t=+t,function(e){return n*(1-e)+t*e}}function vu(n,t){var e,r,u,i=nc.lastIndex=tc.lastIndex=0,o=-1,a=[],l=[];for(n+="",t+="";(e=nc.exec(n))&&(r=tc.exec(t));)(u=r.index)>i&&(u=t.slice(i,u),a[o]?a[o]+=u:a[++o]=u),(e=e[0])===(r=r[0])?a[o]?a[o]+=r:a[++o]=r:(a[++o]=null,l.push({i:o,x:du(e,r)})),i=tc.lastIndex;return ir;++r)a[(e=l[r]).i]=e.x(n);return a.join("")})}function mu(n,t){for(var e,r=Jo.interpolators.length;--r>=0&&!(e=Jo.interpolators[r](n,t)););return e}function yu(n,t){var e,r=[],u=[],i=n.length,o=t.length,a=Math.min(n.length,t.length);for(e=0;a>e;++e)r.push(mu(n[e],t[e]));for(;i>e;++e)u[e]=n[e];for(;o>e;++e)u[e]=t[e];return function(n){for(e=0;a>e;++e)u[e]=r[e](n);return u}}function Mu(n){return function(t){return 0>=t?0:t>=1?1:n(t)}}function xu(n){return function(t){return 1-n(1-t)}}function _u(n){return function(t){return.5*(.5>t?n(2*t):2-n(2-2*t))}}function bu(n){return n*n}function wu(n){return n*n*n}function Su(n){if(0>=n)return 0;if(n>=1)return 1;var t=n*n,e=t*n;return 4*(.5>n?e:3*(n-t)+e-.75)}function ku(n){return function(t){return Math.pow(t,n)}}function Eu(n){return 1-Math.cos(n*Ca)}function Au(n){return Math.pow(2,10*(n-1))}function Nu(n){return 1-Math.sqrt(1-n*n)}function Cu(n,t){var e;return arguments.length<2&&(t=.45),arguments.length?e=t/Aa*Math.asin(1/n):(n=1,e=t/4),function(r){return 1+n*Math.pow(2,-10*r)*Math.sin((r-e)*Aa/t)}}function zu(n){return n||(n=1.70158),function(t){return t*t*((n+1)*t-n)}}function qu(n){return 1/2.75>n?7.5625*n*n:2/2.75>n?7.5625*(n-=1.5/2.75)*n+.75:2.5/2.75>n?7.5625*(n-=2.25/2.75)*n+.9375:7.5625*(n-=2.625/2.75)*n+.984375}function Lu(n,t){n=Jo.hcl(n),t=Jo.hcl(t);var e=n.h,r=n.c,u=n.l,i=t.h-e,o=t.c-r,a=t.l-u;return isNaN(o)&&(o=0,r=isNaN(r)?t.c:r),isNaN(i)?(i=0,e=isNaN(e)?t.h:e):i>180?i-=360:-180>i&&(i+=360),function(n){return st(e+i*n,r+o*n,u+a*n)+""}}function Tu(n,t){n=Jo.hsl(n),t=Jo.hsl(t);var e=n.h,r=n.s,u=n.l,i=t.h-e,o=t.s-r,a=t.l-u;return isNaN(o)&&(o=0,r=isNaN(r)?t.s:r),isNaN(i)?(i=0,e=isNaN(e)?t.h:e):i>180?i-=360:-180>i&&(i+=360),function(n){return lt(e+i*n,r+o*n,u+a*n)+""}}function Ru(n,t){n=Jo.lab(n),t=Jo.lab(t);var e=n.l,r=n.a,u=n.b,i=t.l-e,o=t.a-r,a=t.b-u;return function(n){return ht(e+i*n,r+o*n,u+a*n)+""}}function Du(n,t){return t-=n,function(e){return Math.round(n+t*e)}}function Pu(n){var t=[n.a,n.b],e=[n.c,n.d],r=Uu(t),u=ju(t,e),i=Uu(Fu(e,t,-u))||0;t[0]*e[1]180?s+=360:s-c>180&&(c+=360),u.push({i:r.push(r.pop()+"rotate(",null,")")-2,x:du(c,s)})):s&&r.push(r.pop()+"rotate("+s+")"),f!=h?u.push({i:r.push(r.pop()+"skewX(",null,")")-2,x:du(f,h)}):h&&r.push(r.pop()+"skewX("+h+")"),g[0]!=p[0]||g[1]!=p[1]?(e=r.push(r.pop()+"scale(",null,",",null,")"),u.push({i:e-4,x:du(g[0],p[0])},{i:e-2,x:du(g[1],p[1])})):(1!=p[0]||1!=p[1])&&r.push(r.pop()+"scale("+p+")"),e=u.length,function(n){for(var t,i=-1;++i=0;)e.push(u[r])}function Qu(n,t){for(var e=[n],r=[];null!=(n=e.pop());)if(r.push(n),(i=n.children)&&(u=i.length))for(var u,i,o=-1;++oe;++e)(t=n[e][1])>u&&(r=e,u=t);return r}function si(n){return n.reduce(fi,0)}function fi(n,t){return n+t[1]}function hi(n,t){return gi(n,Math.ceil(Math.log(t.length)/Math.LN2+1))}function gi(n,t){for(var e=-1,r=+n[0],u=(n[1]-r)/t,i=[];++e<=t;)i[e]=u*e+r;return i}function pi(n){return[Jo.min(n),Jo.max(n)]}function di(n,t){return n.value-t.value}function vi(n,t){var e=n._pack_next;n._pack_next=t,t._pack_prev=n,t._pack_next=e,e._pack_prev=t}function mi(n,t){n._pack_next=t,t._pack_prev=n}function yi(n,t){var e=t.x-n.x,r=t.y-n.y,u=n.r+t.r;return.999*u*u>e*e+r*r}function Mi(n){function t(n){s=Math.min(n.x-n.r,s),f=Math.max(n.x+n.r,f),h=Math.min(n.y-n.r,h),g=Math.max(n.y+n.r,g)}if((e=n.children)&&(c=e.length)){var e,r,u,i,o,a,l,c,s=1/0,f=-1/0,h=1/0,g=-1/0;if(e.forEach(xi),r=e[0],r.x=-r.r,r.y=0,t(r),c>1&&(u=e[1],u.x=u.r,u.y=0,t(u),c>2))for(i=e[2],wi(r,u,i),t(i),vi(r,i),r._pack_prev=i,vi(i,u),u=r._pack_next,o=3;c>o;o++){wi(r,u,i=e[o]);var p=0,d=1,v=1;for(a=u._pack_next;a!==u;a=a._pack_next,d++)if(yi(a,i)){p=1;break}if(1==p)for(l=r._pack_prev;l!==a._pack_prev&&!yi(l,i);l=l._pack_prev,v++);p?(v>d||d==v&&u.ro;o++)i=e[o],i.x-=m,i.y-=y,M=Math.max(M,i.r+Math.sqrt(i.x*i.x+i.y*i.y));n.r=M,e.forEach(_i)}}function xi(n){n._pack_next=n._pack_prev=n}function _i(n){delete n._pack_next,delete n._pack_prev}function bi(n,t,e,r){var u=n.children;if(n.x=t+=r*n.x,n.y=e+=r*n.y,n.r*=r,u)for(var i=-1,o=u.length;++iu&&(e+=u/2,u=0),0>i&&(r+=i/2,i=0),{x:e,y:r,dx:u,dy:i}}function qi(n){var t=n[0],e=n[n.length-1];return e>t?[t,e]:[e,t]}function Li(n){return n.rangeExtent?n.rangeExtent():qi(n.range())}function Ti(n,t,e,r){var u=e(n[0],n[1]),i=r(t[0],t[1]);return function(n){return i(u(n))}}function Ri(n,t){var e,r=0,u=n.length-1,i=n[r],o=n[u];return i>o&&(e=r,r=u,u=e,e=i,i=o,o=e),n[r]=t.floor(i),n[u]=t.ceil(o),n}function Di(n){return n?{floor:function(t){return Math.floor(t/n)*n},ceil:function(t){return Math.ceil(t/n)*n}}:hc}function Pi(n,t,e,r){var u=[],i=[],o=0,a=Math.min(n.length,t.length)-1;for(n[a]2?Pi:Ti,l=r?Yu:Ou;return o=u(n,t,l,e),a=u(t,n,l,mu),i}function i(n){return o(n)}var o,a;return i.invert=function(n){return a(n)},i.domain=function(t){return arguments.length?(n=t.map(Number),u()):n},i.range=function(n){return arguments.length?(t=n,u()):t},i.rangeRound=function(n){return i.range(n).interpolate(Du)},i.clamp=function(n){return arguments.length?(r=n,u()):r},i.interpolate=function(n){return arguments.length?(e=n,u()):e},i.ticks=function(t){return Oi(n,t)},i.tickFormat=function(t,e){return Yi(n,t,e)},i.nice=function(t){return Fi(n,t),u()},i.copy=function(){return ji(n,t,e,r)},u()}function Ui(n,t){return Jo.rebind(n,t,"range","rangeRound","interpolate","clamp")}function Fi(n,t){return Ri(n,Di(Hi(n,t)[2]))}function Hi(n,t){null==t&&(t=10);var e=qi(n),r=e[1]-e[0],u=Math.pow(10,Math.floor(Math.log(r/t)/Math.LN10)),i=t/r*u;return.15>=i?u*=10:.35>=i?u*=5:.75>=i&&(u*=2),e[0]=Math.ceil(e[0]/u)*u,e[1]=Math.floor(e[1]/u)*u+.5*u,e[2]=u,e}function Oi(n,t){return Jo.range.apply(Jo,Hi(n,t))}function Yi(n,t,e){var r=Hi(n,t);if(e){var u=nl.exec(e);if(u.shift(),"s"===u[8]){var i=Jo.formatPrefix(Math.max(la(r[0]),la(r[1])));return u[7]||(u[7]="."+Ii(i.scale(r[2]))),u[8]="f",e=Jo.format(u.join("")),function(n){return e(i.scale(n))+i.symbol}}u[7]||(u[7]="."+Zi(u[8],r)),e=u.join("")}else e=",."+Ii(r[2])+"f";return Jo.format(e)}function Ii(n){return-Math.floor(Math.log(n)/Math.LN10+.01)}function Zi(n,t){var e=Ii(t[2]);return n in gc?Math.abs(e-Ii(Math.max(la(t[0]),la(t[1]))))+ +("e"!==n):e-2*("%"===n)}function Vi(n,t,e,r){function u(n){return(e?Math.log(0>n?0:n):-Math.log(n>0?0:-n))/Math.log(t)}function i(n){return e?Math.pow(t,n):-Math.pow(t,-n)}function o(t){return n(u(t))}return o.invert=function(t){return i(n.invert(t))},o.domain=function(t){return arguments.length?(e=t[0]>=0,n.domain((r=t.map(Number)).map(u)),o):r},o.base=function(e){return arguments.length?(t=+e,n.domain(r.map(u)),o):t},o.nice=function(){var t=Ri(r.map(u),e?Math:dc);return n.domain(t),r=t.map(i),o},o.ticks=function(){var n=qi(r),o=[],a=n[0],l=n[1],c=Math.floor(u(a)),s=Math.ceil(u(l)),f=t%1?2:t;if(isFinite(s-c)){if(e){for(;s>c;c++)for(var h=1;f>h;h++)o.push(i(c)*h);o.push(i(c))}else for(o.push(i(c));c++0;h--)o.push(i(c)*h);for(c=0;o[c]l;s--);o=o.slice(c,s)}return o},o.tickFormat=function(n,t){if(!arguments.length)return pc;arguments.length<2?t=pc:"function"!=typeof t&&(t=Jo.format(t));var r,a=Math.max(.1,n/o.ticks().length),l=e?(r=1e-12,Math.ceil):(r=-1e-12,Math.floor);return function(n){return n/i(l(u(n)+r))<=a?t(n):""}},o.copy=function(){return Vi(n.copy(),t,e,r)},Ui(o,n)}function Xi(n,t,e){function r(t){return n(u(t))}var u=$i(t),i=$i(1/t);return r.invert=function(t){return i(n.invert(t))},r.domain=function(t){return arguments.length?(n.domain((e=t.map(Number)).map(u)),r):e},r.ticks=function(n){return Oi(e,n)},r.tickFormat=function(n,t){return Yi(e,n,t)},r.nice=function(n){return r.domain(Fi(e,n))},r.exponent=function(o){return arguments.length?(u=$i(t=o),i=$i(1/t),n.domain(e.map(u)),r):t},r.copy=function(){return Xi(n.copy(),t,e)},Ui(r,n)}function $i(n){return function(t){return 0>t?-Math.pow(-t,n):Math.pow(t,n)}}function Bi(n,t){function e(e){return i[((u.get(e)||("range"===t.t?u.set(e,n.push(e)):0/0))-1)%i.length]}function r(t,e){return Jo.range(n.length).map(function(n){return t+e*n})}var u,i,o;return e.domain=function(r){if(!arguments.length)return n;n=[],u=new c;for(var i,o=-1,a=r.length;++oe?[0/0,0/0]:[e>0?a[e-1]:n[0],et?0/0:t/i+n,[t,t+1/i]},r.copy=function(){return Ji(n,t,e)},u()}function Gi(n,t){function e(e){return e>=e?t[Jo.bisect(n,e)]:void 0}return e.domain=function(t){return arguments.length?(n=t,e):n},e.range=function(n){return arguments.length?(t=n,e):t},e.invertExtent=function(e){return e=t.indexOf(e),[n[e-1],n[e]]},e.copy=function(){return Gi(n,t)},e}function Ki(n){function t(n){return+n}return t.invert=t,t.domain=t.range=function(e){return arguments.length?(n=e.map(t),t):n},t.ticks=function(t){return Oi(n,t)},t.tickFormat=function(t,e){return Yi(n,t,e)},t.copy=function(){return Ki(n)},t}function Qi(){return 0}function no(n){return n.innerRadius}function to(n){return n.outerRadius}function eo(n){return n.startAngle}function ro(n){return n.endAngle}function uo(n){return n&&n.padAngle}function io(n,t,e,r){return(n-e)*t-(t-r)*n>0?0:1}function oo(n,t,e,r,u){var i=n[0]-t[0],o=n[1]-t[1],a=(u?r:-r)/Math.sqrt(i*i+o*o),l=a*o,c=-a*i,s=n[0]+l,f=n[1]+c,h=t[0]+l,g=t[1]+c,p=(s+h)/2,d=(f+g)/2,v=h-s,m=g-f,y=v*v+m*m,M=e-r,x=s*g-h*f,_=(0>m?-1:1)*Math.sqrt(M*M*y-x*x),b=(x*m-v*_)/y,w=(-x*v-m*_)/y,S=(x*m+v*_)/y,k=(-x*v+m*_)/y,E=b-p,A=w-d,N=S-p,C=k-d;return E*E+A*A>N*N+C*C&&(b=S,w=k),[[b-l,w-c],[b*e/M,w*e/M]]}function ao(n){function t(t){function o(){c.push("M",i(n(s),a))}for(var l,c=[],s=[],f=-1,h=t.length,g=Et(e),p=Et(r);++f1&&u.push("H",r[0]),u.join("")}function fo(n){for(var t=0,e=n.length,r=n[0],u=[r[0],",",r[1]];++t1){a=t[1],i=n[l],l++,r+="C"+(u[0]+o[0])+","+(u[1]+o[1])+","+(i[0]-a[0])+","+(i[1]-a[1])+","+i[0]+","+i[1];for(var c=2;c9&&(u=3*t/Math.sqrt(u),o[a]=u*e,o[a+1]=u*r));for(a=-1;++a<=l;)u=(n[Math.min(l,a+1)][0]-n[Math.max(0,a-1)][0])/(6*(1+o[a]*o[a])),i.push([u||0,o[a]*u||0]);return i}function No(n){return n.length<3?lo(n):n[0]+mo(n,Ao(n))}function Co(n){for(var t,e,r,u=-1,i=n.length;++ur)return s();var u=i[i.active];u&&(--i.count,delete i[i.active],u.event&&u.event.interrupt.call(n,n.__data__,u.index)),i.active=r,o.event&&o.event.start.call(n,n.__data__,t),o.tween.forEach(function(e,r){(r=r.call(n,n.__data__,t))&&d.push(r)}),h=o.ease,f=o.duration,Jo.timer(function(){return p.c=c(e||1)?Ne:c,1},0,a)}function c(e){if(i.active!==r)return 1;for(var u=e/f,a=h(u),l=d.length;l>0;)d[--l].call(n,a);return u>=1?(o.event&&o.event.end.call(n,n.__data__,t),s()):void 0}function s(){return--i.count?delete i[r]:delete n[e],1}var f,h,g=o.delay,p=Ga,d=[];return p.t=g+a,u>=g?l(u-g):void(p.c=l)},0,a)}}function Io(n,t,e){n.attr("transform",function(n){var r=t(n);return"translate("+(isFinite(r)?r:e(n))+",0)"})}function Zo(n,t,e){n.attr("transform",function(n){var r=t(n);return"translate(0,"+(isFinite(r)?r:e(n))+")"})}function Vo(n){return n.toISOString()}function Xo(n,t,e){function r(t){return n(t)}function u(n,e){var r=n[1]-n[0],u=r/e,i=Jo.bisect(Hc,u);return i==Hc.length?[t.year,Hi(n.map(function(n){return n/31536e6}),e)[2]]:i?t[u/Hc[i-1]1?{floor:function(t){for(;e(t=n.floor(t));)t=$o(t-1);return t},ceil:function(t){for(;e(t=n.ceil(t));)t=$o(+t+1);return t}}:n))},r.ticks=function(n,t){var e=qi(r.domain()),i=null==n?u(e,10):"number"==typeof n?u(e,n):!n.range&&[{range:n},t];return i&&(n=i[0],t=i[1]),n.range(e[0],$o(+e[1]+1),1>t?1:t)},r.tickFormat=function(){return e},r.copy=function(){return Xo(n.copy(),t,e)},Ui(r,n)}function $o(n){return new Date(n)}function Bo(n){return JSON.parse(n.responseText)}function Wo(n){var t=Qo.createRange();return t.selectNode(Qo.body),t.createContextualFragment(n.responseText)}var Jo={version:"3.5.6"},Go=[].slice,Ko=function(n){return Go.call(n)},Qo=this.document;if(Qo)try{Ko(Qo.documentElement.childNodes)[0].nodeType}catch(na){Ko=function(n){for(var t=n.length,e=new Array(t);t--;)e[t]=n[t];return e}}if(Date.now||(Date.now=function(){return+new Date}),Qo)try{Qo.createElement("DIV").style.setProperty("opacity",0,"")}catch(ta){var ea=this.Element.prototype,ra=ea.setAttribute,ua=ea.setAttributeNS,ia=this.CSSStyleDeclaration.prototype,oa=ia.setProperty;ea.setAttribute=function(n,t){ra.call(this,n,t+"")},ea.setAttributeNS=function(n,t,e){ua.call(this,n,t,e+"")},ia.setProperty=function(n,t,e){oa.call(this,n,t+"",e)}}Jo.ascending=e,Jo.descending=function(n,t){return n>t?-1:t>n?1:t>=n?0:0/0},Jo.min=function(n,t){var e,r,u=-1,i=n.length;if(1===arguments.length){for(;++u=r){e=r;break}for(;++ur&&(e=r)}else{for(;++u=r){e=r;break}for(;++ur&&(e=r)}return e},Jo.max=function(n,t){var e,r,u=-1,i=n.length;if(1===arguments.length){for(;++u=r){e=r;break}for(;++ue&&(e=r)}else{for(;++u=r){e=r;break}for(;++ue&&(e=r)}return e},Jo.extent=function(n,t){var e,r,u,i=-1,o=n.length;if(1===arguments.length){for(;++i=r){e=u=r;break}for(;++ir&&(e=r),r>u&&(u=r))}else{for(;++i=r){e=u=r;break}for(;++ir&&(e=r),r>u&&(u=r))}return[e,u]},Jo.sum=function(n,t){var e,r=0,i=n.length,o=-1;if(1===arguments.length)for(;++o1?l/(s-1):void 0},Jo.deviation=function(){var n=Jo.variance.apply(this,arguments);return n?Math.sqrt(n):n};var aa=i(e);Jo.bisectLeft=aa.left,Jo.bisect=Jo.bisectRight=aa.right,Jo.bisector=function(n){return i(1===n.length?function(t,r){return e(n(t),r)}:n)},Jo.shuffle=function(n,t,e){(i=arguments.length)<3&&(e=n.length,2>i&&(t=0));for(var r,u,i=e-t;i;)u=Math.random()*i--|0,r=n[i+t],n[i+t]=n[u+t],n[u+t]=r;return n},Jo.permute=function(n,t){for(var e=t.length,r=new Array(e);e--;)r[e]=n[t[e]];return r},Jo.pairs=function(n){for(var t,e=0,r=n.length-1,u=n[0],i=new Array(0>r?0:r);r>e;)i[e]=[t=u,u=n[++e]];return i},Jo.zip=function(){if(!(r=arguments.length))return[];for(var n=-1,t=Jo.min(arguments,o),e=new Array(t);++n=0;)for(r=n[u],t=r.length;--t>=0;)e[--o]=r[t];return e};var la=Math.abs;Jo.range=function(n,t,e){if(arguments.length<3&&(e=1,arguments.length<2&&(t=n,n=0)),(t-n)/e===1/0)throw new Error("infinite range");var r,u=[],i=a(la(e)),o=-1;if(n*=i,t*=i,e*=i,0>e)for(;(r=n+e*++o)>t;)u.push(r/i);else for(;(r=n+e*++o)=i.length)return r?r.call(u,o):e?o.sort(e):o;for(var l,s,f,h,g=-1,p=o.length,d=i[a++],v=new c;++g=i.length)return n;var r=[],u=o[e++];return n.forEach(function(n,u){r.push({key:n,values:t(u,e)})}),u?r.sort(function(n,t){return u(n.key,t.key)}):r}var e,r,u={},i=[],o=[];return u.map=function(t,e){return n(e,t,0)},u.entries=function(e){return t(n(Jo.map,e,0),0)},u.key=function(n){return i.push(n),u},u.sortKeys=function(n){return o[i.length-1]=n,u},u.sortValues=function(n){return e=n,u},u.rollup=function(n){return r=n,u},u},Jo.set=function(n){var t=new m;if(n)for(var e=0,r=n.length;r>e;++e)t.add(n[e]);return t},l(m,{has:h,add:function(n){return this._[s(n+="")]=!0,n},remove:g,values:p,size:d,empty:v,forEach:function(n){for(var t in this._)n.call(this,f(t))}}),Jo.behavior={},Jo.rebind=function(n,t){for(var e,r=1,u=arguments.length;++r=0&&(r=n.slice(e+1),n=n.slice(0,e)),n)return arguments.length<2?this[n].on(r):this[n].on(r,t);if(2===arguments.length){if(null==t)for(n in this)this.hasOwnProperty(n)&&this[n].on(r,null);return this}},Jo.event=null,Jo.requote=function(n){return n.replace(ha,"\\$&")};var ha=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,ga={}.__proto__?function(n,t){n.__proto__=t}:function(n,t){for(var e in t)n[e]=t[e]},pa=function(n,t){return t.querySelector(n)},da=function(n,t){return t.querySelectorAll(n)},va=function(n,t){var e=n.matches||n[x(n,"matchesSelector")];return(va=function(n,t){return e.call(n,t)})(n,t)};"function"==typeof Sizzle&&(pa=function(n,t){return Sizzle(n,t)[0]||null},da=Sizzle,va=Sizzle.matchesSelector),Jo.selection=function(){return Jo.select(Qo.documentElement)};var ma=Jo.selection.prototype=[];ma.select=function(n){var t,e,r,u,i=[];n=N(n);for(var o=-1,a=this.length;++o=0&&(e=n.slice(0,t),n=n.slice(t+1)),ya.hasOwnProperty(e)?{space:ya[e],local:n}:n}},ma.attr=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node();return n=Jo.ns.qualify(n),n.local?e.getAttributeNS(n.space,n.local):e.getAttribute(n)}for(t in n)this.each(z(t,n[t]));return this}return this.each(z(n,t))},ma.classed=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node(),r=(n=T(n)).length,u=-1;if(t=e.classList){for(;++uu){if("string"!=typeof n){2>u&&(e="");for(r in n)this.each(P(r,n[r],e));return this}if(2>u){var i=this.node();return t(i).getComputedStyle(i,null).getPropertyValue(n)}r=""}return this.each(P(n,e,r))},ma.property=function(n,t){if(arguments.length<2){if("string"==typeof n)return this.node()[n];for(t in n)this.each(j(t,n[t]));return this}return this.each(j(n,t))},ma.text=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.textContent=null==t?"":t}:null==n?function(){this.textContent=""}:function(){this.textContent=n}):this.node().textContent},ma.html=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.innerHTML=null==t?"":t}:null==n?function(){this.innerHTML=""}:function(){this.innerHTML=n}):this.node().innerHTML},ma.append=function(n){return n=U(n),this.select(function(){return this.appendChild(n.apply(this,arguments))})},ma.insert=function(n,t){return n=U(n),t=N(t),this.select(function(){return this.insertBefore(n.apply(this,arguments),t.apply(this,arguments)||null)})},ma.remove=function(){return this.each(F)},ma.data=function(n,t){function e(n,e){var r,u,i,o=n.length,f=e.length,h=Math.min(o,f),g=new Array(f),p=new Array(f),d=new Array(o);if(t){var v,m=new c,y=new Array(o);for(r=-1;++rr;++r)p[r]=H(e[r]);for(;o>r;++r)d[r]=n[r]}p.update=g,p.parentNode=g.parentNode=d.parentNode=n.parentNode,a.push(p),l.push(g),s.push(d)}var r,u,i=-1,o=this.length;if(!arguments.length){for(n=new Array(o=(r=this[0]).length);++ii;i++){u.push(t=[]),t.parentNode=(e=this[i]).parentNode;for(var a=0,l=e.length;l>a;a++)(r=e[a])&&n.call(r,r.__data__,a,i)&&t.push(r)}return A(u)},ma.order=function(){for(var n=-1,t=this.length;++n=0;)(e=r[u])&&(i&&i!==e.nextSibling&&i.parentNode.insertBefore(e,i),i=e);return this},ma.sort=function(n){n=Y.apply(this,arguments);for(var t=-1,e=this.length;++tn;n++)for(var e=this[n],r=0,u=e.length;u>r;r++){var i=e[r];if(i)return i}return null},ma.size=function(){var n=0;return I(this,function(){++n}),n};var Ma=[];Jo.selection.enter=Z,Jo.selection.enter.prototype=Ma,Ma.append=ma.append,Ma.empty=ma.empty,Ma.node=ma.node,Ma.call=ma.call,Ma.size=ma.size,Ma.select=function(n){for(var t,e,r,u,i,o=[],a=-1,l=this.length;++ar){if("string"!=typeof n){2>r&&(t=!1);for(e in n)this.each(X(e,n[e],t));return this}if(2>r)return(r=this.node()["__on"+n])&&r._;e=!1}return this.each(X(n,t,e))};var xa=Jo.map({mouseenter:"mouseover",mouseleave:"mouseout"});Qo&&xa.forEach(function(n){"on"+n in Qo&&xa.remove(n)});var _a,ba=0;Jo.mouse=function(n){return J(n,k())};var wa=this.navigator&&/WebKit/.test(this.navigator.userAgent)?-1:0;Jo.touch=function(n,t,e){if(arguments.length<3&&(e=t,t=k().changedTouches),t)for(var r,u=0,i=t.length;i>u;++u)if((r=t[u]).identifier===e)return J(n,r)},Jo.behavior.drag=function(){function n(){this.on("mousedown.drag",i).on("touchstart.drag",o)}function e(n,t,e,i,o){return function(){function a(){var n,e,r=t(h,d);r&&(n=r[0]-M[0],e=r[1]-M[1],p|=n|e,M=r,g({type:"drag",x:r[0]+c[0],y:r[1]+c[1],dx:n,dy:e}))}function l(){t(h,d)&&(m.on(i+v,null).on(o+v,null),y(p&&Jo.event.target===f),g({type:"dragend"}))}var c,s=this,f=Jo.event.target,h=s.parentNode,g=r.of(s,arguments),p=0,d=n(),v=".drag"+(null==d?"":"-"+d),m=Jo.select(e(f)).on(i+v,a).on(o+v,l),y=W(f),M=t(h,d);u?(c=u.apply(s,arguments),c=[c.x-M[0],c.y-M[1]]):c=[0,0],g({type:"dragstart"})}}var r=E(n,"drag","dragstart","dragend"),u=null,i=e(_,Jo.mouse,t,"mousemove","mouseup"),o=e(G,Jo.touch,y,"touchmove","touchend");return n.origin=function(t){return arguments.length?(u=t,n):u},Jo.rebind(n,r,"on")},Jo.touches=function(n,t){return arguments.length<2&&(t=k().touches),t?Ko(t).map(function(t){var e=J(n,t);return e.identifier=t.identifier,e}):[]};var Sa=1e-6,ka=Sa*Sa,Ea=Math.PI,Aa=2*Ea,Na=Aa-Sa,Ca=Ea/2,za=Ea/180,qa=180/Ea,La=Math.SQRT2,Ta=2,Ra=4;Jo.interpolateZoom=function(n,t){function e(n){var t=n*y;if(m){var e=rt(d),o=i/(Ta*h)*(e*ut(La*t+d)-et(d));return[r+o*c,u+o*s,i*e/rt(La*t+d)]}return[r+n*c,u+n*s,i*Math.exp(La*t)]}var r=n[0],u=n[1],i=n[2],o=t[0],a=t[1],l=t[2],c=o-r,s=a-u,f=c*c+s*s,h=Math.sqrt(f),g=(l*l-i*i+Ra*f)/(2*i*Ta*h),p=(l*l-i*i-Ra*f)/(2*l*Ta*h),d=Math.log(Math.sqrt(g*g+1)-g),v=Math.log(Math.sqrt(p*p+1)-p),m=v-d,y=(m||Math.log(l/i))/La;return e.duration=1e3*y,e},Jo.behavior.zoom=function(){function n(n){n.on(q,f).on(Pa+".zoom",g).on("dblclick.zoom",p).on(R,h)}function e(n){return[(n[0]-k.x)/k.k,(n[1]-k.y)/k.k]}function r(n){return[n[0]*k.k+k.x,n[1]*k.k+k.y]}function u(n){k.k=Math.max(N[0],Math.min(N[1],n))}function i(n,t){t=r(t),k.x+=n[0]-t[0],k.y+=n[1]-t[1]}function o(t,e,r,o){t.__chart__={x:k.x,y:k.y,k:k.k},u(Math.pow(2,o)),i(v=e,r),t=Jo.select(t),C>0&&(t=t.transition().duration(C)),t.call(n.event)}function a(){_&&_.domain(x.range().map(function(n){return(n-k.x)/k.k}).map(x.invert)),w&&w.domain(b.range().map(function(n){return(n-k.y)/k.k}).map(b.invert))}function l(n){z++||n({type:"zoomstart"})}function c(n){a(),n({type:"zoom",scale:k.k,translate:[k.x,k.y]})}function s(n){--z||(n({type:"zoomend"}),v=null)}function f(){function n(){f=1,i(Jo.mouse(u),g),c(a)}function r(){h.on(L,null).on(T,null),p(f&&Jo.event.target===o),s(a)}var u=this,o=Jo.event.target,a=D.of(u,arguments),f=0,h=Jo.select(t(u)).on(L,n).on(T,r),g=e(Jo.mouse(u)),p=W(u);zc.call(u),l(a)}function h(){function n(){var n=Jo.touches(p);return g=k.k,n.forEach(function(n){n.identifier in v&&(v[n.identifier]=e(n))}),n}function t(){var t=Jo.event.target;Jo.select(t).on(x,r).on(_,a),b.push(t);for(var e=Jo.event.changedTouches,u=0,i=e.length;i>u;++u)v[e[u].identifier]=null;var l=n(),c=Date.now();if(1===l.length){if(500>c-M){var s=l[0];o(p,s,v[s.identifier],Math.floor(Math.log(k.k)/Math.LN2)+1),S()}M=c}else if(l.length>1){var s=l[0],f=l[1],h=s[0]-f[0],g=s[1]-f[1];m=h*h+g*g}}function r(){var n,t,e,r,o=Jo.touches(p);zc.call(p);for(var a=0,l=o.length;l>a;++a,r=null)if(e=o[a],r=v[e.identifier]){if(t)break;n=e,t=r}if(r){var s=(s=e[0]-n[0])*s+(s=e[1]-n[1])*s,f=m&&Math.sqrt(s/m);n=[(n[0]+e[0])/2,(n[1]+e[1])/2],t=[(t[0]+r[0])/2,(t[1]+r[1])/2],u(f*g)}M=null,i(n,t),c(d)}function a(){if(Jo.event.touches.length){for(var t=Jo.event.changedTouches,e=0,r=t.length;r>e;++e)delete v[t[e].identifier];for(var u in v)return void n()}Jo.selectAll(b).on(y,null),w.on(q,f).on(R,h),E(),s(d)}var g,p=this,d=D.of(p,arguments),v={},m=0,y=".zoom-"+Jo.event.changedTouches[0].identifier,x="touchmove"+y,_="touchend"+y,b=[],w=Jo.select(p),E=W(p);t(),l(d),w.on(q,null).on(R,t)}function g(){var n=D.of(this,arguments);y?clearTimeout(y):(zc.call(this),d=e(v=m||Jo.mouse(this)),l(n)),y=setTimeout(function(){y=null,s(n)},50),S(),u(Math.pow(2,.002*Da())*k.k),i(v,d),c(n)}function p(){var n=Jo.mouse(this),t=Math.log(k.k)/Math.LN2;o(this,n,e(n),Jo.event.shiftKey?Math.ceil(t)-1:Math.floor(t)+1)}var d,v,m,y,M,x,_,b,w,k={x:0,y:0,k:1},A=[960,500],N=ja,C=250,z=0,q="mousedown.zoom",L="mousemove.zoom",T="mouseup.zoom",R="touchstart.zoom",D=E(n,"zoomstart","zoom","zoomend");return Pa||(Pa="onwheel"in Qo?(Da=function(){return-Jo.event.deltaY*(Jo.event.deltaMode?120:1)},"wheel"):"onmousewheel"in Qo?(Da=function(){return Jo.event.wheelDelta},"mousewheel"):(Da=function(){return-Jo.event.detail},"MozMousePixelScroll")),n.event=function(n){n.each(function(){var n=D.of(this,arguments),t=k;Nc?Jo.select(this).transition().each("start.zoom",function(){k=this.__chart__||{x:0,y:0,k:1},l(n)}).tween("zoom:zoom",function(){var e=A[0],r=A[1],u=v?v[0]:e/2,i=v?v[1]:r/2,o=Jo.interpolateZoom([(u-k.x)/k.k,(i-k.y)/k.k,e/k.k],[(u-t.x)/t.k,(i-t.y)/t.k,e/t.k]);return function(t){var r=o(t),a=e/r[2];this.__chart__=k={x:u-r[0]*a,y:i-r[1]*a,k:a},c(n)}}).each("interrupt.zoom",function(){s(n)}).each("end.zoom",function(){s(n)}):(this.__chart__=k,l(n),c(n),s(n))})},n.translate=function(t){return arguments.length?(k={x:+t[0],y:+t[1],k:k.k},a(),n):[k.x,k.y]},n.scale=function(t){return arguments.length?(k={x:k.x,y:k.y,k:+t},a(),n):k.k},n.scaleExtent=function(t){return arguments.length?(N=null==t?ja:[+t[0],+t[1]],n):N},n.center=function(t){return arguments.length?(m=t&&[+t[0],+t[1]],n):m},n.size=function(t){return arguments.length?(A=t&&[+t[0],+t[1]],n):A},n.duration=function(t){return arguments.length?(C=+t,n):C},n.x=function(t){return arguments.length?(_=t,x=t.copy(),k={x:0,y:0,k:1},n):_},n.y=function(t){return arguments.length?(w=t,b=t.copy(),k={x:0,y:0,k:1},n):w},Jo.rebind(n,D,"on")};var Da,Pa,ja=[0,1/0];Jo.color=ot,ot.prototype.toString=function(){return this.rgb()+""},Jo.hsl=at;var Ua=at.prototype=new ot;Ua.brighter=function(n){return n=Math.pow(.7,arguments.length?n:1),new at(this.h,this.s,this.l/n)},Ua.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),new at(this.h,this.s,n*this.l)},Ua.rgb=function(){return lt(this.h,this.s,this.l)},Jo.hcl=ct;var Fa=ct.prototype=new ot;Fa.brighter=function(n){return new ct(this.h,this.c,Math.min(100,this.l+Ha*(arguments.length?n:1)))},Fa.darker=function(n){return new ct(this.h,this.c,Math.max(0,this.l-Ha*(arguments.length?n:1)))},Fa.rgb=function(){return st(this.h,this.c,this.l).rgb()},Jo.lab=ft;var Ha=18,Oa=.95047,Ya=1,Ia=1.08883,Za=ft.prototype=new ot;Za.brighter=function(n){return new ft(Math.min(100,this.l+Ha*(arguments.length?n:1)),this.a,this.b)},Za.darker=function(n){return new ft(Math.max(0,this.l-Ha*(arguments.length?n:1)),this.a,this.b)},Za.rgb=function(){return ht(this.l,this.a,this.b)},Jo.rgb=mt;var Va=mt.prototype=new ot;Va.brighter=function(n){n=Math.pow(.7,arguments.length?n:1);var t=this.r,e=this.g,r=this.b,u=30;return t||e||r?(t&&u>t&&(t=u),e&&u>e&&(e=u),r&&u>r&&(r=u),new mt(Math.min(255,t/n),Math.min(255,e/n),Math.min(255,r/n))):new mt(u,u,u)},Va.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),new mt(n*this.r,n*this.g,n*this.b)},Va.hsl=function(){return bt(this.r,this.g,this.b)},Va.toString=function(){return"#"+xt(this.r)+xt(this.g)+xt(this.b)};var Xa=Jo.map({aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074});Xa.forEach(function(n,t){Xa.set(n,yt(t))}),Jo.functor=Et,Jo.xhr=At(y),Jo.dsv=function(n,t){function e(n,e,i){arguments.length<3&&(i=e,e=null);var o=Nt(n,t,null==e?r:u(e),i);return o.row=function(n){return arguments.length?o.response(null==(e=n)?r:u(n)):e},o}function r(n){return e.parse(n.responseText)}function u(n){return function(t){return e.parse(t.responseText,n)}}function i(t){return t.map(o).join(n)}function o(n){return a.test(n)?'"'+n.replace(/\"/g,'""')+'"':n}var a=new RegExp('["'+n+"\n]"),l=n.charCodeAt(0);return e.parse=function(n,t){var r;return e.parseRows(n,function(n,e){if(r)return r(n,e-1);var u=new Function("d","return {"+n.map(function(n,t){return JSON.stringify(n)+": d["+t+"]"}).join(",")+"}");r=t?function(n,e){return t(u(n),e)}:u})},e.parseRows=function(n,t){function e(){if(s>=c)return o;if(u)return u=!1,i;var t=s;if(34===n.charCodeAt(t)){for(var e=t;e++s;){var r=n.charCodeAt(s++),a=1;if(10===r)u=!0;else if(13===r)u=!0,10===n.charCodeAt(s)&&(++s,++a);else if(r!==l)continue;return n.slice(t,s-a)}return n.slice(t)}for(var r,u,i={},o={},a=[],c=n.length,s=0,f=0;(r=e())!==o;){for(var h=[];r!==i&&r!==o;)h.push(r),r=e();t&&null==(h=t(h,f++))||a.push(h)}return a},e.format=function(t){if(Array.isArray(t[0]))return e.formatRows(t);var r=new m,u=[];return t.forEach(function(n){for(var t in n)r.has(t)||u.push(r.add(t))}),[u.map(o).join(n)].concat(t.map(function(t){return u.map(function(n){return o(t[n])}).join(n)})).join("\n")},e.formatRows=function(n){return n.map(i).join("\n")},e},Jo.csv=Jo.dsv(",","text/csv"),Jo.tsv=Jo.dsv(" ","text/tab-separated-values");var $a,Ba,Wa,Ja,Ga,Ka=this[x(this,"requestAnimationFrame")]||function(n){setTimeout(n,17)};Jo.timer=function(n,t,e){var r=arguments.length;2>r&&(t=0),3>r&&(e=Date.now());var u=e+t,i={c:n,t:u,f:!1,n:null};Ba?Ba.n=i:$a=i,Ba=i,Wa||(Ja=clearTimeout(Ja),Wa=1,Ka(qt))},Jo.timer.flush=function(){Lt(),Tt()},Jo.round=function(n,t){return t?Math.round(n*(t=Math.pow(10,t)))/t:Math.round(n)};var Qa=["y","z","a","f","p","n","\xb5","m","","k","M","G","T","P","E","Z","Y"].map(Dt);Jo.formatPrefix=function(n,t){var e=0;return n&&(0>n&&(n*=-1),t&&(n=Jo.round(n,Rt(n,t))),e=1+Math.floor(1e-12+Math.log(n)/Math.LN10),e=Math.max(-24,Math.min(24,3*Math.floor((e-1)/3)))),Qa[8+e/3]};var nl=/(?:([^{])?([<>=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i,tl=Jo.map({b:function(n){return n.toString(2)},c:function(n){return String.fromCharCode(n)},o:function(n){return n.toString(8)},x:function(n){return n.toString(16)},X:function(n){return n.toString(16).toUpperCase()},g:function(n,t){return n.toPrecision(t)},e:function(n,t){return n.toExponential(t)},f:function(n,t){return n.toFixed(t)},r:function(n,t){return(n=Jo.round(n,Rt(n,t))).toFixed(Math.max(0,Math.min(20,Rt(n*(1+1e-15),t))))}}),el=Jo.time={},rl=Date;Ut.prototype={getDate:function(){return this._.getUTCDate()},getDay:function(){return this._.getUTCDay()},getFullYear:function(){return this._.getUTCFullYear()},getHours:function(){return this._.getUTCHours()},getMilliseconds:function(){return this._.getUTCMilliseconds()},getMinutes:function(){return this._.getUTCMinutes()},getMonth:function(){return this._.getUTCMonth()},getSeconds:function(){return this._.getUTCSeconds()},getTime:function(){return this._.getTime()},getTimezoneOffset:function(){return 0},valueOf:function(){return this._.valueOf()},setDate:function(){ul.setUTCDate.apply(this._,arguments)},setDay:function(){ul.setUTCDay.apply(this._,arguments)},setFullYear:function(){ul.setUTCFullYear.apply(this._,arguments)},setHours:function(){ul.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){ul.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){ul.setUTCMinutes.apply(this._,arguments)},setMonth:function(){ul.setUTCMonth.apply(this._,arguments)},setSeconds:function(){ul.setUTCSeconds.apply(this._,arguments)},setTime:function(){ul.setTime.apply(this._,arguments)}};var ul=Date.prototype;el.year=Ft(function(n){return n=el.day(n),n.setMonth(0,1),n},function(n,t){n.setFullYear(n.getFullYear()+t)},function(n){return n.getFullYear()}),el.years=el.year.range,el.years.utc=el.year.utc.range,el.day=Ft(function(n){var t=new rl(2e3,0);return t.setFullYear(n.getFullYear(),n.getMonth(),n.getDate()),t},function(n,t){n.setDate(n.getDate()+t)},function(n){return n.getDate()-1}),el.days=el.day.range,el.days.utc=el.day.utc.range,el.dayOfYear=function(n){var t=el.year(n);return Math.floor((n-t-6e4*(n.getTimezoneOffset()-t.getTimezoneOffset()))/864e5)},["sunday","monday","tuesday","wednesday","thursday","friday","saturday"].forEach(function(n,t){t=7-t;var e=el[n]=Ft(function(n){return(n=el.day(n)).setDate(n.getDate()-(n.getDay()+t)%7),n},function(n,t){n.setDate(n.getDate()+7*Math.floor(t))},function(n){var e=el.year(n).getDay();return Math.floor((el.dayOfYear(n)+(e+t)%7)/7)-(e!==t)});el[n+"s"]=e.range,el[n+"s"].utc=e.utc.range,el[n+"OfYear"]=function(n){var e=el.year(n).getDay();return Math.floor((el.dayOfYear(n)+(e+t)%7)/7)}}),el.week=el.sunday,el.weeks=el.sunday.range,el.weeks.utc=el.sunday.utc.range,el.weekOfYear=el.sundayOfYear;var il={"-":"",_:" ",0:"0"},ol=/^\s*\d+/,al=/^%/;Jo.locale=function(n){return{numberFormat:Pt(n),timeFormat:Ot(n)}};var ll=Jo.locale({decimal:".",thousands:",",grouping:[3],currency:["$",""],dateTime:"%a %b %e %X %Y",date:"%m/%d/%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});Jo.format=ll.numberFormat,Jo.geo={},le.prototype={s:0,t:0,add:function(n){ce(n,this.t,cl),ce(cl.s,this.s,this),this.s?this.t+=cl.t:this.s=cl.t},reset:function(){this.s=this.t=0},valueOf:function(){return this.s}};var cl=new le;Jo.geo.stream=function(n,t){n&&sl.hasOwnProperty(n.type)?sl[n.type](n,t):se(n,t)};var sl={Feature:function(n,t){se(n.geometry,t)},FeatureCollection:function(n,t){for(var e=n.features,r=-1,u=e.length;++rn?4*Ea+n:n,pl.lineStart=pl.lineEnd=pl.point=_}};Jo.geo.bounds=function(){function n(n,t){M.push(x=[s=n,h=n]),f>t&&(f=t),t>g&&(g=t)}function t(t,e){var r=pe([t*za,e*za]);if(m){var u=ve(m,r),i=[u[1],-u[0],0],o=ve(i,u);Me(o),o=xe(o);var l=t-p,c=l>0?1:-1,d=o[0]*qa*c,v=la(l)>180;if(v^(d>c*p&&c*t>d)){var y=o[1]*qa;y>g&&(g=y)}else if(d=(d+360)%360-180,v^(d>c*p&&c*t>d)){var y=-o[1]*qa;f>y&&(f=y)}else f>e&&(f=e),e>g&&(g=e);v?p>t?a(s,t)>a(s,h)&&(h=t):a(t,h)>a(s,h)&&(s=t):h>=s?(s>t&&(s=t),t>h&&(h=t)):t>p?a(s,t)>a(s,h)&&(h=t):a(t,h)>a(s,h)&&(s=t)}else n(t,e);m=r,p=t}function e(){_.point=t}function r(){x[0]=s,x[1]=h,_.point=n,m=null}function u(n,e){if(m){var r=n-p;y+=la(r)>180?r+(r>0?360:-360):r}else d=n,v=e;pl.point(n,e),t(n,e)}function i(){pl.lineStart()}function o(){u(d,v),pl.lineEnd(),la(y)>Sa&&(s=-(h=180)),x[0]=s,x[1]=h,m=null}function a(n,t){return(t-=n)<0?t+360:t}function l(n,t){return n[0]-t[0]}function c(n,t){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:ngl?(s=-(h=180),f=-(g=90)):y>Sa?g=90:-Sa>y&&(f=-90),x[0]=s,x[1]=h}};return function(n){g=h=-(s=f=1/0),M=[],Jo.geo.stream(n,_);var t=M.length;if(t){M.sort(l);for(var e,r=1,u=M[0],i=[u];t>r;++r)e=M[r],c(e[0],u)||c(e[1],u)?(a(u[0],e[1])>a(u[0],u[1])&&(u[1]=e[1]),a(e[0],u[1])>a(u[0],u[1])&&(u[0]=e[0])):i.push(u=e);for(var o,e,p=-1/0,t=i.length-1,r=0,u=i[t];t>=r;u=e,++r)e=i[r],(o=a(u[1],e[0]))>p&&(p=o,s=e[0],h=u[1])}return M=x=null,1/0===s||1/0===f?[[0/0,0/0],[0/0,0/0]]:[[s,f],[h,g]]}}(),Jo.geo.centroid=function(n){dl=vl=ml=yl=Ml=xl=_l=bl=wl=Sl=kl=0,Jo.geo.stream(n,El);var t=wl,e=Sl,r=kl,u=t*t+e*e+r*r;return ka>u&&(t=xl,e=_l,r=bl,Sa>vl&&(t=ml,e=yl,r=Ml),u=t*t+e*e+r*r,ka>u)?[0/0,0/0]:[Math.atan2(e,t)*qa,tt(r/Math.sqrt(u))*qa]};var dl,vl,ml,yl,Ml,xl,_l,bl,wl,Sl,kl,El={sphere:_,point:be,lineStart:Se,lineEnd:ke,polygonStart:function(){El.lineStart=Ee},polygonEnd:function(){El.lineStart=Se}},Al=Le(Ne,Pe,Ue,[-Ea,-Ea/2]),Nl=1e9;Jo.geo.clipExtent=function(){var n,t,e,r,u,i,o={stream:function(n){return u&&(u.valid=!1),u=i(n),u.valid=!0,u},extent:function(a){return arguments.length?(i=Ye(n=+a[0][0],t=+a[0][1],e=+a[1][0],r=+a[1][1]),u&&(u.valid=!1,u=null),o):[[n,t],[e,r]]}};return o.extent([[0,0],[960,500]])},(Jo.geo.conicEqualArea=function(){return Ie(Ze)}).raw=Ze,Jo.geo.albers=function(){return Jo.geo.conicEqualArea().rotate([96,0]).center([-.6,38.7]).parallels([29.5,45.5]).scale(1070)},Jo.geo.albersUsa=function(){function n(n){var i=n[0],o=n[1];return t=null,e(i,o),t||(r(i,o),t)||u(i,o),t}var t,e,r,u,i=Jo.geo.albers(),o=Jo.geo.conicEqualArea().rotate([154,0]).center([-2,58.5]).parallels([55,65]),a=Jo.geo.conicEqualArea().rotate([157,0]).center([-3,19.9]).parallels([8,18]),l={point:function(n,e){t=[n,e]}};return n.invert=function(n){var t=i.scale(),e=i.translate(),r=(n[0]-e[0])/t,u=(n[1]-e[1])/t;return(u>=.12&&.234>u&&r>=-.425&&-.214>r?o:u>=.166&&.234>u&&r>=-.214&&-.115>r?a:i).invert(n)},n.stream=function(n){var t=i.stream(n),e=o.stream(n),r=a.stream(n);return{point:function(n,u){t.point(n,u),e.point(n,u),r.point(n,u)},sphere:function(){t.sphere(),e.sphere(),r.sphere()},lineStart:function(){t.lineStart(),e.lineStart(),r.lineStart()},lineEnd:function(){t.lineEnd(),e.lineEnd(),r.lineEnd()},polygonStart:function(){t.polygonStart(),e.polygonStart(),r.polygonStart()},polygonEnd:function(){t.polygonEnd(),e.polygonEnd(),r.polygonEnd()}}},n.precision=function(t){return arguments.length?(i.precision(t),o.precision(t),a.precision(t),n):i.precision()},n.scale=function(t){return arguments.length?(i.scale(t),o.scale(.35*t),a.scale(t),n.translate(i.translate())):i.scale()},n.translate=function(t){if(!arguments.length)return i.translate();var c=i.scale(),s=+t[0],f=+t[1];return e=i.translate(t).clipExtent([[s-.455*c,f-.238*c],[s+.455*c,f+.238*c]]).stream(l).point,r=o.translate([s-.307*c,f+.201*c]).clipExtent([[s-.425*c+Sa,f+.12*c+Sa],[s-.214*c-Sa,f+.234*c-Sa]]).stream(l).point,u=a.translate([s-.205*c,f+.212*c]).clipExtent([[s-.214*c+Sa,f+.166*c+Sa],[s-.115*c-Sa,f+.234*c-Sa]]).stream(l).point,n},n.scale(1070)};var Cl,zl,ql,Ll,Tl,Rl,Dl={point:_,lineStart:_,lineEnd:_,polygonStart:function(){zl=0,Dl.lineStart=Ve},polygonEnd:function(){Dl.lineStart=Dl.lineEnd=Dl.point=_,Cl+=la(zl/2)}},Pl={point:Xe,lineStart:_,lineEnd:_,polygonStart:_,polygonEnd:_},jl={point:We,lineStart:Je,lineEnd:Ge,polygonStart:function(){jl.lineStart=Ke},polygonEnd:function(){jl.point=We,jl.lineStart=Je,jl.lineEnd=Ge}};Jo.geo.path=function(){function n(n){return n&&("function"==typeof a&&i.pointRadius(+a.apply(this,arguments)),o&&o.valid||(o=u(i)),Jo.geo.stream(n,o)),i.result()}function t(){return o=null,n}var e,r,u,i,o,a=4.5;return n.area=function(n){return Cl=0,Jo.geo.stream(n,u(Dl)),Cl},n.centroid=function(n){return ml=yl=Ml=xl=_l=bl=wl=Sl=kl=0,Jo.geo.stream(n,u(jl)),kl?[wl/kl,Sl/kl]:bl?[xl/bl,_l/bl]:Ml?[ml/Ml,yl/Ml]:[0/0,0/0]},n.bounds=function(n){return Tl=Rl=-(ql=Ll=1/0),Jo.geo.stream(n,u(Pl)),[[ql,Ll],[Tl,Rl]]},n.projection=function(n){return arguments.length?(u=(e=n)?n.stream||tr(n):y,t()):e},n.context=function(n){return arguments.length?(i=null==(r=n)?new $e:new Qe(n),"function"!=typeof a&&i.pointRadius(a),t()):r},n.pointRadius=function(t){return arguments.length?(a="function"==typeof t?t:(i.pointRadius(+t),+t),n):a},n.projection(Jo.geo.albersUsa()).context(null)},Jo.geo.transform=function(n){return{stream:function(t){var e=new er(t);for(var r in n)e[r]=n[r];return e}}},er.prototype={point:function(n,t){this.stream.point(n,t)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}},Jo.geo.projection=ur,Jo.geo.projectionMutator=ir,(Jo.geo.equirectangular=function(){return ur(ar)}).raw=ar.invert=ar,Jo.geo.rotation=function(n){function t(t){return t=n(t[0]*za,t[1]*za),t[0]*=qa,t[1]*=qa,t}return n=cr(n[0]%360*za,n[1]*za,n.length>2?n[2]*za:0),t.invert=function(t){return t=n.invert(t[0]*za,t[1]*za),t[0]*=qa,t[1]*=qa,t},t},lr.invert=ar,Jo.geo.circle=function(){function n(){var n="function"==typeof r?r.apply(this,arguments):r,t=cr(-n[0]*za,-n[1]*za,0).invert,u=[];return e(null,null,1,{point:function(n,e){u.push(n=t(n,e)),n[0]*=qa,n[1]*=qa}}),{type:"Polygon",coordinates:[u]}}var t,e,r=[0,0],u=6;return n.origin=function(t){return arguments.length?(r=t,n):r},n.angle=function(r){return arguments.length?(e=gr((t=+r)*za,u*za),n):t},n.precision=function(r){return arguments.length?(e=gr(t*za,(u=+r)*za),n):u},n.angle(90)},Jo.geo.distance=function(n,t){var e,r=(t[0]-n[0])*za,u=n[1]*za,i=t[1]*za,o=Math.sin(r),a=Math.cos(r),l=Math.sin(u),c=Math.cos(u),s=Math.sin(i),f=Math.cos(i);return Math.atan2(Math.sqrt((e=f*o)*e+(e=c*s-l*f*a)*e),l*s+c*f*a)},Jo.geo.graticule=function(){function n(){return{type:"MultiLineString",coordinates:t()}}function t(){return Jo.range(Math.ceil(i/v)*v,u,v).map(h).concat(Jo.range(Math.ceil(c/m)*m,l,m).map(g)).concat(Jo.range(Math.ceil(r/p)*p,e,p).filter(function(n){return la(n%v)>Sa}).map(s)).concat(Jo.range(Math.ceil(a/d)*d,o,d).filter(function(n){return la(n%m)>Sa}).map(f))}var e,r,u,i,o,a,l,c,s,f,h,g,p=10,d=p,v=90,m=360,y=2.5;return n.lines=function(){return t().map(function(n){return{type:"LineString",coordinates:n}})},n.outline=function(){return{type:"Polygon",coordinates:[h(i).concat(g(l).slice(1),h(u).reverse().slice(1),g(c).reverse().slice(1))]}},n.extent=function(t){return arguments.length?n.majorExtent(t).minorExtent(t):n.minorExtent()},n.majorExtent=function(t){return arguments.length?(i=+t[0][0],u=+t[1][0],c=+t[0][1],l=+t[1][1],i>u&&(t=i,i=u,u=t),c>l&&(t=c,c=l,l=t),n.precision(y)):[[i,c],[u,l]]},n.minorExtent=function(t){return arguments.length?(r=+t[0][0],e=+t[1][0],a=+t[0][1],o=+t[1][1],r>e&&(t=r,r=e,e=t),a>o&&(t=a,a=o,o=t),n.precision(y)):[[r,a],[e,o]]},n.step=function(t){return arguments.length?n.majorStep(t).minorStep(t):n.minorStep()},n.majorStep=function(t){return arguments.length?(v=+t[0],m=+t[1],n):[v,m]},n.minorStep=function(t){return arguments.length?(p=+t[0],d=+t[1],n):[p,d]},n.precision=function(t){return arguments.length?(y=+t,s=dr(a,o,90),f=vr(r,e,y),h=dr(c,l,90),g=vr(i,u,y),n):y},n.majorExtent([[-180,-90+Sa],[180,90-Sa]]).minorExtent([[-180,-80-Sa],[180,80+Sa]])},Jo.geo.greatArc=function(){function n(){return{type:"LineString",coordinates:[t||r.apply(this,arguments),e||u.apply(this,arguments)]}}var t,e,r=mr,u=yr;return n.distance=function(){return Jo.geo.distance(t||r.apply(this,arguments),e||u.apply(this,arguments))},n.source=function(e){return arguments.length?(r=e,t="function"==typeof e?null:e,n):r},n.target=function(t){return arguments.length?(u=t,e="function"==typeof t?null:t,n):u},n.precision=function(){return arguments.length?n:0},n},Jo.geo.interpolate=function(n,t){return Mr(n[0]*za,n[1]*za,t[0]*za,t[1]*za)},Jo.geo.length=function(n){return Ul=0,Jo.geo.stream(n,Fl),Ul};var Ul,Fl={sphere:_,point:_,lineStart:xr,lineEnd:_,polygonStart:_,polygonEnd:_},Hl=_r(function(n){return Math.sqrt(2/(1+n))},function(n){return 2*Math.asin(n/2)});(Jo.geo.azimuthalEqualArea=function(){return ur(Hl)}).raw=Hl;var Ol=_r(function(n){var t=Math.acos(n);return t&&t/Math.sin(t)},y);(Jo.geo.azimuthalEquidistant=function(){return ur(Ol)}).raw=Ol,(Jo.geo.conicConformal=function(){return Ie(br)}).raw=br,(Jo.geo.conicEquidistant=function(){return Ie(wr)}).raw=wr;var Yl=_r(function(n){return 1/n},Math.atan);(Jo.geo.gnomonic=function(){return ur(Yl)}).raw=Yl,Sr.invert=function(n,t){return[n,2*Math.atan(Math.exp(t))-Ca]},(Jo.geo.mercator=function(){return kr(Sr)}).raw=Sr;var Il=_r(function(){return 1},Math.asin);(Jo.geo.orthographic=function(){return ur(Il)}).raw=Il;var Zl=_r(function(n){return 1/(1+n)},function(n){return 2*Math.atan(n)});(Jo.geo.stereographic=function(){return ur(Zl)}).raw=Zl,Er.invert=function(n,t){return[-t,2*Math.atan(Math.exp(n))-Ca]},(Jo.geo.transverseMercator=function(){var n=kr(Er),t=n.center,e=n.rotate;return n.center=function(n){return n?t([-n[1],n[0]]):(n=t(),[n[1],-n[0]])},n.rotate=function(n){return n?e([n[0],n[1],n.length>2?n[2]+90:90]):(n=e(),[n[0],n[1],n[2]-90])},e([0,0,90])}).raw=Er,Jo.geom={},Jo.geom.hull=function(n){function t(n){if(n.length<3)return[];var t,u=Et(e),i=Et(r),o=n.length,a=[],l=[];for(t=0;o>t;t++)a.push([+u.call(this,n[t],t),+i.call(this,n[t],t),t]);for(a.sort(zr),t=0;o>t;t++)l.push([a[t][0],-a[t][1]]);var c=Cr(a),s=Cr(l),f=s[0]===c[0],h=s[s.length-1]===c[c.length-1],g=[];for(t=c.length-1;t>=0;--t)g.push(n[a[c[t]][2]]);for(t=+f;t=r&&c.x<=i&&c.y>=u&&c.y<=o?[[r,o],[i,o],[i,u],[r,u]]:[];s.point=n[a]}),t}function e(n){return n.map(function(n,t){return{x:Math.round(i(n,t)/Sa)*Sa,y:Math.round(o(n,t)/Sa)*Sa,i:t}})}var r=Ar,u=Nr,i=r,o=u,a=Ql;return n?t(n):(t.links=function(n){return iu(e(n)).edges.filter(function(n){return n.l&&n.r}).map(function(t){return{source:n[t.l.i],target:n[t.r.i]}})},t.triangles=function(n){var t=[];return iu(e(n)).cells.forEach(function(e,r){for(var u,i,o=e.site,a=e.edges.sort(Ir),l=-1,c=a.length,s=a[c-1].edge,f=s.l===o?s.r:s.l;++l=c,h=r>=s,g=h<<1|f;n.leaf=!1,n=n.nodes[g]||(n.nodes[g]=su()),f?u=c:a=c,h?o=s:l=s,i(n,t,e,r,u,o,a,l)}var s,f,h,g,p,d,v,m,y,M=Et(a),x=Et(l);if(null!=t)d=t,v=e,m=r,y=u;else if(m=y=-(d=v=1/0),f=[],h=[],p=n.length,o)for(g=0;p>g;++g)s=n[g],s.xm&&(m=s.x),s.y>y&&(y=s.y),f.push(s.x),h.push(s.y);else for(g=0;p>g;++g){var _=+M(s=n[g],g),b=+x(s,g);d>_&&(d=_),v>b&&(v=b),_>m&&(m=_),b>y&&(y=b),f.push(_),h.push(b)}var w=m-d,S=y-v;w>S?y=v+w:m=d+S;var k=su();if(k.add=function(n){i(k,n,+M(n,++g),+x(n,g),d,v,m,y)},k.visit=function(n){fu(n,k,d,v,m,y)},k.find=function(n){return hu(k,n[0],n[1],d,v,m,y)},g=-1,null==t){for(;++g=0?n.slice(0,t):n,r=t>=0?n.slice(t+1):"in";return e=rc.get(e)||ec,r=uc.get(r)||y,Mu(r(e.apply(null,Go.call(arguments,1))))},Jo.interpolateHcl=Lu,Jo.interpolateHsl=Tu,Jo.interpolateLab=Ru,Jo.interpolateRound=Du,Jo.transform=function(n){var t=Qo.createElementNS(Jo.ns.prefix.svg,"g");return(Jo.transform=function(n){if(null!=n){t.setAttribute("transform",n);var e=t.transform.baseVal.consolidate()}return new Pu(e?e.matrix:ic)})(n)},Pu.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var ic={a:1,b:0,c:0,d:1,e:0,f:0};Jo.interpolateTransform=Hu,Jo.layout={},Jo.layout.bundle=function(){return function(n){for(var t=[],e=-1,r=n.length;++ea*a/v){if(p>l){var c=t.charge/l;n.px-=i*c,n.py-=o*c}return!0}if(t.point&&l&&p>l){var c=t.pointCharge/l;n.px-=i*c,n.py-=o*c}}return!t.charge}}function t(n){n.px=Jo.event.x,n.py=Jo.event.y,a.resume()}var e,r,u,i,o,a={},l=Jo.dispatch("start","tick","end"),c=[1,1],s=.9,f=oc,h=ac,g=-30,p=lc,d=.1,v=.64,m=[],M=[];return a.tick=function(){if((r*=.99)<.005)return l.end({type:"end",alpha:r=0}),!0;var t,e,a,f,h,p,v,y,x,_=m.length,b=M.length;for(e=0;b>e;++e)a=M[e],f=a.source,h=a.target,y=h.x-f.x,x=h.y-f.y,(p=y*y+x*x)&&(p=r*i[e]*((p=Math.sqrt(p))-u[e])/p,y*=p,x*=p,h.x-=y*(v=f.weight/(h.weight+f.weight)),h.y-=x*v,f.x+=y*(v=1-v),f.y+=x*v);if((v=r*d)&&(y=c[0]/2,x=c[1]/2,e=-1,v))for(;++e<_;)a=m[e],a.x+=(y-a.x)*v,a.y+=(x-a.y)*v;if(g)for(Ju(t=Jo.geom.quadtree(m),r,o),e=-1;++e<_;)(a=m[e]).fixed||t.visit(n(a));for(e=-1;++e<_;)a=m[e],a.fixed?(a.x=a.px,a.y=a.py):(a.x-=(a.px-(a.px=a.x))*s,a.y-=(a.py-(a.py=a.y))*s);l.tick({type:"tick",alpha:r})},a.nodes=function(n){return arguments.length?(m=n,a):m},a.links=function(n){return arguments.length?(M=n,a):M},a.size=function(n){return arguments.length?(c=n,a):c},a.linkDistance=function(n){return arguments.length?(f="function"==typeof n?n:+n,a):f},a.distance=a.linkDistance,a.linkStrength=function(n){return arguments.length?(h="function"==typeof n?n:+n,a):h},a.friction=function(n){return arguments.length?(s=+n,a):s},a.charge=function(n){return arguments.length?(g="function"==typeof n?n:+n,a):g},a.chargeDistance=function(n){return arguments.length?(p=n*n,a):Math.sqrt(p)},a.gravity=function(n){return arguments.length?(d=+n,a):d},a.theta=function(n){return arguments.length?(v=n*n,a):Math.sqrt(v)},a.alpha=function(n){return arguments.length?(n=+n,r?r=n>0?n:0:n>0&&(l.start({type:"start",alpha:r=n}),Jo.timer(a.tick)),a):r},a.start=function(){function n(n,r){if(!e){for(e=new Array(l),a=0;l>a;++a)e[a]=[];for(a=0;s>a;++a){var u=M[a];e[u.source.index].push(u.target),e[u.target.index].push(u.source)}}for(var i,o=e[t],a=-1,c=o.length;++at;++t)(r=m[t]).index=t,r.weight=0;for(t=0;s>t;++t)r=M[t],"number"==typeof r.source&&(r.source=m[r.source]),"number"==typeof r.target&&(r.target=m[r.target]),++r.source.weight,++r.target.weight;for(t=0;l>t;++t)r=m[t],isNaN(r.x)&&(r.x=n("x",p)),isNaN(r.y)&&(r.y=n("y",d)),isNaN(r.px)&&(r.px=r.x),isNaN(r.py)&&(r.py=r.y);if(u=[],"function"==typeof f)for(t=0;s>t;++t)u[t]=+f.call(this,M[t],t);else for(t=0;s>t;++t)u[t]=f;if(i=[],"function"==typeof h)for(t=0;s>t;++t)i[t]=+h.call(this,M[t],t);else for(t=0;s>t;++t)i[t]=h;if(o=[],"function"==typeof g)for(t=0;l>t;++t)o[t]=+g.call(this,m[t],t);else for(t=0;l>t;++t)o[t]=g;return a.resume()},a.resume=function(){return a.alpha(.1)},a.stop=function(){return a.alpha(0)},a.drag=function(){return e||(e=Jo.behavior.drag().origin(y).on("dragstart.force",Xu).on("drag.force",t).on("dragend.force",$u)),arguments.length?void this.on("mouseover.force",Bu).on("mouseout.force",Wu).call(e):e},Jo.rebind(a,l,"on")};var oc=20,ac=1,lc=1/0;Jo.layout.hierarchy=function(){function n(u){var i,o=[u],a=[];for(u.depth=0;null!=(i=o.pop());)if(a.push(i),(c=e.call(n,i,i.depth))&&(l=c.length)){for(var l,c,s;--l>=0;)o.push(s=c[l]),s.parent=i,s.depth=i.depth+1;r&&(i.value=0),i.children=c}else r&&(i.value=+r.call(n,i,i.depth)||0),delete i.children;return Qu(u,function(n){var e,u;t&&(e=n.children)&&e.sort(t),r&&(u=n.parent)&&(u.value+=n.value)}),a}var t=ei,e=ni,r=ti;return n.sort=function(e){return arguments.length?(t=e,n):t},n.children=function(t){return arguments.length?(e=t,n):e},n.value=function(t){return arguments.length?(r=t,n):r},n.revalue=function(t){return r&&(Ku(t,function(n){n.children&&(n.value=0)}),Qu(t,function(t){var e;t.children||(t.value=+r.call(n,t,t.depth)||0),(e=t.parent)&&(e.value+=t.value)})),t},n},Jo.layout.partition=function(){function n(t,e,r,u){var i=t.children;if(t.x=e,t.y=t.depth*u,t.dx=r,t.dy=u,i&&(o=i.length)){var o,a,l,c=-1;for(r=t.value?r/t.value:0;++cf?-1:1),p=(f-l*g)/Jo.sum(c),d=Jo.range(l),v=[];return null!=e&&d.sort(e===cc?function(n,t){return c[t]-c[n]}:function(n,t){return e(o[n],o[t])}),d.forEach(function(n){v[n]={data:o[n],value:a=c[n],startAngle:s,endAngle:s+=a*p+g,padAngle:h}}),v}var t=Number,e=cc,r=0,u=Aa,i=0;return n.value=function(e){return arguments.length?(t=e,n):t},n.sort=function(t){return arguments.length?(e=t,n):e},n.startAngle=function(t){return arguments.length?(r=t,n):r},n.endAngle=function(t){return arguments.length?(u=t,n):u},n.padAngle=function(t){return arguments.length?(i=t,n):i},n};var cc={};Jo.layout.stack=function(){function n(a,l){if(!(h=a.length))return a;var c=a.map(function(e,r){return t.call(n,e,r)}),s=c.map(function(t){return t.map(function(t,e){return[i.call(n,t,e),o.call(n,t,e)]})}),f=e.call(n,s,l);c=Jo.permute(c,f),s=Jo.permute(s,f);var h,g,p,d,v=r.call(n,s,l),m=c[0].length;for(p=0;m>p;++p)for(u.call(n,c[0][p],d=v[p],s[0][p][1]),g=1;h>g;++g)u.call(n,c[g][p],d+=s[g-1][p][1],s[g][p][1]);return a}var t=y,e=ai,r=li,u=oi,i=ui,o=ii;return n.values=function(e){return arguments.length?(t=e,n):t},n.order=function(t){return arguments.length?(e="function"==typeof t?t:sc.get(t)||ai,n):e},n.offset=function(t){return arguments.length?(r="function"==typeof t?t:fc.get(t)||li,n):r},n.x=function(t){return arguments.length?(i=t,n):i},n.y=function(t){return arguments.length?(o=t,n):o},n.out=function(t){return arguments.length?(u=t,n):u},n};var sc=Jo.map({"inside-out":function(n){var t,e,r=n.length,u=n.map(ci),i=n.map(si),o=Jo.range(r).sort(function(n,t){return u[n]-u[t]}),a=0,l=0,c=[],s=[];for(t=0;r>t;++t)e=o[t],l>a?(a+=i[e],c.push(e)):(l+=i[e],s.push(e));return s.reverse().concat(c)},reverse:function(n){return Jo.range(n.length).reverse()},"default":ai}),fc=Jo.map({silhouette:function(n){var t,e,r,u=n.length,i=n[0].length,o=[],a=0,l=[];for(e=0;i>e;++e){for(t=0,r=0;u>t;t++)r+=n[t][e][1];r>a&&(a=r),o.push(r)}for(e=0;i>e;++e)l[e]=(a-o[e])/2;return l},wiggle:function(n){var t,e,r,u,i,o,a,l,c,s=n.length,f=n[0],h=f.length,g=[];for(g[0]=l=c=0,e=1;h>e;++e){for(t=0,u=0;s>t;++t)u+=n[t][e][1];for(t=0,i=0,a=f[e][0]-f[e-1][0];s>t;++t){for(r=0,o=(n[t][e][1]-n[t][e-1][1])/(2*a);t>r;++r)o+=(n[r][e][1]-n[r][e-1][1])/a;i+=o*n[t][e][1]}g[e]=l-=u?i/u*a:0,c>l&&(c=l)}for(e=0;h>e;++e)g[e]-=c;return g},expand:function(n){var t,e,r,u=n.length,i=n[0].length,o=1/u,a=[];for(e=0;i>e;++e){for(t=0,r=0;u>t;t++)r+=n[t][e][1];if(r)for(t=0;u>t;t++)n[t][e][1]/=r;else for(t=0;u>t;t++)n[t][e][1]=o}for(e=0;i>e;++e)a[e]=0;return a},zero:li});Jo.layout.histogram=function(){function n(n,i){for(var o,a,l=[],c=n.map(e,this),s=r.call(this,c,i),f=u.call(this,s,c,i),i=-1,h=c.length,g=f.length-1,p=t?1:1/h;++i0)for(i=-1;++i=s[0]&&a<=s[1]&&(o=l[Jo.bisect(f,a,1,g)-1],o.y+=p,o.push(n[i]));return l}var t=!0,e=Number,r=pi,u=hi;return n.value=function(t){return arguments.length?(e=t,n):e},n.range=function(t){return arguments.length?(r=Et(t),n):r},n.bins=function(t){return arguments.length?(u="number"==typeof t?function(n){return gi(n,t)}:Et(t),n):u},n.frequency=function(e){return arguments.length?(t=!!e,n):t},n},Jo.layout.pack=function(){function n(n,i){var o=e.call(this,n,i),a=o[0],l=u[0],c=u[1],s=null==t?Math.sqrt:"function"==typeof t?t:function(){return t};if(a.x=a.y=0,Qu(a,function(n){n.r=+s(n.value)}),Qu(a,Mi),r){var f=r*(t?1:Math.max(2*a.r/l,2*a.r/c))/2;Qu(a,function(n){n.r+=f}),Qu(a,Mi),Qu(a,function(n){n.r-=f})}return bi(a,l/2,c/2,t?1:1/Math.max(2*a.r/l,2*a.r/c)),o}var t,e=Jo.layout.hierarchy().sort(di),r=0,u=[1,1];return n.size=function(t){return arguments.length?(u=t,n):u},n.radius=function(e){return arguments.length?(t=null==e||"function"==typeof e?e:+e,n):t},n.padding=function(t){return arguments.length?(r=+t,n):r},Gu(n,e)},Jo.layout.tree=function(){function n(n,r){var i=x.call(this,n,r),o=i[0],a=t(o);return E=a,e(a,0),u(a),p(a,0),y(a),i}function t(n){var e={t:n,prelim:0,mod:0,shift:0,change:0,msel:0,mser:0};if(n.x=0,n.y=0,w)e.x_size=1,e.y_size=1;else if("object"==typeof S)e.x_size=S[0],e.y_size=S[1];else{var r=S(n);e.x_size=r[0],e.y_size=r[1]}k&&(n.x_size=e.x_size,n.y_size=e.y_size);for(var u=[],i=n.children?n.children.length:0,o=0;i>o;++o)u.push(t(n.children[o]));return e.children=u,e.num_children=i,e}function e(n,t){n.t.y=t,n.t.depth=0,r(n)}function r(n){var t,e=n.t.y+n.y_size,u=n.t.depth+1;for(t=0;te.lowY&&(e=e.nxt);var g=u+r.prelim-(o+i.prelim);null!=_?g+=_(r.t,i.t)*E.x_size:null!=b&&(g+=r.x_size/2+i.x_size/2+b(r.t,i.t)),g>0?(o+=g,a(n,t,e.index,g)):1===t&&0===o&&0===r.num_children&&i.num_children>1&&0>g&&(o+=g,a(n,t,e.index,g));var p=s(r),d=s(i);d>=p&&(r=c(r),null!=r&&(u+=r.mod)),p>=d&&(i=l(i),null!=i&&(o+=i.mod))}null==r&&null!=i?f(n,t,i,o):null!=r&&null==i&&h(n,t,r,u)}function a(n,t,e,r){n.children[t].mod+=r,n.children[t].msel+=r,n.children[t].mser+=r,d(n,t,e,r)}function l(n){return 0==n.num_children?n.tl:n.children[0]}function c(n){return 0==n.num_children?n.tr:n.children[n.num_children-1]}function s(n){return n.t.y+n.y_size}function f(n,t,e,r){var u=n.children[0].el;u.tl=e;var i=r-e.mod-n.children[0].msel;u.mod+=i,u.prelim-=i,n.children[0].el=n.children[t].el,n.children[0].msel=n.children[t].msel}function h(n,t,e,r){var u=n.children[t].er;u.tr=e;var i=r-e.mod-n.children[t].mser;u.mod+=i,u.prelim-=i,n.children[t].er=n.children[t-1].er,n.children[t].mser=n.children[t-1].mser}function g(n){n.prelim=(n.children[0].prelim+n.children[0].mod-n.children[0].x_size/2+n.children[n.num_children-1].mod+n.children[n.num_children-1].prelim+n.children[n.num_children-1].x_size/2)/2}function p(n,t){t+=n.mod,n.t.x=n.prelim+t,v(n);for(var e=0;e=e.lowY;)e=e.nxt;return{lowY:n,index:t,nxt:e}}function y(n){if(null!=w){for(var t,e=n,r=n,u=n,i=[n];t=i.pop();){var o=t.t;o.xr.t.x&&(r=t),o.depth>u.t.depth&&(u=t),t.children&&(i=i.concat(t.children))}var a=null==_?.5:_(e.t,r.t)/2,l=a-e.t.x,c=w[0]/(r.t.x+a+l),s=w[1]/(u.t.depth>0?u.t.depth:1);for(i=[n];t=i.pop();){var o=t.t;o.x=(o.x+l)*c,o.y=o.depth*s,k&&(o.x_size*=c,o.y_size*=s),t.children&&(i=i.concat(t.children))}}else{var f=n.t.x;M(n,-f)}}function M(n,t){n.t.x+=t;for(var e=0;et?0:t),e.area=isNaN(r)||0>=r?0:r}function t(e){var i=e.children;if(i&&i.length){var o,a,l,c=f(e),s=[],h=i.slice(),p=1/0,d="slice"===g?c.dx:"dice"===g?c.dy:"slice-dice"===g?1&e.depth?c.dy:c.dx:Math.min(c.dx,c.dy);for(n(h,c.dx*c.dy/e.value),s.area=0;(l=h.length)>0;)s.push(o=h[l-1]),s.area+=o.area,"squarify"!==g||(a=r(s,d))<=p?(h.pop(),p=a):(s.area-=s.pop().area,u(s,d,c,!1),d=Math.min(c.dx,c.dy),s.length=s.area=0,p=1/0);s.length&&(u(s,d,c,!0),s.length=s.area=0),i.forEach(t)}}function e(t){var r=t.children;if(r&&r.length){var i,o=f(t),a=r.slice(),l=[];for(n(a,o.dx*o.dy/t.value),l.area=0;i=a.pop();)l.push(i),l.area+=i.area,null!=i.z&&(u(l,i.z?o.dx:o.dy,o,!a.length),l.length=l.area=0);r.forEach(e)}}function r(n,t){for(var e,r=n.area,u=0,i=1/0,o=-1,a=n.length;++oe&&(i=e),e>u&&(u=e));return r*=r,t*=t,r?Math.max(t*u*p/r,r/(t*i*p)):1/0}function u(n,t,e,r){var u,i=-1,o=n.length,a=e.x,c=e.y,s=t?l(n.area/t):0;if(t==e.dx){for((r||s>e.dy)&&(s=e.dy);++ie.dx)&&(s=e.dx);++ie&&(t=1),1>e&&(n=0),function(){var e,r,u;do e=2*Math.random()-1,r=2*Math.random()-1,u=e*e+r*r;while(!u||u>1);return n+t*e*Math.sqrt(-2*Math.log(u)/u)}},logNormal:function(){var n=Jo.random.normal.apply(Jo,arguments);return function(){return Math.exp(n())}},bates:function(n){var t=Jo.random.irwinHall(n);return function(){return t()/n}},irwinHall:function(n){return function(){for(var t=0,e=0;n>e;e++)t+=Math.random();return t}}},Jo.scale={};var hc={floor:y,ceil:y};Jo.scale.linear=function(){return ji([0,1],[0,1],mu,!1)};var gc={s:1,g:1,p:1,r:1,e:1};Jo.scale.log=function(){return Vi(Jo.scale.linear().domain([0,1]),10,!0,[1,10])};var pc=Jo.format(".0e"),dc={floor:function(n){return-Math.ceil(-n)},ceil:function(n){return-Math.floor(-n)}};Jo.scale.pow=function(){return Xi(Jo.scale.linear(),1,[0,1])},Jo.scale.sqrt=function(){return Jo.scale.pow().exponent(.5)},Jo.scale.ordinal=function(){return Bi([],{t:"range",a:[[]]})},Jo.scale.category10=function(){return Jo.scale.ordinal().range(vc)},Jo.scale.category20=function(){return Jo.scale.ordinal().range(mc)},Jo.scale.category20b=function(){return Jo.scale.ordinal().range(yc)},Jo.scale.category20c=function(){return Jo.scale.ordinal().range(Mc)};var vc=[2062260,16744206,2924588,14034728,9725885,9197131,14907330,8355711,12369186,1556175].map(Mt),mc=[2062260,11454440,16744206,16759672,2924588,10018698,14034728,16750742,9725885,12955861,9197131,12885140,14907330,16234194,8355711,13092807,12369186,14408589,1556175,10410725].map(Mt),yc=[3750777,5395619,7040719,10264286,6519097,9216594,11915115,13556636,9202993,12426809,15186514,15190932,8666169,11356490,14049643,15177372,8077683,10834324,13528509,14589654].map(Mt),Mc=[3244733,7057110,10406625,13032431,15095053,16616764,16625259,16634018,3253076,7652470,10607003,13101504,7695281,10394312,12369372,14342891,6513507,9868950,12434877,14277081].map(Mt);Jo.scale.quantile=function(){return Wi([],[])},Jo.scale.quantize=function(){return Ji(0,1,[0,1])},Jo.scale.threshold=function(){return Gi([.5],[0,1])},Jo.scale.identity=function(){return Ki([0,1])},Jo.svg={},Jo.svg.arc=function(){function n(){var n=Math.max(0,+e.apply(this,arguments)),c=Math.max(0,+r.apply(this,arguments)),s=o.apply(this,arguments)-Ca,f=a.apply(this,arguments)-Ca,h=Math.abs(f-s),g=s>f?0:1;if(n>c&&(p=c,c=n,n=p),h>=Na)return t(c,g)+(n?t(n,1-g):"")+"Z";var p,d,v,m,y,M,x,_,b,w,S,k,E=0,A=0,N=[];if((m=(+l.apply(this,arguments)||0)/2)&&(v=i===xc?Math.sqrt(n*n+c*c):+i.apply(this,arguments),g||(A*=-1),c&&(A=tt(v/c*Math.sin(m))),n&&(E=tt(v/n*Math.sin(m)))),c){y=c*Math.cos(s+A),M=c*Math.sin(s+A),x=c*Math.cos(f-A),_=c*Math.sin(f-A);var C=Math.abs(f-s-2*A)<=Ea?0:1;if(A&&io(y,M,x,_)===g^C){var z=(s+f)/2;y=c*Math.cos(z),M=c*Math.sin(z),x=_=null}}else y=M=0;if(n){b=n*Math.cos(f-E),w=n*Math.sin(f-E),S=n*Math.cos(s+E),k=n*Math.sin(s+E);var q=Math.abs(s-f+2*E)<=Ea?0:1;if(E&&io(b,w,S,k)===1-g^q){var L=(s+f)/2;b=n*Math.cos(L),w=n*Math.sin(L),S=k=null}}else b=w=0;if((p=Math.min(Math.abs(c-n)/2,+u.apply(this,arguments)))>.001){d=c>n^g?0:1;var T=null==S?[b,w]:null==x?[y,M]:Lr([y,M],[S,k],[x,_],[b,w]),R=y-T[0],D=M-T[1],P=x-T[0],j=_-T[1],U=1/Math.sin(Math.acos((R*P+D*j)/(Math.sqrt(R*R+D*D)*Math.sqrt(P*P+j*j)))/2),F=Math.sqrt(T[0]*T[0]+T[1]*T[1]);if(null!=x){var H=Math.min(p,(c-F)/(U+1)),O=oo(null==S?[b,w]:[S,k],[y,M],c,H,g),Y=oo([x,_],[b,w],c,H,g);p===H?N.push("M",O[0],"A",H,",",H," 0 0,",d," ",O[1],"A",c,",",c," 0 ",1-g^io(O[1][0],O[1][1],Y[1][0],Y[1][1]),",",g," ",Y[1],"A",H,",",H," 0 0,",d," ",Y[0]):N.push("M",O[0],"A",H,",",H," 0 1,",d," ",Y[0])}else N.push("M",y,",",M);if(null!=S){var I=Math.min(p,(n-F)/(U-1)),Z=oo([y,M],[S,k],n,-I,g),V=oo([b,w],null==x?[y,M]:[x,_],n,-I,g);p===I?N.push("L",V[0],"A",I,",",I," 0 0,",d," ",V[1],"A",n,",",n," 0 ",g^io(V[1][0],V[1][1],Z[1][0],Z[1][1]),",",1-g," ",Z[1],"A",I,",",I," 0 0,",d," ",Z[0]):N.push("L",V[0],"A",I,",",I," 0 0,",d," ",Z[0])}else N.push("L",b,",",w)}else N.push("M",y,",",M),null!=x&&N.push("A",c,",",c," 0 ",C,",",g," ",x,",",_),N.push("L",b,",",w),null!=S&&N.push("A",n,",",n," 0 ",q,",",1-g," ",S,",",k);return N.push("Z"),N.join("")}function t(n,t){return"M0,"+n+"A"+n+","+n+" 0 1,"+t+" 0,"+-n+"A"+n+","+n+" 0 1,"+t+" 0,"+n}var e=no,r=to,u=Qi,i=xc,o=eo,a=ro,l=uo;return n.innerRadius=function(t){return arguments.length?(e=Et(t),n):e},n.outerRadius=function(t){return arguments.length?(r=Et(t),n):r},n.cornerRadius=function(t){return arguments.length?(u=Et(t),n):u},n.padRadius=function(t){return arguments.length?(i=t==xc?xc:Et(t),n):i},n.startAngle=function(t){return arguments.length?(o=Et(t),n):o},n.endAngle=function(t){return arguments.length?(a=Et(t),n):a},n.padAngle=function(t){return arguments.length?(l=Et(t),n):l},n.centroid=function(){var n=(+e.apply(this,arguments)+ +r.apply(this,arguments))/2,t=(+o.apply(this,arguments)+ +a.apply(this,arguments))/2-Ca;return[Math.cos(t)*n,Math.sin(t)*n]},n};var xc="auto";Jo.svg.line=function(){return ao(y)};var _c=Jo.map({linear:lo,"linear-closed":co,step:so,"step-before":fo,"step-after":ho,basis:Mo,"basis-open":xo,"basis-closed":_o,bundle:bo,cardinal:vo,"cardinal-open":go,"cardinal-closed":po,monotone:No});_c.forEach(function(n,t){t.key=n,t.closed=/-closed$/.test(n)});var bc=[0,2/3,1/3,0],wc=[0,1/3,2/3,0],Sc=[0,1/6,2/3,1/6];Jo.svg.line.radial=function(){var n=ao(Co);return n.radius=n.x,delete n.x,n.angle=n.y,delete n.y,n},fo.reverse=ho,ho.reverse=fo,Jo.svg.area=function(){return zo(y)},Jo.svg.area.radial=function(){var n=zo(Co);return n.radius=n.x,delete n.x,n.innerRadius=n.x0,delete n.x0,n.outerRadius=n.x1,delete n.x1,n.angle=n.y,delete n.y,n.startAngle=n.y0,delete n.y0,n.endAngle=n.y1,delete n.y1,n},Jo.svg.chord=function(){function n(n,a){var l=t(this,i,n,a),c=t(this,o,n,a);return"M"+l.p0+r(l.r,l.p1,l.a1-l.a0)+(e(l,c)?u(l.r,l.p1,l.r,l.p0):u(l.r,l.p1,c.r,c.p0)+r(c.r,c.p1,c.a1-c.a0)+u(c.r,c.p1,l.r,l.p0))+"Z"}function t(n,t,e,r){var u=t.call(n,e,r),i=a.call(n,u,r),o=l.call(n,u,r)-Ca,s=c.call(n,u,r)-Ca;return{r:i,a0:o,a1:s,p0:[i*Math.cos(o),i*Math.sin(o)],p1:[i*Math.cos(s),i*Math.sin(s)]}}function e(n,t){return n.a0==t.a0&&n.a1==t.a1}function r(n,t,e){return"A"+n+","+n+" 0 "+ +(e>Ea)+",1 "+t}function u(n,t,e,r){return"Q 0,0 "+r}var i=mr,o=yr,a=qo,l=eo,c=ro;return n.radius=function(t){return arguments.length?(a=Et(t),n):a},n.source=function(t){return arguments.length?(i=Et(t),n):i},n.target=function(t){return arguments.length?(o=Et(t),n):o},n.startAngle=function(t){return arguments.length?(l=Et(t),n):l},n.endAngle=function(t){return arguments.length?(c=Et(t),n):c},n},Jo.svg.diagonal=function(){function n(n,u){var i=t.call(this,n,u),o=e.call(this,n,u),a=(i.y+o.y)/2,l=[i,{x:i.x,y:a},{x:o.x,y:a},o];return l=l.map(r),"M"+l[0]+"C"+l[1]+" "+l[2]+" "+l[3]}var t=mr,e=yr,r=Lo;return n.source=function(e){return arguments.length?(t=Et(e),n):t},n.target=function(t){return arguments.length?(e=Et(t),n):e},n.projection=function(t){return arguments.length?(r=t,n):r},n},Jo.svg.diagonal.radial=function(){var n=Jo.svg.diagonal(),t=Lo,e=n.projection;return n.projection=function(n){return arguments.length?e(To(t=n)):t},n},Jo.svg.symbol=function(){function n(n,r){return(kc.get(t.call(this,n,r))||Po)(e.call(this,n,r))}var t=Do,e=Ro;return n.type=function(e){return arguments.length?(t=Et(e),n):t},n.size=function(t){return arguments.length?(e=Et(t),n):e},n};var kc=Jo.map({circle:Po,cross:function(n){var t=Math.sqrt(n/5)/2;return"M"+-3*t+","+-t+"H"+-t+"V"+-3*t+"H"+t+"V"+-t+"H"+3*t+"V"+t+"H"+t+"V"+3*t+"H"+-t+"V"+t+"H"+-3*t+"Z"},diamond:function(n){var t=Math.sqrt(n/(2*Ac)),e=t*Ac;return"M0,"+-t+"L"+e+",0 0,"+t+" "+-e+",0Z"},square:function(n){var t=Math.sqrt(n)/2;return"M"+-t+","+-t+"L"+t+","+-t+" "+t+","+t+" "+-t+","+t+"Z"},"triangle-down":function(n){var t=Math.sqrt(n/Ec),e=t*Ec/2;return"M0,"+e+"L"+t+","+-e+" "+-t+","+-e+"Z"},"triangle-up":function(n){var t=Math.sqrt(n/Ec),e=t*Ec/2;return"M0,"+-e+"L"+t+","+e+" "+-t+","+e+"Z"}});Jo.svg.symbolTypes=kc.keys();var Ec=Math.sqrt(3),Ac=Math.tan(30*za);ma.transition=function(n){for(var t,e,r=Nc||++Lc,u=Oo(n),i=[],o=Cc||{time:Date.now(),ease:Su,delay:0,duration:250},a=-1,l=this.length;++ai;i++){u.push(t=[]);for(var e=this[i],a=0,l=e.length;l>a;a++)(r=e[a])&&n.call(r,r.__data__,a,i)&&t.push(r)}return Uo(u,this.namespace,this.id)},qc.tween=function(n,t){var e=this.id,r=this.namespace;return arguments.length<2?this.node()[r][e].tween.get(n):I(this,null==t?function(t){t[r][e].tween.remove(n)}:function(u){u[r][e].tween.set(n,t)})},qc.attr=function(n,t){function e(){this.removeAttribute(a)}function r(){this.removeAttributeNS(a.space,a.local)}function u(n){return null==n?e:(n+="",function(){var t,e=this.getAttribute(a);return e!==n&&(t=o(e,n),function(n){this.setAttribute(a,t(n))})})}function i(n){return null==n?r:(n+="",function(){var t,e=this.getAttributeNS(a.space,a.local);return e!==n&&(t=o(e,n),function(n){this.setAttributeNS(a.space,a.local,t(n))})})}if(arguments.length<2){for(t in n)this.attr(t,n[t]);return this}var o="transform"==n?Hu:mu,a=Jo.ns.qualify(n);return Fo(this,"attr."+n,t,a.local?i:u)},qc.attrTween=function(n,t){function e(n,e){var r=t.call(this,n,e,this.getAttribute(u));return r&&function(n){this.setAttribute(u,r(n))}}function r(n,e){var r=t.call(this,n,e,this.getAttributeNS(u.space,u.local));return r&&function(n){this.setAttributeNS(u.space,u.local,r(n))}}var u=Jo.ns.qualify(n);return this.tween("attr."+n,u.local?r:e)},qc.style=function(n,e,r){function u(){this.style.removeProperty(n)}function i(e){return null==e?u:(e+="",function(){var u,i=t(this).getComputedStyle(this,null).getPropertyValue(n);return i!==e&&(u=mu(i,e),function(t){this.style.setProperty(n,u(t),r)})})}var o=arguments.length;if(3>o){if("string"!=typeof n){2>o&&(e="");for(r in n)this.style(r,n[r],e);return this}r=""}return Fo(this,"style."+n,e,i)},qc.styleTween=function(n,e,r){function u(u,i){var o=e.call(this,u,i,t(this).getComputedStyle(this,null).getPropertyValue(n));return o&&function(t){this.style.setProperty(n,o(t),r)}}return arguments.length<3&&(r=""),this.tween("style."+n,u)},qc.text=function(n){return Fo(this,"text",n,Ho)},qc.remove=function(){var n=this.namespace;return this.each("end.transition",function(){var t;this[n].count<2&&(t=this.parentNode)&&t.removeChild(this)})},qc.ease=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].ease:("function"!=typeof n&&(n=Jo.ease.apply(Jo,arguments)),I(this,function(r){r[e][t].ease=n}))},qc.delay=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].delay:I(this,"function"==typeof n?function(r,u,i){r[e][t].delay=+n.call(r,r.__data__,u,i)}:(n=+n,function(r){r[e][t].delay=n}))},qc.duration=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].duration:I(this,"function"==typeof n?function(r,u,i){r[e][t].duration=Math.max(1,n.call(r,r.__data__,u,i))}:(n=Math.max(1,n),function(r){r[e][t].duration=n}))},qc.each=function(n,t){var e=this.id,r=this.namespace;if(arguments.length<2){var u=Cc,i=Nc;try{Nc=e,I(this,function(t,u,i){Cc=t[r][e],n.call(t,t.__data__,u,i)})}finally{Cc=u,Nc=i}}else I(this,function(u){var i=u[r][e];(i.event||(i.event=Jo.dispatch("start","end","interrupt"))).on(n,t)});return this},qc.transition=function(){for(var n,t,e,r,u=this.id,i=++Lc,o=this.namespace,a=[],l=0,c=this.length;c>l;l++){a.push(n=[]);for(var t=this[l],s=0,f=t.length;f>s;s++)(e=t[s])&&(r=e[o][u],Yo(e,s,o,i,{time:r.time,ease:r.ease,delay:r.delay+r.duration,duration:r.duration})),n.push(e)}return Uo(a,o,i)},Jo.svg.axis=function(){function n(n){n.each(function(){var n,c=Jo.select(this),s=this.__chart__||e,f=this.__chart__=e.copy(),h=null==l?f.ticks?f.ticks.apply(f,a):f.domain():l,g=null==t?f.tickFormat?f.tickFormat.apply(f,a):y:t,p=c.selectAll(".tick").data(h,f),d=p.enter().insert("g",".domain").attr("class","tick").style("opacity",Sa),v=Jo.transition(p.exit()).style("opacity",Sa).remove(),m=Jo.transition(p.order()).style("opacity",1),M=Math.max(u,0)+o,x=Li(f),_=c.selectAll(".domain").data([0]),b=(_.enter().append("path").attr("class","domain"),Jo.transition(_));d.append("line"),d.append("text");var w,S,k,E,A=d.select("line"),N=m.select("line"),C=p.select("text").text(g),z=d.select("text"),q=m.select("text"),L="top"===r||"left"===r?-1:1;if("bottom"===r||"top"===r?(n=Io,w="x",k="y",S="x2",E="y2",C.attr("dy",0>L?"0em":".71em").style("text-anchor","middle"),b.attr("d","M"+x[0]+","+L*i+"V0H"+x[1]+"V"+L*i)):(n=Zo,w="y",k="x",S="y2",E="x2",C.attr("dy",".32em").style("text-anchor",0>L?"end":"start"),b.attr("d","M"+L*i+","+x[0]+"H0V"+x[1]+"H"+L*i)),A.attr(E,L*u),z.attr(k,L*M),N.attr(S,0).attr(E,L*u),q.attr(w,0).attr(k,L*M),f.rangeBand){var T=f,R=T.rangeBand()/2;s=f=function(n){return T(n)+R}}else s.rangeBand?s=f:v.call(n,f,s);d.call(n,s,f),m.call(n,f,f)})}var t,e=Jo.scale.linear(),r=Tc,u=6,i=6,o=3,a=[10],l=null;return n.scale=function(t){return arguments.length?(e=t,n):e},n.orient=function(t){return arguments.length?(r=t in Rc?t+"":Tc,n):r},n.ticks=function(){return arguments.length?(a=arguments,n):a},n.tickValues=function(t){return arguments.length?(l=t,n):l},n.tickFormat=function(e){return arguments.length?(t=e,n):t},n.tickSize=function(t){var e=arguments.length;return e?(u=+t,i=+arguments[e-1],n):u},n.innerTickSize=function(t){return arguments.length?(u=+t,n):u},n.outerTickSize=function(t){return arguments.length?(i=+t,n):i},n.tickPadding=function(t){return arguments.length?(o=+t,n):o},n.tickSubdivide=function(){return arguments.length&&n},n};var Tc="bottom",Rc={top:1,right:1,bottom:1,left:1};Jo.svg.brush=function(){function n(t){t.each(function(){var t=Jo.select(this).style("pointer-events","all").style("-webkit-tap-highlight-color","rgba(0,0,0,0)").on("mousedown.brush",i).on("touchstart.brush",i),o=t.selectAll(".background").data([0]);o.enter().append("rect").attr("class","background").style("visibility","hidden").style("cursor","crosshair"),t.selectAll(".extent").data([0]).enter().append("rect").attr("class","extent").style("cursor","move");var a=t.selectAll(".resize").data(d,y);a.exit().remove(),a.enter().append("g").attr("class",function(n){return"resize "+n}).style("cursor",function(n){return Dc[n]}).append("rect").attr("x",function(n){return/[ew]$/.test(n)?-3:null}).attr("y",function(n){return/^[ns]/.test(n)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden"),a.style("display",n.empty()?"none":null);var l,f=Jo.transition(t),h=Jo.transition(o);c&&(l=Li(c),h.attr("x",l[0]).attr("width",l[1]-l[0]),r(f)),s&&(l=Li(s),h.attr("y",l[0]).attr("height",l[1]-l[0]),u(f)),e(f)})}function e(n){n.selectAll(".resize").attr("transform",function(n){return"translate("+f[+/e$/.test(n)]+","+h[+/^s/.test(n)]+")"})}function r(n){n.select(".extent").attr("x",f[0]),n.selectAll(".extent,.n>rect,.s>rect").attr("width",f[1]-f[0])}function u(n){n.select(".extent").attr("y",h[0]),n.selectAll(".extent,.e>rect,.w>rect").attr("height",h[1]-h[0])}function i(){function i(){32==Jo.event.keyCode&&(C||(M=null,q[0]-=f[1],q[1]-=h[1],C=2),S())}function d(){32==Jo.event.keyCode&&2==C&&(q[0]+=f[1],q[1]+=h[1],C=0,S())}function v(){var n=Jo.mouse(_),t=!1;x&&(n[0]+=x[0],n[1]+=x[1]),C||(Jo.event.altKey?(M||(M=[(f[0]+f[1])/2,(h[0]+h[1])/2]),q[0]=f[+(n[0]s?(u=r,r=s):u=s),d[0]!=r||d[1]!=u?(e?a=null:o=null,d[0]=r,d[1]=u,!0):void 0}function y(){v(),k.style("pointer-events","all").selectAll(".resize").style("display",n.empty()?"none":null),Jo.select("body").style("cursor",null),L.on("mousemove.brush",null).on("mouseup.brush",null).on("touchmove.brush",null).on("touchend.brush",null).on("keydown.brush",null).on("keyup.brush",null),z(),w({type:"brushend"})}var M,x,_=this,b=Jo.select(Jo.event.target),w=l.of(_,arguments),k=Jo.select(_),E=b.datum(),A=!/^(n|s)$/.test(E)&&c,N=!/^(e|w)$/.test(E)&&s,C=b.classed("extent"),z=W(_),q=Jo.mouse(_),L=Jo.select(t(_)).on("keydown.brush",i).on("keyup.brush",d);if(Jo.event.changedTouches?L.on("touchmove.brush",v).on("touchend.brush",y):L.on("mousemove.brush",v).on("mouseup.brush",y),k.interrupt().selectAll("*").interrupt(),C)q[0]=f[0]-q[0],q[1]=h[0]-q[1];else if(E){var T=+/w$/.test(E),R=+/^n/.test(E);x=[f[1-T]-q[0],h[1-R]-q[1]],q[0]=f[T],q[1]=h[R]}else Jo.event.altKey&&(M=q.slice());k.style("pointer-events","none").selectAll(".resize").style("display",null),Jo.select("body").style("cursor",b.style("cursor")),w({type:"brushstart"}),v()}var o,a,l=E(n,"brushstart","brush","brushend"),c=null,s=null,f=[0,0],h=[0,0],g=!0,p=!0,d=Pc[0];return n.event=function(n){n.each(function(){var n=l.of(this,arguments),t={x:f,y:h,i:o,j:a},e=this.__chart__||t;this.__chart__=t,Nc?Jo.select(this).transition().each("start.brush",function(){o=e.i,a=e.j,f=e.x,h=e.y,n({type:"brushstart"})}).tween("brush:brush",function(){var e=yu(f,t.x),r=yu(h,t.y);return o=a=null,function(u){f=t.x=e(u),h=t.y=r(u),n({type:"brush",mode:"resize"})}}).each("end.brush",function(){o=t.i,a=t.j,n({type:"brush",mode:"resize"}),n({type:"brushend"})}):(n({type:"brushstart"}),n({type:"brush",mode:"resize"}),n({type:"brushend"}))})},n.x=function(t){return arguments.length?(c=t,d=Pc[!c<<1|!s],n):c},n.y=function(t){return arguments.length?(s=t,d=Pc[!c<<1|!s],n):s},n.clamp=function(t){return arguments.length?(c&&s?(g=!!t[0],p=!!t[1]):c?g=!!t:s&&(p=!!t),n):c&&s?[g,p]:c?g:s?p:null},n.extent=function(t){var e,r,u,i,l;return arguments.length?(c&&(e=t[0],r=t[1],s&&(e=e[0],r=r[0]),o=[e,r],c.invert&&(e=c(e),r=c(r)),e>r&&(l=e,e=r,r=l),(e!=f[0]||r!=f[1])&&(f=[e,r])),s&&(u=t[0],i=t[1],c&&(u=u[1],i=i[1]),a=[u,i],s.invert&&(u=s(u),i=s(i)),u>i&&(l=u,u=i,i=l),(u!=h[0]||i!=h[1])&&(h=[u,i])),n):(c&&(o?(e=o[0],r=o[1]):(e=f[0],r=f[1],c.invert&&(e=c.invert(e),r=c.invert(r)),e>r&&(l=e,e=r,r=l))),s&&(a?(u=a[0],i=a[1]):(u=h[0],i=h[1],s.invert&&(u=s.invert(u),i=s.invert(i)),u>i&&(l=u,u=i,i=l))),c&&s?[[e,u],[r,i]]:c?[e,r]:s&&[u,i])},n.clear=function(){return n.empty()||(f=[0,0],h=[0,0],o=a=null),n},n.empty=function(){return!!c&&f[0]==f[1]||!!s&&h[0]==h[1]},Jo.rebind(n,l,"on")};var Dc={n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},Pc=[["n","e","s","w","nw","ne","se","sw"],["e","w"],["n","s"],[]],jc=el.format=ll.timeFormat,Uc=jc.utc,Fc=Uc("%Y-%m-%dT%H:%M:%S.%LZ");jc.iso=Date.prototype.toISOString&&+new Date("2000-01-01T00:00:00.000Z")?Vo:Fc,Vo.parse=function(n){var t=new Date(n);return isNaN(t)?null:t},Vo.toString=Fc.toString,el.second=Ft(function(n){return new rl(1e3*Math.floor(n/1e3))},function(n,t){n.setTime(n.getTime()+1e3*Math.floor(t))},function(n){return n.getSeconds()}),el.seconds=el.second.range,el.seconds.utc=el.second.utc.range,el.minute=Ft(function(n){return new rl(6e4*Math.floor(n/6e4))},function(n,t){n.setTime(n.getTime()+6e4*Math.floor(t))},function(n){return n.getMinutes()}),el.minutes=el.minute.range,el.minutes.utc=el.minute.utc.range,el.hour=Ft(function(n){var t=n.getTimezoneOffset()/60;return new rl(36e5*(Math.floor(n/36e5-t)+t))},function(n,t){n.setTime(n.getTime()+36e5*Math.floor(t))},function(n){return n.getHours()}),el.hours=el.hour.range,el.hours.utc=el.hour.utc.range,el.month=Ft(function(n){return n=el.day(n),n.setDate(1),n},function(n,t){n.setMonth(n.getMonth()+t)},function(n){return n.getMonth()}),el.months=el.month.range,el.months.utc=el.month.utc.range;var Hc=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e5,1728e5,6048e5,2592e6,7776e6,31536e6],Oc=[[el.second,1],[el.second,5],[el.second,15],[el.second,30],[el.minute,1],[el.minute,5],[el.minute,15],[el.minute,30],[el.hour,1],[el.hour,3],[el.hour,6],[el.hour,12],[el.day,1],[el.day,2],[el.week,1],[el.month,1],[el.month,3],[el.year,1]],Yc=jc.multi([[".%L",function(n){return n.getMilliseconds()}],[":%S",function(n){return n.getSeconds()}],["%I:%M",function(n){return n.getMinutes()}],["%I %p",function(n){return n.getHours()}],["%a %d",function(n){return n.getDay()&&1!=n.getDate()}],["%b %d",function(n){return 1!=n.getDate()}],["%B",function(n){return n.getMonth()}],["%Y",Ne]]),Ic={range:function(n,t,e){return Jo.range(Math.ceil(n/e)*e,+t,e).map($o)},floor:y,ceil:y};Oc.year=el.year,el.scale=function(){return Xo(Jo.scale.linear(),Oc,Yc)};var Zc=Oc.map(function(n){return[n[0].utc,n[1]]}),Vc=Uc.multi([[".%L",function(n){return n.getUTCMilliseconds()}],[":%S",function(n){return n.getUTCSeconds()}],["%I:%M",function(n){return n.getUTCMinutes()}],["%I %p",function(n){return n.getUTCHours()}],["%a %d",function(n){return n.getUTCDay()&&1!=n.getUTCDate()}],["%b %d",function(n){return 1!=n.getUTCDate()}],["%B",function(n){return n.getUTCMonth()}],["%Y",Ne]]);Zc.year=el.year.utc,el.scale.utc=function(){return Xo(Jo.scale.linear(),Zc,Vc)},Jo.text=At(function(n){return n.responseText}),Jo.json=function(n,t){return Nt(n,"application/json",Bo,t)},Jo.html=function(n,t){return Nt(n,"text/html",Wo,t)},Jo.xml=At(function(n){return n.responseXML}),"function"==typeof define&&define.amd?define(Jo):"object"==typeof module&&module.exports&&(module.exports=Jo),this.d3=Jo}(); \ No newline at end of file diff --git a/docs/js/libs/deep-iterator.js b/docs/js/libs/deep-iterator.js new file mode 100644 index 0000000..63e4261 --- /dev/null +++ b/docs/js/libs/deep-iterator.js @@ -0,0 +1,2 @@ +!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var t;t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,t.deepIterator=e()}}(function(){return function e(t,r,n){function o(a,u){if(!r[a]){if(!t[a]){var c="function"==typeof require&&require;if(!u&&c)return c(a,!0);if(i)return i(a,!0);var s=new Error("Cannot find module '"+a+"'");throw s.code="MODULE_NOT_FOUND",s}var f=r[a]={exports:{}};t[a][0].call(f.exports,function(e){var r=t[a][1][e];return o(r?r:e)},f,f.exports,e,t,r,n)}return r[a].exports}for(var i="function"==typeof require&&require,a=0;a1)for(var r=1;r1&&void 0!==arguments[1]?arguments[1]:{};return u.default.wrap(function(i){for(;;)switch(i.prev=i.next){case 0:if(t={onlyLeaves:!1,circularReference:"leaf",search:"dfsPreOrder",iterateOverObject:!0,skipIteration:function(){return!1}},void 0!==o.onlyLeaves&&(t.onlyLeaves=o.onlyLeaves),void 0!==o.circularReference&&(t.circularReference=o.circularReference),void 0!==o.iterateOverObject&&(t.iterateOverObject=o.iterateOverObject),void 0!==o.skipIteration&&(t.skipIteration=o.skipIteration),void 0===o.search){i.next=9;break}if(o.search in s){i.next=8;break}throw new Error("The search algorithm "+o.search+" is incorrect.");case 8:t.search=o.search;case 9:return r=new l.default(e,t),n=(0,d.default)(t.circularReference),i.delegateYield(s[t.search](r,t.onlyLeaves,n),"t0",12);case 12:case"end":return i.stop()}},_[0],this)}Object.defineProperty(r,"__esModule",{value:!0});var a=e("babel-runtime/regenerator"),u=o(a);r.default=i;var c=e("./search"),s=n(c),f=e("./root-node"),l=o(f),p=e("./seen"),d=o(p),_=[i].map(u.default.mark)},{"./root-node":5,"./search":6,"./seen":7,"babel-runtime/regenerator":115}],3:[function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function o(e){var t;return l.default.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:r.t0=l.default.keys(e);case 1:if((r.t1=r.t0()).done){r.next=7;break}return t=r.t1.value,r.next=5,[t,e[t]];case 5:r.next=1;break;case 7:case"end":return r.stop()}},p[0],this)}function i(e){var t;return l.default.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:t=0;case 1:if(!(tf;)if(u=c[f++],u!=u)return!0}else for(;s>f;f++)if((e||f in c)&&c[f]===r)return e||f||0;return!e&&-1}}},{"./_to-index":88,"./_to-iobject":90,"./_to-length":91}],39:[function(e,t,r){var n=e("./_cof"),o=e("./_wks")("toStringTag"),i="Arguments"==n(function(){return arguments}()),a=function(e,t){try{return e[t]}catch(e){}};t.exports=function(e){var t,r,u;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(r=a(t=Object(e),o))?r:i?n(t):"Object"==(u=n(t))&&"function"==typeof t.callee?"Arguments":u}},{"./_cof":40,"./_wks":97}],40:[function(e,t,r){var n={}.toString;t.exports=function(e){return n.call(e).slice(8,-1)}},{}],41:[function(e,t,r){var n=t.exports={version:"2.4.0"};"number"==typeof __e&&(__e=n)},{}],42:[function(e,t,r){"use strict";var n=e("./_object-dp"),o=e("./_property-desc");t.exports=function(e,t,r){t in e?n.f(e,t,o(0,r)):e[t]=r}},{"./_object-dp":70,"./_property-desc":81}],43:[function(e,t,r){var n=e("./_a-function");t.exports=function(e,t,r){if(n(e),void 0===t)return e;switch(r){case 1:return function(r){return e.call(t,r)};case 2:return function(r,n){return e.call(t,r,n)};case 3:return function(r,n,o){return e.call(t,r,n,o)}}return function(){return e.apply(t,arguments)}}},{"./_a-function":35}],44:[function(e,t,r){t.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},{}],45:[function(e,t,r){t.exports=!e("./_fails")(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},{"./_fails":50}],46:[function(e,t,r){var n=e("./_is-object"),o=e("./_global").document,i=n(o)&&n(o.createElement);t.exports=function(e){return i?o.createElement(e):{}}},{"./_global":51,"./_is-object":59}],47:[function(e,t,r){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},{}],48:[function(e,t,r){var n=e("./_object-keys"),o=e("./_object-gops"),i=e("./_object-pie");t.exports=function(e){var t=n(e),r=o.f;if(r)for(var a,u=r(e),c=i.f,s=0;u.length>s;)c.call(e,a=u[s++])&&t.push(a);return t}},{"./_object-gops":75,"./_object-keys":78,"./_object-pie":79}],49:[function(e,t,r){var n=e("./_global"),o=e("./_core"),i=e("./_ctx"),a=e("./_hide"),u="prototype",c=function(e,t,r){var s,f,l,p=e&c.F,d=e&c.G,_=e&c.S,b=e&c.P,h=e&c.B,y=e&c.W,v=d?o:o[t]||(o[t]={}),m=v[u],g=d?n:_?n[t]:(n[t]||{})[u];d&&(r=t);for(s in r)f=!p&&g&&void 0!==g[s],f&&s in v||(l=f?g[s]:r[s],v[s]=d&&"function"!=typeof g[s]?r[s]:h&&f?i(l,n):y&&g[s]==l?function(e){var t=function(t,r,n){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,r)}return new e(t,r,n)}return e.apply(this,arguments)};return t[u]=e[u],t}(l):b&&"function"==typeof l?i(Function.call,l):l,b&&((v.virtual||(v.virtual={}))[s]=l,e&c.R&&m&&!m[s]&&a(m,s,l)))};c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,t.exports=c},{"./_core":41,"./_ctx":43,"./_global":51,"./_hide":53}],50:[function(e,t,r){t.exports=function(e){try{return!!e()}catch(e){return!0}}},{}],51:[function(e,t,r){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},{}],52:[function(e,t,r){var n={}.hasOwnProperty;t.exports=function(e,t){return n.call(e,t)}},{}],53:[function(e,t,r){var n=e("./_object-dp"),o=e("./_property-desc");t.exports=e("./_descriptors")?function(e,t,r){return n.f(e,t,o(1,r))}:function(e,t,r){return e[t]=r,e}},{"./_descriptors":45,"./_object-dp":70,"./_property-desc":81}],54:[function(e,t,r){t.exports=e("./_global").document&&document.documentElement},{"./_global":51}],55:[function(e,t,r){t.exports=!e("./_descriptors")&&!e("./_fails")(function(){return 7!=Object.defineProperty(e("./_dom-create")("div"),"a",{get:function(){return 7}}).a})},{"./_descriptors":45,"./_dom-create":46,"./_fails":50}],56:[function(e,t,r){var n=e("./_cof");t.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==n(e)?e.split(""):Object(e)}},{"./_cof":40}],57:[function(e,t,r){var n=e("./_iterators"),o=e("./_wks")("iterator"),i=Array.prototype;t.exports=function(e){return void 0!==e&&(n.Array===e||i[o]===e)}},{"./_iterators":65,"./_wks":97}],58:[function(e,t,r){var n=e("./_cof");t.exports=Array.isArray||function(e){return"Array"==n(e)}},{"./_cof":40}],59:[function(e,t,r){t.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},{}],60:[function(e,t,r){var n=e("./_an-object");t.exports=function(e,t,r,o){try{return o?t(n(r)[0],r[1]):t(r)}catch(t){var i=e.return;throw void 0!==i&&n(i.call(e)),t}}},{"./_an-object":37}],61:[function(e,t,r){"use strict";var n=e("./_object-create"),o=e("./_property-desc"),i=e("./_set-to-string-tag"),a={};e("./_hide")(a,e("./_wks")("iterator"),function(){return this}),t.exports=function(e,t,r){e.prototype=n(a,{next:o(1,r)}),i(e,t+" Iterator")}},{"./_hide":53,"./_object-create":69,"./_property-desc":81,"./_set-to-string-tag":84,"./_wks":97}],62:[function(e,t,r){"use strict";var n=e("./_library"),o=e("./_export"),i=e("./_redefine"),a=e("./_hide"),u=e("./_has"),c=e("./_iterators"),s=e("./_iter-create"),f=e("./_set-to-string-tag"),l=e("./_object-gpo"),p=e("./_wks")("iterator"),d=!([].keys&&"next"in[].keys()),_="@@iterator",b="keys",h="values",y=function(){return this};t.exports=function(e,t,r,v,m,g,j){s(r,t,v);var w,x,k,O=function(e){if(!d&&e in M)return M[e];switch(e){case b:return function(){return new r(this,e)};case h:return function(){return new r(this,e)}}return function(){return new r(this,e)}},E=t+" Iterator",S=m==h,L=!1,M=e.prototype,A=M[p]||M[_]||m&&M[m],P=A||O(m),T=m?S?O("entries"):P:void 0,F="Array"==t?M.entries||A:A;if(F&&(k=l(F.call(new e)),k!==Object.prototype&&(f(k,E,!0),n||u(k,p)||a(k,p,y))),S&&A&&A.name!==h&&(L=!0,P=function(){return A.call(this)}),n&&!j||!d&&!L&&M[p]||a(M,p,P),c[t]=P,c[E]=y,m)if(w={values:S?P:O(h),keys:g?P:O(b),entries:T},j)for(x in w)x in M||i(M,x,w[x]);else o(o.P+o.F*(d||L),t,w);return w}},{"./_export":49,"./_has":52,"./_hide":53,"./_iter-create":61,"./_iterators":65,"./_library":67,"./_object-gpo":76,"./_redefine":82,"./_set-to-string-tag":84,"./_wks":97}],63:[function(e,t,r){var n=e("./_wks")("iterator"),o=!1;try{var i=[7][n]();i.return=function(){o=!0},Array.from(i,function(){throw 2})}catch(e){}t.exports=function(e,t){if(!t&&!o)return!1;var r=!1;try{var i=[7],a=i[n]();a.next=function(){return{done:r=!0}},i[n]=function(){return a},e(i)}catch(e){}return r}},{"./_wks":97}],64:[function(e,t,r){t.exports=function(e,t){return{value:t,done:!!e}}},{}],65:[function(e,t,r){t.exports={}},{}],66:[function(e,t,r){var n=e("./_object-keys"),o=e("./_to-iobject");t.exports=function(e,t){for(var r,i=o(e),a=n(i),u=a.length,c=0;u>c;)if(i[r=a[c++]]===t)return r}},{"./_object-keys":78,"./_to-iobject":90}],67:[function(e,t,r){t.exports=!0},{}],68:[function(e,t,r){var n=e("./_uid")("meta"),o=e("./_is-object"),i=e("./_has"),a=e("./_object-dp").f,u=0,c=Object.isExtensible||function(){return!0},s=!e("./_fails")(function(){return c(Object.preventExtensions({}))}),f=function(e){a(e,n,{value:{i:"O"+ ++u,w:{}}})},l=function(e,t){if(!o(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!i(e,n)){if(!c(e))return"F";if(!t)return"E";f(e)}return e[n].i},p=function(e,t){if(!i(e,n)){if(!c(e))return!0;if(!t)return!1;f(e)}return e[n].w},d=function(e){return s&&_.NEED&&c(e)&&!i(e,n)&&f(e),e},_=t.exports={KEY:n,NEED:!1,fastKey:l,getWeak:p,onFreeze:d}},{"./_fails":50,"./_has":52,"./_is-object":59,"./_object-dp":70,"./_uid":94}],69:[function(e,t,r){var n=e("./_an-object"),o=e("./_object-dps"),i=e("./_enum-bug-keys"),a=e("./_shared-key")("IE_PROTO"),u=function(){},c="prototype",s=function(){var t,r=e("./_dom-create")("iframe"),n=i.length,o="<",a=">";for(r.style.display="none",e("./_html").appendChild(r),r.src="javascript:",t=r.contentWindow.document,t.open(),t.write(o+"script"+a+"document.F=Object"+o+"/script"+a),t.close(),s=t.F;n--;)delete s[c][i[n]];return s()};t.exports=Object.create||function(e,t){var r;return null!==e?(u[c]=n(e),r=new u,u[c]=null,r[a]=e):r=s(),void 0===t?r:o(r,t)}},{"./_an-object":37,"./_dom-create":46,"./_enum-bug-keys":47,"./_html":54,"./_object-dps":71,"./_shared-key":85}],70:[function(e,t,r){var n=e("./_an-object"),o=e("./_ie8-dom-define"),i=e("./_to-primitive"),a=Object.defineProperty;r.f=e("./_descriptors")?Object.defineProperty:function(e,t,r){if(n(e),t=i(t,!0),n(r),o)try{return a(e,t,r)}catch(e){}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(e[t]=r.value),e}},{"./_an-object":37,"./_descriptors":45,"./_ie8-dom-define":55,"./_to-primitive":93}],71:[function(e,t,r){var n=e("./_object-dp"),o=e("./_an-object"),i=e("./_object-keys");t.exports=e("./_descriptors")?Object.defineProperties:function(e,t){o(e);for(var r,a=i(t),u=a.length,c=0;u>c;)n.f(e,r=a[c++],t[r]);return e}},{"./_an-object":37,"./_descriptors":45,"./_object-dp":70,"./_object-keys":78}],72:[function(e,t,r){ +var n=e("./_object-pie"),o=e("./_property-desc"),i=e("./_to-iobject"),a=e("./_to-primitive"),u=e("./_has"),c=e("./_ie8-dom-define"),s=Object.getOwnPropertyDescriptor;r.f=e("./_descriptors")?s:function(e,t){if(e=i(e),t=a(t,!0),c)try{return s(e,t)}catch(e){}if(u(e,t))return o(!n.f.call(e,t),e[t])}},{"./_descriptors":45,"./_has":52,"./_ie8-dom-define":55,"./_object-pie":79,"./_property-desc":81,"./_to-iobject":90,"./_to-primitive":93}],73:[function(e,t,r){var n=e("./_to-iobject"),o=e("./_object-gopn").f,i={}.toString,a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],u=function(e){try{return o(e)}catch(e){return a.slice()}};t.exports.f=function(e){return a&&"[object Window]"==i.call(e)?u(e):o(n(e))}},{"./_object-gopn":74,"./_to-iobject":90}],74:[function(e,t,r){var n=e("./_object-keys-internal"),o=e("./_enum-bug-keys").concat("length","prototype");r.f=Object.getOwnPropertyNames||function(e){return n(e,o)}},{"./_enum-bug-keys":47,"./_object-keys-internal":77}],75:[function(e,t,r){r.f=Object.getOwnPropertySymbols},{}],76:[function(e,t,r){var n=e("./_has"),o=e("./_to-object"),i=e("./_shared-key")("IE_PROTO"),a=Object.prototype;t.exports=Object.getPrototypeOf||function(e){return e=o(e),n(e,i)?e[i]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?a:null}},{"./_has":52,"./_shared-key":85,"./_to-object":92}],77:[function(e,t,r){var n=e("./_has"),o=e("./_to-iobject"),i=e("./_array-includes")(!1),a=e("./_shared-key")("IE_PROTO");t.exports=function(e,t){var r,u=o(e),c=0,s=[];for(r in u)r!=a&&n(u,r)&&s.push(r);for(;t.length>c;)n(u,r=t[c++])&&(~i(s,r)||s.push(r));return s}},{"./_array-includes":38,"./_has":52,"./_shared-key":85,"./_to-iobject":90}],78:[function(e,t,r){var n=e("./_object-keys-internal"),o=e("./_enum-bug-keys");t.exports=Object.keys||function(e){return n(e,o)}},{"./_enum-bug-keys":47,"./_object-keys-internal":77}],79:[function(e,t,r){r.f={}.propertyIsEnumerable},{}],80:[function(e,t,r){var n=e("./_export"),o=e("./_core"),i=e("./_fails");t.exports=function(e,t){var r=(o.Object||{})[e]||Object[e],a={};a[e]=t(r),n(n.S+n.F*i(function(){r(1)}),"Object",a)}},{"./_core":41,"./_export":49,"./_fails":50}],81:[function(e,t,r){t.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},{}],82:[function(e,t,r){t.exports=e("./_hide")},{"./_hide":53}],83:[function(e,t,r){var n=e("./_is-object"),o=e("./_an-object"),i=function(e,t){if(o(e),!n(t)&&null!==t)throw TypeError(t+": can't set as prototype!")};t.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(t,r,n){try{n=e("./_ctx")(Function.call,e("./_object-gopd").f(Object.prototype,"__proto__").set,2),n(t,[]),r=!(t instanceof Array)}catch(e){r=!0}return function(e,t){return i(e,t),r?e.__proto__=t:n(e,t),e}}({},!1):void 0),check:i}},{"./_an-object":37,"./_ctx":43,"./_is-object":59,"./_object-gopd":72}],84:[function(e,t,r){var n=e("./_object-dp").f,o=e("./_has"),i=e("./_wks")("toStringTag");t.exports=function(e,t,r){e&&!o(e=r?e:e.prototype,i)&&n(e,i,{configurable:!0,value:t})}},{"./_has":52,"./_object-dp":70,"./_wks":97}],85:[function(e,t,r){var n=e("./_shared")("keys"),o=e("./_uid");t.exports=function(e){return n[e]||(n[e]=o(e))}},{"./_shared":86,"./_uid":94}],86:[function(e,t,r){var n=e("./_global"),o="__core-js_shared__",i=n[o]||(n[o]={});t.exports=function(e){return i[e]||(i[e]={})}},{"./_global":51}],87:[function(e,t,r){var n=e("./_to-integer"),o=e("./_defined");t.exports=function(e){return function(t,r){var i,a,u=String(o(t)),c=n(r),s=u.length;return c<0||c>=s?e?"":void 0:(i=u.charCodeAt(c),i<55296||i>56319||c+1===s||(a=u.charCodeAt(c+1))<56320||a>57343?e?u.charAt(c):i:e?u.slice(c,c+2):(i-55296<<10)+(a-56320)+65536)}}},{"./_defined":44,"./_to-integer":89}],88:[function(e,t,r){var n=e("./_to-integer"),o=Math.max,i=Math.min;t.exports=function(e,t){return e=n(e),e<0?o(e+t,0):i(e,t)}},{"./_to-integer":89}],89:[function(e,t,r){var n=Math.ceil,o=Math.floor;t.exports=function(e){return isNaN(e=+e)?0:(e>0?o:n)(e)}},{}],90:[function(e,t,r){var n=e("./_iobject"),o=e("./_defined");t.exports=function(e){return n(o(e))}},{"./_defined":44,"./_iobject":56}],91:[function(e,t,r){var n=e("./_to-integer"),o=Math.min;t.exports=function(e){return e>0?o(n(e),9007199254740991):0}},{"./_to-integer":89}],92:[function(e,t,r){var n=e("./_defined");t.exports=function(e){return Object(n(e))}},{"./_defined":44}],93:[function(e,t,r){var n=e("./_is-object");t.exports=function(e,t){if(!n(e))return e;var r,o;if(t&&"function"==typeof(r=e.toString)&&!n(o=r.call(e)))return o;if("function"==typeof(r=e.valueOf)&&!n(o=r.call(e)))return o;if(!t&&"function"==typeof(r=e.toString)&&!n(o=r.call(e)))return o;throw TypeError("Can't convert object to primitive value")}},{"./_is-object":59}],94:[function(e,t,r){var n=0,o=Math.random();t.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++n+o).toString(36))}},{}],95:[function(e,t,r){var n=e("./_global"),o=e("./_core"),i=e("./_library"),a=e("./_wks-ext"),u=e("./_object-dp").f;t.exports=function(e){var t=o.Symbol||(o.Symbol=i?{}:n.Symbol||{});"_"==e.charAt(0)||e in t||u(t,e,{value:a.f(e)})}},{"./_core":41,"./_global":51,"./_library":67,"./_object-dp":70,"./_wks-ext":96}],96:[function(e,t,r){r.f=e("./_wks")},{"./_wks":97}],97:[function(e,t,r){var n=e("./_shared")("wks"),o=e("./_uid"),i=e("./_global").Symbol,a="function"==typeof i,u=t.exports=function(e){return n[e]||(n[e]=a&&i[e]||(a?i:o)("Symbol."+e))};u.store=n},{"./_global":51,"./_shared":86,"./_uid":94}],98:[function(e,t,r){var n=e("./_classof"),o=e("./_wks")("iterator"),i=e("./_iterators");t.exports=e("./_core").getIteratorMethod=function(e){if(void 0!=e)return e[o]||e["@@iterator"]||i[n(e)]}},{"./_classof":39,"./_core":41,"./_iterators":65,"./_wks":97}],99:[function(e,t,r){var n=e("./_an-object"),o=e("./core.get-iterator-method");t.exports=e("./_core").getIterator=function(e){var t=o(e);if("function"!=typeof t)throw TypeError(e+" is not iterable!");return n(t.call(e))}},{"./_an-object":37,"./_core":41,"./core.get-iterator-method":98}],100:[function(e,t,r){var n=e("./_classof"),o=e("./_wks")("iterator"),i=e("./_iterators");t.exports=e("./_core").isIterable=function(e){var t=Object(e);return void 0!==t[o]||"@@iterator"in t||i.hasOwnProperty(n(t))}},{"./_classof":39,"./_core":41,"./_iterators":65,"./_wks":97}],101:[function(e,t,r){"use strict";var n=e("./_ctx"),o=e("./_export"),i=e("./_to-object"),a=e("./_iter-call"),u=e("./_is-array-iter"),c=e("./_to-length"),s=e("./_create-property"),f=e("./core.get-iterator-method");o(o.S+o.F*!e("./_iter-detect")(function(e){Array.from(e)}),"Array",{from:function(e){var t,r,o,l,p=i(e),d="function"==typeof this?this:Array,_=arguments.length,b=_>1?arguments[1]:void 0,h=void 0!==b,y=0,v=f(p);if(h&&(b=n(b,_>2?arguments[2]:void 0,2)),void 0==v||d==Array&&u(v))for(t=c(p.length),r=new d(t);t>y;y++)s(r,y,h?b(p[y],y):p[y]);else for(l=v.call(p),r=new d;!(o=l.next()).done;y++)s(r,y,h?a(l,b,[o.value,y],!0):o.value);return r.length=y,r}})},{"./_create-property":42,"./_ctx":43,"./_export":49,"./_is-array-iter":57,"./_iter-call":60,"./_iter-detect":63,"./_to-length":91,"./_to-object":92,"./core.get-iterator-method":98}],102:[function(e,t,r){"use strict";var n=e("./_add-to-unscopables"),o=e("./_iter-step"),i=e("./_iterators"),a=e("./_to-iobject");t.exports=e("./_iter-define")(Array,"Array",function(e,t){this._t=a(e),this._i=0,this._k=t},function(){var e=this._t,t=this._k,r=this._i++;return!e||r>=e.length?(this._t=void 0,o(1)):"keys"==t?o(0,r):"values"==t?o(0,e[r]):o(0,[r,e[r]])},"values"),i.Arguments=i.Array,n("keys"),n("values"),n("entries")},{"./_add-to-unscopables":36,"./_iter-define":62,"./_iter-step":64,"./_iterators":65,"./_to-iobject":90}],103:[function(e,t,r){var n=e("./_export");n(n.S,"Object",{create:e("./_object-create")})},{"./_export":49,"./_object-create":69}],104:[function(e,t,r){var n=e("./_export");n(n.S+n.F*!e("./_descriptors"),"Object",{defineProperty:e("./_object-dp").f})},{"./_descriptors":45,"./_export":49,"./_object-dp":70}],105:[function(e,t,r){var n=e("./_to-object"),o=e("./_object-gpo");e("./_object-sap")("getPrototypeOf",function(){return function(e){return o(n(e))}})},{"./_object-gpo":76,"./_object-sap":80,"./_to-object":92}],106:[function(e,t,r){var n=e("./_export");n(n.S,"Object",{setPrototypeOf:e("./_set-proto").set})},{"./_export":49,"./_set-proto":83}],107:[function(e,t,r){},{}],108:[function(e,t,r){"use strict";var n=e("./_string-at")(!0);e("./_iter-define")(String,"String",function(e){this._t=String(e),this._i=0},function(){var e,t=this._t,r=this._i;return r>=t.length?{value:void 0,done:!0}:(e=n(t,r),this._i+=e.length,{value:e,done:!1})})},{"./_iter-define":62,"./_string-at":87}],109:[function(e,t,r){"use strict";var n=e("./_global"),o=e("./_has"),i=e("./_descriptors"),a=e("./_export"),u=e("./_redefine"),c=e("./_meta").KEY,s=e("./_fails"),f=e("./_shared"),l=e("./_set-to-string-tag"),p=e("./_uid"),d=e("./_wks"),_=e("./_wks-ext"),b=e("./_wks-define"),h=e("./_keyof"),y=e("./_enum-keys"),v=e("./_is-array"),m=e("./_an-object"),g=e("./_to-iobject"),j=e("./_to-primitive"),w=e("./_property-desc"),x=e("./_object-create"),k=e("./_object-gopn-ext"),O=e("./_object-gopd"),E=e("./_object-dp"),S=e("./_object-keys"),L=O.f,M=E.f,A=k.f,P=n.Symbol,T=n.JSON,F=T&&T.stringify,I="prototype",C=d("_hidden"),N=d("toPrimitive"),R={}.propertyIsEnumerable,G=f("symbol-registry"),D=f("symbols"),U=f("op-symbols"),Y=Object[I],W="function"==typeof P,B=n.QObject,q=!B||!B[I]||!B[I].findChild,J=i&&s(function(){return 7!=x(M({},"a",{get:function(){return M(this,"a",{value:7}).a}})).a})?function(e,t,r){var n=L(Y,t);n&&delete Y[t],M(e,t,r),n&&e!==Y&&M(Y,t,n)}:M,K=function(e){var t=D[e]=x(P[I]);return t._k=e,t},z=W&&"symbol"==typeof P.iterator?function(e){return"symbol"==typeof e}:function(e){return e instanceof P},Q=function(e,t,r){return e===Y&&Q(U,t,r),m(e),t=j(t,!0),m(r),o(D,t)?(r.enumerable?(o(e,C)&&e[C][t]&&(e[C][t]=!1),r=x(r,{enumerable:w(0,!1)})):(o(e,C)||M(e,C,w(1,{})),e[C][t]=!0),J(e,t,r)):M(e,t,r)},H=function(e,t){m(e);for(var r,n=y(t=g(t)),o=0,i=n.length;i>o;)Q(e,r=n[o++],t[r]);return e},V=function(e,t){return void 0===t?x(e):H(x(e),t)},X=function(e){var t=R.call(this,e=j(e,!0));return!(this===Y&&o(D,e)&&!o(U,e))&&(!(t||!o(this,e)||!o(D,e)||o(this,C)&&this[C][e])||t)},Z=function(e,t){if(e=g(e),t=j(t,!0),e!==Y||!o(D,t)||o(U,t)){var r=L(e,t);return!r||!o(D,t)||o(e,C)&&e[C][t]||(r.enumerable=!0),r}},$=function(e){for(var t,r=A(g(e)),n=[],i=0;r.length>i;)o(D,t=r[i++])||t==C||t==c||n.push(t);return n},ee=function(e){for(var t,r=e===Y,n=A(r?U:g(e)),i=[],a=0;n.length>a;)!o(D,t=n[a++])||r&&!o(Y,t)||i.push(D[t]);return i};W||(P=function(){if(this instanceof P)throw TypeError("Symbol is not a constructor!");var e=p(arguments.length>0?arguments[0]:void 0),t=function(r){this===Y&&t.call(U,r),o(this,C)&&o(this[C],e)&&(this[C][e]=!1),J(this,e,w(1,r))};return i&&q&&J(Y,e,{configurable:!0,set:t}),K(e)},u(P[I],"toString",function(){return this._k}),O.f=Z,E.f=Q,e("./_object-gopn").f=k.f=$,e("./_object-pie").f=X,e("./_object-gops").f=ee,i&&!e("./_library")&&u(Y,"propertyIsEnumerable",X,!0),_.f=function(e){return K(d(e))}),a(a.G+a.W+a.F*!W,{Symbol:P});for(var te="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),re=0;te.length>re;)d(te[re++]);for(var te=S(d.store),re=0;te.length>re;)b(te[re++]);a(a.S+a.F*!W,"Symbol",{for:function(e){return o(G,e+="")?G[e]:G[e]=P(e)},keyFor:function(e){if(z(e))return h(G,e);throw TypeError(e+" is not a symbol!")},useSetter:function(){q=!0},useSimple:function(){q=!1}}),a(a.S+a.F*!W,"Object",{create:V,defineProperty:Q,defineProperties:H,getOwnPropertyDescriptor:Z,getOwnPropertyNames:$,getOwnPropertySymbols:ee}),T&&a(a.S+a.F*(!W||s(function(){var e=P();return"[null]"!=F([e])||"{}"!=F({a:e})||"{}"!=F(Object(e))})),"JSON",{stringify:function(e){if(void 0!==e&&!z(e)){for(var t,r,n=[e],o=1;arguments.length>o;)n.push(arguments[o++]);return t=n[1],"function"==typeof t&&(r=t),!r&&v(t)||(t=function(e,t){if(r&&(t=r.call(this,e,t)),!z(t))return t}),n[1]=t,F.apply(T,n)}}}),P[I][N]||e("./_hide")(P[I],N,P[I].valueOf),l(P,"Symbol"),l(Math,"Math",!0),l(n.JSON,"JSON",!0)},{"./_an-object":37,"./_descriptors":45,"./_enum-keys":48,"./_export":49,"./_fails":50,"./_global":51,"./_has":52,"./_hide":53,"./_is-array":58,"./_keyof":66,"./_library":67,"./_meta":68,"./_object-create":69,"./_object-dp":70,"./_object-gopd":72,"./_object-gopn":74,"./_object-gopn-ext":73,"./_object-gops":75,"./_object-keys":78,"./_object-pie":79,"./_property-desc":81,"./_redefine":82,"./_set-to-string-tag":84,"./_shared":86,"./_to-iobject":90,"./_to-primitive":93,"./_uid":94,"./_wks":97,"./_wks-define":95,"./_wks-ext":96}],110:[function(e,t,r){e("./_wks-define")("asyncIterator")},{"./_wks-define":95}],111:[function(e,t,r){e("./_wks-define")("observable")},{"./_wks-define":95}],112:[function(e,t,r){e("./es6.array.iterator");for(var n=e("./_global"),o=e("./_hide"),i=e("./_iterators"),a=e("./_wks")("toStringTag"),u=["NodeList","DOMTokenList","MediaList","StyleSheetList","CSSRuleList"],c=0;c<5;c++){var s=u[c],f=n[s],l=f&&f.prototype;l&&!l[a]&&o(l,a,s),i[s]=i.Array}},{"./_global":51,"./_hide":53,"./_iterators":65,"./_wks":97,"./es6.array.iterator":102}],113:[function(e,t,r){(function(r){var n="object"==typeof r?r:"object"==typeof window?window:"object"==typeof self?self:this,o=n.regeneratorRuntime&&Object.getOwnPropertyNames(n).indexOf("regeneratorRuntime")>=0,i=o&&n.regeneratorRuntime;if(n.regeneratorRuntime=void 0,t.exports=e("./runtime"),o)n.regeneratorRuntime=i;else try{delete n.regeneratorRuntime}catch(e){n.regeneratorRuntime=void 0}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./runtime":114}],114:[function(e,t,r){(function(e,r){!function(r){"use strict";function n(e,t,r,n){var o=t&&t.prototype instanceof i?t:i,a=Object.create(o.prototype),u=new _(n||[]);return a._invoke=f(e,r,u),a}function o(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}function i(){}function a(){}function u(){}function c(e){["next","throw","return"].forEach(function(t){e[t]=function(e){return this._invoke(t,e)}})}function s(t){function r(e,n,i,a){var u=o(t[e],t,n);if("throw"!==u.type){var c=u.arg,s=c.value;return s&&"object"==typeof s&&m.call(s,"__await")?Promise.resolve(s.__await).then(function(e){r("next",e,i,a)},function(e){r("throw",e,i,a)}):Promise.resolve(s).then(function(e){c.value=e,i(c)},a)}a(u.arg)}function n(e,t){function n(){return new Promise(function(n,o){r(e,t,n,o)})}return i=i?i.then(n,n):n()}"object"==typeof e&&e.domain&&(r=e.domain.bind(r));var i;this._invoke=n}function f(e,t,r){var n=O;return function(i,a){if(n===S)throw new Error("Generator is already running");if(n===L){if("throw"===i)throw a;return h()}for(r.method=i,r.arg=a;;){var u=r.delegate;if(u){var c=l(u,r);if(c){if(c===M)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(n===O)throw n=L,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n=S;var s=o(e,t,r);if("normal"===s.type){if(n=r.done?L:E,s.arg===M)continue;return{value:s.arg,done:r.done}}"throw"===s.type&&(n=L,r.method="throw",r.arg=s.arg)}}}function l(e,t){var r=e.iterator[t.method];if(r===y){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=y,l(e,t),"throw"===t.method))return M;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return M}var n=o(r,e.iterator,t.arg);if("throw"===n.type)return t.method="throw",t.arg=n.arg,t.delegate=null,M;var i=n.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=y),t.delegate=null,M):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,M)}function p(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function d(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function _(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(p,this),this.reset(!0)}function b(e){if(e){var t=e[j];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,n=function t(){for(;++r=0;--n){var o=this.tryEntries[n],i=o.completion;if("root"===o.tryLoc)return t("end");if(o.tryLoc<=this.prev){var a=m.call(o,"catchLoc"),u=m.call(o,"finallyLoc");if(a&&u){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&m.call(n,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),d(r),M}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;d(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:b(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=y),M}}}("object"==typeof r?r:"object"==typeof window?window:"object"==typeof self?self:this)}).call(this,e("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{_process:1}],115:[function(e,t,r){t.exports=e("regenerator-runtime")},{"regenerator-runtime":113}]},{},[2])(2)}); diff --git a/docs/js/libs/es6-shim.min.js b/docs/js/libs/es6-shim.min.js new file mode 100644 index 0000000..0ca6daf --- /dev/null +++ b/docs/js/libs/es6-shim.min.js @@ -0,0 +1,12 @@ +/*! + * https://github.com/paulmillr/es6-shim + * @license es6-shim Copyright 2013-2016 by Paul Miller (http://paulmillr.com) + * and contributors, MIT License + * es6-shim: v0.35.1 + * see https://github.com/paulmillr/es6-shim/blob/0.35.1/LICENSE + * Details and documentation: + * https://github.com/paulmillr/es6-shim/ + */ +(function(e,t){if(typeof define==="function"&&define.amd){define(t)}else if(typeof exports==="object"){module.exports=t()}else{e.returnExports=t()}})(this,function(){"use strict";var e=Function.call.bind(Function.apply);var t=Function.call.bind(Function.call);var r=Array.isArray;var n=Object.keys;var o=function notThunker(t){return function notThunk(){return!e(t,this,arguments)}};var i=function(e){try{e();return false}catch(t){return true}};var a=function valueOrFalseIfThrows(e){try{return e()}catch(t){return false}};var u=o(i);var f=function(){return!i(function(){Object.defineProperty({},"x",{get:function(){}})})};var s=!!Object.defineProperty&&f();var c=function foo(){}.name==="foo";var l=Function.call.bind(Array.prototype.forEach);var p=Function.call.bind(Array.prototype.reduce);var v=Function.call.bind(Array.prototype.filter);var y=Function.call.bind(Array.prototype.some);var h=function(e,t,r,n){if(!n&&t in e){return}if(s){Object.defineProperty(e,t,{configurable:true,enumerable:false,writable:true,value:r})}else{e[t]=r}};var b=function(e,t,r){l(n(t),function(n){var o=t[n];h(e,n,o,!!r)})};var g=Function.call.bind(Object.prototype.toString);var d=typeof/abc/==="function"?function IsCallableSlow(e){return typeof e==="function"&&g(e)==="[object Function]"}:function IsCallableFast(e){return typeof e==="function"};var O={getter:function(e,t,r){if(!s){throw new TypeError("getters require true ES5 support")}Object.defineProperty(e,t,{configurable:true,enumerable:false,get:r})},proxy:function(e,t,r){if(!s){throw new TypeError("getters require true ES5 support")}var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,{configurable:n.configurable,enumerable:n.enumerable,get:function getKey(){return e[t]},set:function setKey(r){e[t]=r}})},redefine:function(e,t,r){if(s){var n=Object.getOwnPropertyDescriptor(e,t);n.value=r;Object.defineProperty(e,t,n)}else{e[t]=r}},defineByDescriptor:function(e,t,r){if(s){Object.defineProperty(e,t,r)}else if("value"in r){e[t]=r.value}},preserveToString:function(e,t){if(t&&d(t.toString)){h(e,"toString",t.toString.bind(t),true)}}};var m=Object.create||function(e,t){var r=function Prototype(){};r.prototype=e;var o=new r;if(typeof t!=="undefined"){n(t).forEach(function(e){O.defineByDescriptor(o,e,t[e])})}return o};var w=function(e,t){if(!Object.setPrototypeOf){return false}return a(function(){var r=function Subclass(t){var r=new e(t);Object.setPrototypeOf(r,Subclass.prototype);return r};Object.setPrototypeOf(r,e);r.prototype=m(e.prototype,{constructor:{value:r}});return t(r)})};var j=function(){if(typeof self!=="undefined"){return self}if(typeof window!=="undefined"){return window}if(typeof global!=="undefined"){return global}throw new Error("unable to locate global object")};var S=j();var T=S.isFinite;var I=Function.call.bind(String.prototype.indexOf);var E=Function.apply.bind(Array.prototype.indexOf);var P=Function.call.bind(Array.prototype.concat);var C=Function.call.bind(String.prototype.slice);var M=Function.call.bind(Array.prototype.push);var x=Function.apply.bind(Array.prototype.push);var N=Function.call.bind(Array.prototype.shift);var A=Math.max;var R=Math.min;var _=Math.floor;var k=Math.abs;var F=Math.exp;var L=Math.log;var D=Math.sqrt;var z=Function.call.bind(Object.prototype.hasOwnProperty);var q;var W=function(){};var G=S.Symbol||{};var H=G.species||"@@species";var V=Number.isNaN||function isNaN(e){return e!==e};var B=Number.isFinite||function isFinite(e){return typeof e==="number"&&T(e)};var $=d(Math.sign)?Math.sign:function sign(e){var t=Number(e);if(t===0){return t}if(V(t)){return t}return t<0?-1:1};var U=function isArguments(e){return g(e)==="[object Arguments]"};var J=function isArguments(e){return e!==null&&typeof e==="object"&&typeof e.length==="number"&&e.length>=0&&g(e)!=="[object Array]"&&g(e.callee)==="[object Function]"};var X=U(arguments)?U:J;var K={primitive:function(e){return e===null||typeof e!=="function"&&typeof e!=="object"},string:function(e){return g(e)==="[object String]"},regex:function(e){return g(e)==="[object RegExp]"},symbol:function(e){return typeof S.Symbol==="function"&&typeof e==="symbol"}};var Z=function overrideNative(e,t,r){var n=e[t];h(e,t,r,true);O.preserveToString(e[t],n)};var Y=typeof G==="function"&&typeof G["for"]==="function"&&K.symbol(G());var Q=K.symbol(G.iterator)?G.iterator:"_es6-shim iterator_";if(S.Set&&typeof(new S.Set)["@@iterator"]==="function"){Q="@@iterator"}if(!S.Reflect){h(S,"Reflect",{},true)}var ee=S.Reflect;var te=String;var re={Call:function Call(t,r){var n=arguments.length>2?arguments[2]:[];if(!re.IsCallable(t)){throw new TypeError(t+" is not a function")}return e(t,r,n)},RequireObjectCoercible:function(e,t){if(e==null){throw new TypeError(t||"Cannot call method on "+e)}return e},TypeIsObject:function(e){if(e===void 0||e===null||e===true||e===false){return false}return typeof e==="function"||typeof e==="object"},ToObject:function(e,t){return Object(re.RequireObjectCoercible(e,t))},IsCallable:d,IsConstructor:function(e){return re.IsCallable(e)},ToInt32:function(e){return re.ToNumber(e)>>0},ToUint32:function(e){return re.ToNumber(e)>>>0},ToNumber:function(e){if(g(e)==="[object Symbol]"){throw new TypeError("Cannot convert a Symbol value to a number")}return+e},ToInteger:function(e){var t=re.ToNumber(e);if(V(t)){return 0}if(t===0||!B(t)){return t}return(t>0?1:-1)*_(k(t))},ToLength:function(e){var t=re.ToInteger(e);if(t<=0){return 0}if(t>Number.MAX_SAFE_INTEGER){return Number.MAX_SAFE_INTEGER}return t},SameValue:function(e,t){if(e===t){if(e===0){return 1/e===1/t}return true}return V(e)&&V(t)},SameValueZero:function(e,t){return e===t||V(e)&&V(t)},IsIterable:function(e){return re.TypeIsObject(e)&&(typeof e[Q]!=="undefined"||X(e))},GetIterator:function(e){if(X(e)){return new q(e,"value")}var t=re.GetMethod(e,Q);if(!re.IsCallable(t)){throw new TypeError("value is not an iterable")}var r=re.Call(t,e);if(!re.TypeIsObject(r)){throw new TypeError("bad iterator")}return r},GetMethod:function(e,t){var r=re.ToObject(e)[t];if(r===void 0||r===null){return void 0}if(!re.IsCallable(r)){throw new TypeError("Method not callable: "+t)}return r},IteratorComplete:function(e){return!!e.done},IteratorClose:function(e,t){var r=re.GetMethod(e,"return");if(r===void 0){return}var n,o;try{n=re.Call(r,e)}catch(i){o=i}if(t){return}if(o){throw o}if(!re.TypeIsObject(n)){throw new TypeError("Iterator's return method returned a non-object.")}},IteratorNext:function(e){var t=arguments.length>1?e.next(arguments[1]):e.next();if(!re.TypeIsObject(t)){throw new TypeError("bad iterator")}return t},IteratorStep:function(e){var t=re.IteratorNext(e);var r=re.IteratorComplete(t);return r?false:t},Construct:function(e,t,r,n){var o=typeof r==="undefined"?e:r;if(!n&&ee.construct){return ee.construct(e,t,o)}var i=o.prototype;if(!re.TypeIsObject(i)){i=Object.prototype}var a=m(i);var u=re.Call(e,a,t);return re.TypeIsObject(u)?u:a},SpeciesConstructor:function(e,t){var r=e.constructor;if(r===void 0){return t}if(!re.TypeIsObject(r)){throw new TypeError("Bad constructor")}var n=r[H];if(n===void 0||n===null){return t}if(!re.IsConstructor(n)){throw new TypeError("Bad @@species")}return n},CreateHTML:function(e,t,r,n){var o=re.ToString(e);var i="<"+t;if(r!==""){var a=re.ToString(n);var u=a.replace(/"/g,""");i+=" "+r+'="'+u+'"'}var f=i+">";var s=f+o;return s+""},IsRegExp:function IsRegExp(e){if(!re.TypeIsObject(e)){return false}var t=e[G.match];if(typeof t!=="undefined"){return!!t}return K.regex(e)},ToString:function ToString(e){return te(e)}};if(s&&Y){var ne=function defineWellKnownSymbol(e){if(K.symbol(G[e])){return G[e]}var t=G["for"]("Symbol."+e);Object.defineProperty(G,e,{configurable:false,enumerable:false,writable:false,value:t});return t};if(!K.symbol(G.search)){var oe=ne("search");var ie=String.prototype.search;h(RegExp.prototype,oe,function search(e){return re.Call(ie,e,[this])});var ae=function search(e){var t=re.RequireObjectCoercible(this);if(e!==null&&typeof e!=="undefined"){var r=re.GetMethod(e,oe);if(typeof r!=="undefined"){return re.Call(r,e,[t])}}return re.Call(ie,t,[re.ToString(e)])};Z(String.prototype,"search",ae)}if(!K.symbol(G.replace)){var ue=ne("replace");var fe=String.prototype.replace;h(RegExp.prototype,ue,function replace(e,t){return re.Call(fe,e,[this,t])});var se=function replace(e,t){var r=re.RequireObjectCoercible(this);if(e!==null&&typeof e!=="undefined"){var n=re.GetMethod(e,ue);if(typeof n!=="undefined"){return re.Call(n,e,[r,t])}}return re.Call(fe,r,[re.ToString(e),t])};Z(String.prototype,"replace",se)}if(!K.symbol(G.split)){var ce=ne("split");var le=String.prototype.split;h(RegExp.prototype,ce,function split(e,t){return re.Call(le,e,[this,t])});var pe=function split(e,t){var r=re.RequireObjectCoercible(this);if(e!==null&&typeof e!=="undefined"){var n=re.GetMethod(e,ce);if(typeof n!=="undefined"){return re.Call(n,e,[r,t])}}return re.Call(le,r,[re.ToString(e),t])};Z(String.prototype,"split",pe)}var ve=K.symbol(G.match);var ye=ve&&function(){var e={};e[G.match]=function(){return 42};return"a".match(e)!==42}();if(!ve||ye){var he=ne("match");var be=String.prototype.match;h(RegExp.prototype,he,function match(e){return re.Call(be,e,[this])});var ge=function match(e){var t=re.RequireObjectCoercible(this);if(e!==null&&typeof e!=="undefined"){var r=re.GetMethod(e,he);if(typeof r!=="undefined"){return re.Call(r,e,[t])}}return re.Call(be,t,[re.ToString(e)])};Z(String.prototype,"match",ge)}}var de=function wrapConstructor(e,t,r){O.preserveToString(t,e);if(Object.setPrototypeOf){Object.setPrototypeOf(e,t)}if(s){l(Object.getOwnPropertyNames(e),function(n){if(n in W||r[n]){return}O.proxy(e,n,t)})}else{l(Object.keys(e),function(n){if(n in W||r[n]){return}t[n]=e[n]})}t.prototype=e.prototype;O.redefine(e.prototype,"constructor",t)};var Oe=function(){return this};var me=function(e){if(s&&!z(e,H)){O.getter(e,H,Oe)}};var we=function(e,t){var r=t||function iterator(){return this};h(e,Q,r);if(!e[Q]&&K.symbol(Q)){e[Q]=r}};var je=function createDataProperty(e,t,r){if(s){Object.defineProperty(e,t,{configurable:true,enumerable:true,writable:true,value:r})}else{e[t]=r}};var Se=function createDataPropertyOrThrow(e,t,r){je(e,t,r);if(!re.SameValue(e[t],r)){throw new TypeError("property is nonconfigurable")}};var Te=function(e,t,r,n){if(!re.TypeIsObject(e)){throw new TypeError("Constructor requires `new`: "+t.name)}var o=t.prototype;if(!re.TypeIsObject(o)){o=r}var i=m(o);for(var a in n){if(z(n,a)){var u=n[a];h(i,a,u,true)}}return i};if(String.fromCodePoint&&String.fromCodePoint.length!==1){var Ie=String.fromCodePoint;Z(String,"fromCodePoint",function fromCodePoint(e){return re.Call(Ie,this,arguments)})}var Ee={fromCodePoint:function fromCodePoint(e){var t=[];var r;for(var n=0,o=arguments.length;n1114111){throw new RangeError("Invalid code point "+r)}if(r<65536){M(t,String.fromCharCode(r))}else{r-=65536;M(t,String.fromCharCode((r>>10)+55296));M(t,String.fromCharCode(r%1024+56320))}}return t.join("")},raw:function raw(e){var t=re.ToObject(e,"bad callSite");var r=re.ToObject(t.raw,"bad raw value");var n=r.length;var o=re.ToLength(n);if(o<=0){return""}var i=[];var a=0;var u,f,s,c;while(a=o){break}f=a+1=Ce){throw new RangeError("repeat count must be less than infinity and not overflow maximum string size")}return Pe(t,r)},startsWith:function startsWith(e){var t=re.ToString(re.RequireObjectCoercible(this));if(re.IsRegExp(e)){throw new TypeError('Cannot call method "startsWith" with a regex')}var r=re.ToString(e);var n;if(arguments.length>1){n=arguments[1]}var o=A(re.ToInteger(n),0);return C(t,o,o+r.length)===r},endsWith:function endsWith(e){var t=re.ToString(re.RequireObjectCoercible(this));if(re.IsRegExp(e)){throw new TypeError('Cannot call method "endsWith" with a regex')}var r=re.ToString(e);var n=t.length;var o;if(arguments.length>1){o=arguments[1]}var i=typeof o==="undefined"?n:re.ToInteger(o);var a=R(A(i,0),n);return C(t,a-r.length,a)===r},includes:function includes(e){if(re.IsRegExp(e)){throw new TypeError('"includes" does not accept a RegExp')}var t=re.ToString(e);var r;if(arguments.length>1){r=arguments[1]}return I(this,t,r)!==-1},codePointAt:function codePointAt(e){var t=re.ToString(re.RequireObjectCoercible(this));var r=re.ToInteger(e);var n=t.length;if(r>=0&&r56319||i){return o}var a=t.charCodeAt(r+1);if(a<56320||a>57343){return o}return(o-55296)*1024+(a-56320)+65536}}};if(String.prototype.includes&&"a".includes("a",Infinity)!==false){Z(String.prototype,"includes",Me.includes)}if(String.prototype.startsWith&&String.prototype.endsWith){var xe=i(function(){"/a/".startsWith(/a/)});var Ne=a(function(){return"abc".startsWith("a",Infinity)===false});if(!xe||!Ne){Z(String.prototype,"startsWith",Me.startsWith);Z(String.prototype,"endsWith",Me.endsWith)}}if(Y){var Ae=a(function(){var e=/a/;e[G.match]=false;return"/a/".startsWith(e)});if(!Ae){Z(String.prototype,"startsWith",Me.startsWith)}var Re=a(function(){var e=/a/;e[G.match]=false;return"/a/".endsWith(e)});if(!Re){Z(String.prototype,"endsWith",Me.endsWith)}var _e=a(function(){var e=/a/;e[G.match]=false;return"/a/".includes(e)});if(!_e){Z(String.prototype,"includes",Me.includes)}}b(String.prototype,Me);var ke=[" \n\x0B\f\r \xa0\u1680\u180e\u2000\u2001\u2002\u2003","\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028","\u2029\ufeff"].join("");var Fe=new RegExp("(^["+ke+"]+)|(["+ke+"]+$)","g");var Le=function trim(){return re.ToString(re.RequireObjectCoercible(this)).replace(Fe,"")};var De=["\x85","\u200b","\ufffe"].join("");var ze=new RegExp("["+De+"]","g");var qe=/^[\-+]0x[0-9a-f]+$/i;var We=De.trim().length!==De.length;h(String.prototype,"trim",Le,We);var Ge=function(e){return{value:e,done:arguments.length===0}};var He=function(e){re.RequireObjectCoercible(e);this._s=re.ToString(e);this._i=0};He.prototype.next=function(){var e=this._s;var t=this._i;if(typeof e==="undefined"||t>=e.length){this._s=void 0;return Ge()}var r=e.charCodeAt(t);var n,o;if(r<55296||r>56319||t+1===e.length){o=1}else{n=e.charCodeAt(t+1);o=n<56320||n>57343?1:2}this._i=t+o;return Ge(e.substr(t,o))};we(He.prototype);we(String.prototype,function(){return new He(this)});var Ve={from:function from(e){var r=this;var n;if(arguments.length>1){n=arguments[1]}var o,i;if(typeof n==="undefined"){o=false}else{if(!re.IsCallable(n)){throw new TypeError("Array.from: when provided, the second argument must be a function")}if(arguments.length>2){i=arguments[2]}o=true}var a=typeof(X(e)||re.GetMethod(e,Q))!=="undefined";var u,f,s;if(a){f=re.IsConstructor(r)?Object(new r):[];var c=re.GetIterator(e);var l,p;s=0;while(true){l=re.IteratorStep(c);if(l===false){break}p=l.value;try{if(o){p=typeof i==="undefined"?n(p,s):t(n,i,p,s)}f[s]=p}catch(v){re.IteratorClose(c,true);throw v}s+=1}u=s}else{var y=re.ToObject(e);u=re.ToLength(y.length);f=re.IsConstructor(r)?Object(new r(u)):new Array(u);var h;for(s=0;s2){f=arguments[2]}var s=typeof f==="undefined"?n:re.ToInteger(f);var c=s<0?A(n+s,0):R(s,n);var l=R(c-u,n-a);var p=1;if(u0){if(u in r){r[a]=r[u]}else{delete r[a]}u+=p;a+=p;l-=1}return r},fill:function fill(e){var t;if(arguments.length>1){t=arguments[1]}var r;if(arguments.length>2){r=arguments[2]}var n=re.ToObject(this);var o=re.ToLength(n.length);t=re.ToInteger(typeof t==="undefined"?0:t);r=re.ToInteger(typeof r==="undefined"?o:r);var i=t<0?A(o+t,0):R(t,o);var a=r<0?o+r:r;for(var u=i;u1?arguments[1]:null;for(var i=0,a;i1?arguments[1]:null;for(var i=0;i1&&typeof arguments[1]!=="undefined"){return re.Call(Ze,this,arguments)}else{return t(Ze,this,e)}})}var Ye=-(Math.pow(2,32)-1);var Qe=function(e,r){var n={length:Ye};n[r?(n.length>>>0)-1:0]=true;return a(function(){t(e,n,function(){throw new RangeError("should not reach here")},[]);return true})};if(!Qe(Array.prototype.forEach)){var et=Array.prototype.forEach;Z(Array.prototype,"forEach",function forEach(e){return re.Call(et,this.length>=0?this:[],arguments)},true)}if(!Qe(Array.prototype.map)){var tt=Array.prototype.map;Z(Array.prototype,"map",function map(e){return re.Call(tt,this.length>=0?this:[],arguments)},true)}if(!Qe(Array.prototype.filter)){var rt=Array.prototype.filter;Z(Array.prototype,"filter",function filter(e){return re.Call(rt,this.length>=0?this:[],arguments)},true)}if(!Qe(Array.prototype.some)){var nt=Array.prototype.some;Z(Array.prototype,"some",function some(e){return re.Call(nt,this.length>=0?this:[],arguments)},true)}if(!Qe(Array.prototype.every)){var ot=Array.prototype.every;Z(Array.prototype,"every",function every(e){return re.Call(ot,this.length>=0?this:[],arguments)},true)}if(!Qe(Array.prototype.reduce)){var it=Array.prototype.reduce;Z(Array.prototype,"reduce",function reduce(e){return re.Call(it,this.length>=0?this:[],arguments)},true)}if(!Qe(Array.prototype.reduceRight,true)){var at=Array.prototype.reduceRight;Z(Array.prototype,"reduceRight",function reduceRight(e){return re.Call(at,this.length>=0?this:[],arguments)},true)}var ut=Number("0o10")!==8;var ft=Number("0b10")!==2;var st=y(De,function(e){return Number(e+0+e)===0});if(ut||ft||st){var ct=Number;var lt=/^0b[01]+$/i;var pt=/^0o[0-7]+$/i;var vt=lt.test.bind(lt);var yt=pt.test.bind(pt);var ht=function(e){var t;if(typeof e.valueOf==="function"){t=e.valueOf();if(K.primitive(t)){return t}}if(typeof e.toString==="function"){t=e.toString();if(K.primitive(t)){return t}}throw new TypeError("No default value")};var bt=ze.test.bind(ze);var gt=qe.test.bind(qe);var dt=function(){var e=function Number(t){var r;if(arguments.length>0){r=K.primitive(t)?t:ht(t,"number")}else{r=0}if(typeof r==="string"){r=re.Call(Le,r);if(vt(r)){r=parseInt(C(r,2),2)}else if(yt(r)){r=parseInt(C(r,2),8)}else if(bt(r)||gt(r)){r=NaN}}var n=this;var o=a(function(){ct.prototype.valueOf.call(n);return true});if(n instanceof e&&!o){return new ct(r)}return ct(r)};return e}();de(ct,dt,{});b(dt,{NaN:ct.NaN,MAX_VALUE:ct.MAX_VALUE,MIN_VALUE:ct.MIN_VALUE,NEGATIVE_INFINITY:ct.NEGATIVE_INFINITY,POSITIVE_INFINITY:ct.POSITIVE_INFINITY});Number=dt;O.redefine(S,"Number",dt)}var Ot=Math.pow(2,53)-1;b(Number,{MAX_SAFE_INTEGER:Ot,MIN_SAFE_INTEGER:-Ot,EPSILON:2.220446049250313e-16,parseInt:S.parseInt,parseFloat:S.parseFloat,isFinite:B,isInteger:function isInteger(e){return B(e)&&re.ToInteger(e)===e},isSafeInteger:function isSafeInteger(e){return Number.isInteger(e)&&k(e)<=Number.MAX_SAFE_INTEGER},isNaN:V});h(Number,"parseInt",S.parseInt,Number.parseInt!==S.parseInt);if(![,1].find(function(e,t){return t===0})){Z(Array.prototype,"find",$e.find)}if([,1].findIndex(function(e,t){return t===0})!==0){Z(Array.prototype,"findIndex",$e.findIndex)}var mt=Function.bind.call(Function.bind,Object.prototype.propertyIsEnumerable);var wt=function ensureEnumerable(e,t){if(s&&mt(e,t)){Object.defineProperty(e,t,{enumerable:false})}};var jt=function sliceArgs(){var e=Number(this);var t=arguments.length;var r=t-e;var n=new Array(r<0?0:r);for(var o=e;o1){return NaN}if(t===-1){return-Infinity}if(t===1){return Infinity}if(t===0){return t}return.5*L((1+t)/(1-t))},cbrt:function cbrt(e){var t=Number(e);if(t===0){return t}var r=t<0;var n;if(r){t=-t}if(t===Infinity){n=Infinity}else{n=F(L(t)/3);n=(t/(n*n)+2*n)/3}return r?-n:n},clz32:function clz32(e){var t=Number(e);var r=re.ToUint32(t);if(r===0){return 32}return Or?re.Call(Or,r):31-_(L(r+.5)*gr)},cosh:function cosh(e){var t=Number(e);if(t===0){return 1}if(V(t)){return NaN}if(!T(t)){return Infinity}if(t<0){t=-t}if(t>21){return F(t)/2}return(F(t)+F(-t))/2},expm1:function expm1(e){var t=Number(e);if(t===-Infinity){return-1}if(!T(t)||t===0){return t}if(k(t)>.5){return F(t)-1}var r=t;var n=0;var o=1;while(n+r!==n){n+=r;o+=1;r*=t/o}return n},hypot:function hypot(e,t){var r=0;var n=0;for(var o=0;o0?i/n*(i/n):i}}return n===Infinity?Infinity:n*D(r)},log2:function log2(e){return L(e)*gr},log10:function log10(e){return L(e)*dr},log1p:function log1p(e){var t=Number(e);if(t<-1||V(t)){return NaN}if(t===0||t===Infinity){return t}if(t===-1){return-Infinity}return 1+t-1===0?t:t*(L(1+t)/(1+t-1))},sign:$,sinh:function sinh(e){var t=Number(e);if(!T(t)||t===0){return t}if(k(t)<1){return(Math.expm1(t)-Math.expm1(-t))/2}return(F(t-1)-F(-t-1))*br/2},tanh:function tanh(e){var t=Number(e);if(V(t)||t===0){return t}if(t>=20){return 1}if(t<=-20){return-1}return(Math.expm1(t)-Math.expm1(-t))/(F(t)+F(-t))},trunc:function trunc(e){var t=Number(e);return t<0?-_(-t):_(t)},imul:function imul(e,t){var r=re.ToUint32(e);var n=re.ToUint32(t);var o=r>>>16&65535;var i=r&65535;var a=n>>>16&65535;var u=n&65535;return i*u+(o*u+i*a<<16>>>0)|0},fround:function fround(e){var t=Number(e);if(t===0||t===Infinity||t===-Infinity||V(t)){return t}var r=$(t);var n=k(t);if(nyr||V(i)){return r*Infinity}return r*i}};b(Math,mr);h(Math,"log1p",mr.log1p,Math.log1p(-1e-17)!==-1e-17);h(Math,"asinh",mr.asinh,Math.asinh(-1e7)!==-Math.asinh(1e7));h(Math,"tanh",mr.tanh,Math.tanh(-2e-17)!==-2e-17);h(Math,"acosh",mr.acosh,Math.acosh(Number.MAX_VALUE)===Infinity);h(Math,"cbrt",mr.cbrt,Math.abs(1-Math.cbrt(1e-300)/1e-100)/Number.EPSILON>8);h(Math,"sinh",mr.sinh,Math.sinh(-2e-17)!==-2e-17);var wr=Math.expm1(10);h(Math,"expm1",mr.expm1,wr>22025.465794806718||wr<22025.465794806718);var jr=Math.round;var Sr=Math.round(.5-Number.EPSILON/4)===0&&Math.round(-.5+Number.EPSILON/3.99)===1;var Tr=lr+1;var Ir=2*lr-1;var Er=[Tr,Ir].every(function(e){return Math.round(e)===e});h(Math,"round",function round(e){var t=_(e);var r=t===-1?-0:t+1;return e-t<.5?t:r},!Sr||!Er);O.preserveToString(Math.round,jr);var Pr=Math.imul;if(Math.imul(4294967295,5)!==-5){Math.imul=mr.imul;O.preserveToString(Math.imul,Pr)}if(Math.imul.length!==2){Z(Math,"imul",function imul(e,t){return re.Call(Pr,Math,arguments); +})}var Cr=function(){var e=S.setTimeout;if(typeof e!=="function"&&typeof e!=="object"){return}re.IsPromise=function(e){if(!re.TypeIsObject(e)){return false}if(typeof e._promise==="undefined"){return false}return true};var r=function(e){if(!re.IsConstructor(e)){throw new TypeError("Bad promise constructor")}var t=this;var r=function(e,r){if(t.resolve!==void 0||t.reject!==void 0){throw new TypeError("Bad Promise implementation!")}t.resolve=e;t.reject=r};t.resolve=void 0;t.reject=void 0;t.promise=new e(r);if(!(re.IsCallable(t.resolve)&&re.IsCallable(t.reject))){throw new TypeError("Bad promise constructor")}};var n;if(typeof window!=="undefined"&&re.IsCallable(window.postMessage)){n=function(){var e=[];var t="zero-timeout-message";var r=function(r){M(e,r);window.postMessage(t,"*")};var n=function(r){if(r.source===window&&r.data===t){r.stopPropagation();if(e.length===0){return}var n=N(e);n()}};window.addEventListener("message",n,true);return r}}var o=function(){var e=S.Promise;var t=e&&e.resolve&&e.resolve();return t&&function(e){return t.then(e)}};var i=re.IsCallable(S.setImmediate)?S.setImmediate:typeof process==="object"&&process.nextTick?process.nextTick:o()||(re.IsCallable(n)?n():function(t){e(t,0)});var a=function(e){return e};var u=function(e){throw e};var f=0;var s=1;var c=2;var l=0;var p=1;var v=2;var y={};var h=function(e,t,r){i(function(){g(e,t,r)})};var g=function(e,t,r){var n,o;if(t===y){return e(r)}try{n=e(r);o=t.resolve}catch(i){n=i;o=t.reject}o(n)};var d=function(e,t){var r=e._promise;var n=r.reactionLength;if(n>0){h(r.fulfillReactionHandler0,r.reactionCapability0,t);r.fulfillReactionHandler0=void 0;r.rejectReactions0=void 0;r.reactionCapability0=void 0;if(n>1){for(var o=1,i=0;o0){h(r.rejectReactionHandler0,r.reactionCapability0,t);r.fulfillReactionHandler0=void 0;r.rejectReactions0=void 0;r.reactionCapability0=void 0;if(n>1){for(var o=1,i=0;o2&&arguments[2]===y;if(b&&o===E){i=y}else{i=new r(o)}var g=re.IsCallable(e)?e:a;var d=re.IsCallable(t)?t:u;var O=n._promise;var m;if(O.state===f){if(O.reactionLength===0){O.fulfillReactionHandler0=g;O.rejectReactionHandler0=d;O.reactionCapability0=i}else{var w=3*(O.reactionLength-1);O[w+l]=g;O[w+p]=d;O[w+v]=i}O.reactionLength+=1}else if(O.state===s){m=O.result;h(g,i,m)}else if(O.state===c){m=O.result;h(d,i,m)}else{throw new TypeError("unexpected Promise state")}return i.promise}});y=new r(E);I=T.then;return E}();if(S.Promise){delete S.Promise.accept;delete S.Promise.defer;delete S.Promise.prototype.chain}if(typeof Cr==="function"){b(S,{Promise:Cr});var Mr=w(S.Promise,function(e){return e.resolve(42).then(function(){})instanceof e});var xr=!i(function(){S.Promise.reject(42).then(null,5).then(null,W)});var Nr=i(function(){S.Promise.call(3,W)});var Ar=function(e){var t=e.resolve(5);t.constructor={};var r=e.resolve(t);try{r.then(null,W).then(null,W)}catch(n){return true}return t===r}(S.Promise);var Rr=s&&function(){var e=0;var t=Object.defineProperty({},"then",{get:function(){e+=1}});Promise.resolve(t);return e===1}();var _r=function BadResolverPromise(e){var t=new Promise(e);e(3,function(){});this.then=t.then;this.constructor=BadResolverPromise};_r.prototype=Promise.prototype;_r.all=Promise.all;var kr=a(function(){return!!_r.all([1,2])});if(!Mr||!xr||!Nr||Ar||!Rr||kr){Promise=Cr;Z(S,"Promise",Cr)}if(Promise.all.length!==1){var Fr=Promise.all;Z(Promise,"all",function all(e){return re.Call(Fr,this,arguments)})}if(Promise.race.length!==1){var Lr=Promise.race;Z(Promise,"race",function race(e){return re.Call(Lr,this,arguments)})}if(Promise.resolve.length!==1){var Dr=Promise.resolve;Z(Promise,"resolve",function resolve(e){return re.Call(Dr,this,arguments)})}if(Promise.reject.length!==1){var zr=Promise.reject;Z(Promise,"reject",function reject(e){return re.Call(zr,this,arguments)})}wt(Promise,"all");wt(Promise,"race");wt(Promise,"resolve");wt(Promise,"reject");me(Promise)}var qr=function(e){var t=n(p(e,function(e,t){e[t]=true;return e},{}));return e.join(":")===t.join(":")};var Wr=qr(["z","a","bb"]);var Gr=qr(["z",1,"a","3",2]);if(s){var Hr=function fastkey(e){if(!Wr){return null}if(typeof e==="undefined"||e===null){return"^"+re.ToString(e)}else if(typeof e==="string"){return"$"+e}else if(typeof e==="number"){if(!Gr){return"n"+e}return e}else if(typeof e==="boolean"){return"b"+e}return null};var Vr=function emptyObject(){return Object.create?Object.create(null):{}};var Br=function addIterableToMap(e,n,o){if(r(o)||K.string(o)){l(o,function(e){if(!re.TypeIsObject(e)){throw new TypeError("Iterator value "+e+" is not an entry object")}n.set(e[0],e[1])})}else if(o instanceof e){t(e.prototype.forEach,o,function(e,t){n.set(t,e)})}else{var i,a;if(o!==null&&typeof o!=="undefined"){a=n.set;if(!re.IsCallable(a)){throw new TypeError("bad map")}i=re.GetIterator(o)}if(typeof i!=="undefined"){while(true){var u=re.IteratorStep(i);if(u===false){break}var f=u.value;try{if(!re.TypeIsObject(f)){throw new TypeError("Iterator value "+f+" is not an entry object")}t(a,n,f[0],f[1])}catch(s){re.IteratorClose(i,true);throw s}}}}};var $r=function addIterableToSet(e,n,o){if(r(o)||K.string(o)){l(o,function(e){n.add(e)})}else if(o instanceof e){t(e.prototype.forEach,o,function(e){n.add(e)})}else{var i,a;if(o!==null&&typeof o!=="undefined"){a=n.add;if(!re.IsCallable(a)){throw new TypeError("bad set")}i=re.GetIterator(o)}if(typeof i!=="undefined"){while(true){var u=re.IteratorStep(i);if(u===false){break}var f=u.value;try{t(a,n,f)}catch(s){re.IteratorClose(i,true);throw s}}}}};var Ur={Map:function(){var e={};var r=function MapEntry(e,t){this.key=e;this.value=t;this.next=null;this.prev=null};r.prototype.isRemoved=function isRemoved(){return this.key===e};var n=function isMap(e){return!!e._es6map};var o=function requireMapSlot(e,t){if(!re.TypeIsObject(e)||!n(e)){throw new TypeError("Method Map.prototype."+t+" called on incompatible receiver "+re.ToString(e))}};var i=function MapIterator(e,t){o(e,"[[MapIterator]]");this.head=e._head;this.i=this.head;this.kind=t};i.prototype={next:function next(){var e=this.i;var t=this.kind;var r=this.head;if(typeof this.i==="undefined"){return Ge()}while(e.isRemoved()&&e!==r){e=e.prev}var n;while(e.next!==r){e=e.next;if(!e.isRemoved()){if(t==="key"){n=e.key}else if(t==="value"){n=e.value}else{n=[e.key,e.value]}this.i=e;return Ge(n)}}this.i=void 0;return Ge()}};we(i.prototype);var a;var u=function Map(){if(!(this instanceof Map)){throw new TypeError('Constructor Map requires "new"')}if(this&&this._es6map){throw new TypeError("Bad construction")}var e=Te(this,Map,a,{_es6map:true,_head:null,_storage:Vr(),_size:0});var t=new r(null,null);t.next=t.prev=t;e._head=t;if(arguments.length>0){Br(Map,e,arguments[0])}return e};a=u.prototype;O.getter(a,"size",function(){if(typeof this._size==="undefined"){throw new TypeError("size method called on incompatible Map")}return this._size});b(a,{get:function get(e){o(this,"get");var t=Hr(e);if(t!==null){var r=this._storage[t];if(r){return r.value}else{return}}var n=this._head;var i=n;while((i=i.next)!==n){if(re.SameValueZero(i.key,e)){return i.value}}},has:function has(e){o(this,"has");var t=Hr(e);if(t!==null){return typeof this._storage[t]!=="undefined"}var r=this._head;var n=r;while((n=n.next)!==r){if(re.SameValueZero(n.key,e)){return true}}return false},set:function set(e,t){o(this,"set");var n=this._head;var i=n;var a;var u=Hr(e);if(u!==null){if(typeof this._storage[u]!=="undefined"){this._storage[u].value=t;return this}else{a=this._storage[u]=new r(e,t);i=n.prev}}while((i=i.next)!==n){if(re.SameValueZero(i.key,e)){i.value=t;return this}}a=a||new r(e,t);if(re.SameValue(-0,e)){a.key=+0}a.next=this._head;a.prev=this._head.prev;a.prev.next=a;a.next.prev=a;this._size+=1;return this},"delete":function(t){o(this,"delete");var r=this._head;var n=r;var i=Hr(t);if(i!==null){if(typeof this._storage[i]==="undefined"){return false}n=this._storage[i].prev;delete this._storage[i]}while((n=n.next)!==r){if(re.SameValueZero(n.key,t)){n.key=n.value=e;n.prev.next=n.next;n.next.prev=n.prev;this._size-=1;return true}}return false},clear:function clear(){o(this,"clear");this._size=0;this._storage=Vr();var t=this._head;var r=t;var n=r.next;while((r=n)!==t){r.key=r.value=e;n=r.next;r.next=r.prev=t}t.next=t.prev=t},keys:function keys(){o(this,"keys");return new i(this,"key")},values:function values(){o(this,"values");return new i(this,"value")},entries:function entries(){o(this,"entries");return new i(this,"key+value")},forEach:function forEach(e){o(this,"forEach");var r=arguments.length>1?arguments[1]:null;var n=this.entries();for(var i=n.next();!i.done;i=n.next()){if(r){t(e,r,i.value[1],i.value[0],this)}else{e(i.value[1],i.value[0],this)}}}});we(a,a.entries);return u}(),Set:function(){var e=function isSet(e){return e._es6set&&typeof e._storage!=="undefined"};var r=function requireSetSlot(t,r){if(!re.TypeIsObject(t)||!e(t)){throw new TypeError("Set.prototype."+r+" called on incompatible receiver "+re.ToString(t))}};var o;var i=function Set(){if(!(this instanceof Set)){throw new TypeError('Constructor Set requires "new"')}if(this&&this._es6set){throw new TypeError("Bad construction")}var e=Te(this,Set,o,{_es6set:true,"[[SetData]]":null,_storage:Vr()});if(!e._es6set){throw new TypeError("bad set")}if(arguments.length>0){$r(Set,e,arguments[0])}return e};o=i.prototype;var a=function(e){var t=e;if(t==="^null"){return null}else if(t==="^undefined"){return void 0}else{var r=t.charAt(0);if(r==="$"){return C(t,1)}else if(r==="n"){return+C(t,1)}else if(r==="b"){return t==="btrue"}}return+t};var u=function ensureMap(e){if(!e["[[SetData]]"]){var t=e["[[SetData]]"]=new Ur.Map;l(n(e._storage),function(e){var r=a(e);t.set(r,r)});e["[[SetData]]"]=t}e._storage=null};O.getter(i.prototype,"size",function(){r(this,"size");if(this._storage){return n(this._storage).length}u(this);return this["[[SetData]]"].size});b(i.prototype,{has:function has(e){r(this,"has");var t;if(this._storage&&(t=Hr(e))!==null){return!!this._storage[t]}u(this);return this["[[SetData]]"].has(e)},add:function add(e){r(this,"add");var t;if(this._storage&&(t=Hr(e))!==null){this._storage[t]=true;return this}u(this);this["[[SetData]]"].set(e,e);return this},"delete":function(e){r(this,"delete");var t;if(this._storage&&(t=Hr(e))!==null){var n=z(this._storage,t);return delete this._storage[t]&&n}u(this);return this["[[SetData]]"]["delete"](e)},clear:function clear(){r(this,"clear");if(this._storage){this._storage=Vr()}if(this["[[SetData]]"]){this["[[SetData]]"].clear()}},values:function values(){r(this,"values");u(this);return this["[[SetData]]"].values()},entries:function entries(){r(this,"entries");u(this);return this["[[SetData]]"].entries()},forEach:function forEach(e){r(this,"forEach");var n=arguments.length>1?arguments[1]:null;var o=this;u(o);this["[[SetData]]"].forEach(function(r,i){if(n){t(e,n,i,i,o)}else{e(i,i,o)}})}});h(i.prototype,"keys",i.prototype.values,true);we(i.prototype,i.prototype.values);return i}()};if(S.Map||S.Set){var Jr=a(function(){return new Map([[1,2]]).get(1)===2});if(!Jr){var Xr=S.Map;S.Map=function Map(){if(!(this instanceof Map)){throw new TypeError('Constructor Map requires "new"')}var e=new Xr;if(arguments.length>0){Br(Map,e,arguments[0])}delete e.constructor;Object.setPrototypeOf(e,S.Map.prototype);return e};S.Map.prototype=m(Xr.prototype);h(S.Map.prototype,"constructor",S.Map,true);O.preserveToString(S.Map,Xr)}var Kr=new Map;var Zr=function(){var e=new Map([[1,0],[2,0],[3,0],[4,0]]);e.set(-0,e);return e.get(0)===e&&e.get(-0)===e&&e.has(0)&&e.has(-0)}();var Yr=Kr.set(1,2)===Kr;if(!Zr||!Yr){var Qr=Map.prototype.set;Z(Map.prototype,"set",function set(e,r){t(Qr,this,e===0?0:e,r);return this})}if(!Zr){var en=Map.prototype.get;var tn=Map.prototype.has;b(Map.prototype,{get:function get(e){return t(en,this,e===0?0:e)},has:function has(e){return t(tn,this,e===0?0:e)}},true);O.preserveToString(Map.prototype.get,en);O.preserveToString(Map.prototype.has,tn)}var rn=new Set;var nn=function(e){e["delete"](0);e.add(-0);return!e.has(0)}(rn);var on=rn.add(1)===rn;if(!nn||!on){var an=Set.prototype.add;Set.prototype.add=function add(e){t(an,this,e===0?0:e);return this};O.preserveToString(Set.prototype.add,an)}if(!nn){var un=Set.prototype.has;Set.prototype.has=function has(e){return t(un,this,e===0?0:e)};O.preserveToString(Set.prototype.has,un);var fn=Set.prototype["delete"];Set.prototype["delete"]=function SetDelete(e){return t(fn,this,e===0?0:e)};O.preserveToString(Set.prototype["delete"],fn)}var sn=w(S.Map,function(e){var t=new e([]);t.set(42,42);return t instanceof e});var cn=Object.setPrototypeOf&&!sn;var ln=function(){try{return!(S.Map()instanceof S.Map)}catch(e){return e instanceof TypeError}}();if(S.Map.length!==0||cn||!ln){var pn=S.Map;S.Map=function Map(){if(!(this instanceof Map)){throw new TypeError('Constructor Map requires "new"')}var e=new pn;if(arguments.length>0){Br(Map,e,arguments[0])}delete e.constructor;Object.setPrototypeOf(e,Map.prototype);return e};S.Map.prototype=pn.prototype;h(S.Map.prototype,"constructor",S.Map,true);O.preserveToString(S.Map,pn)}var vn=w(S.Set,function(e){var t=new e([]);t.add(42,42);return t instanceof e});var yn=Object.setPrototypeOf&&!vn;var hn=function(){try{return!(S.Set()instanceof S.Set)}catch(e){return e instanceof TypeError}}();if(S.Set.length!==0||yn||!hn){var bn=S.Set;S.Set=function Set(){if(!(this instanceof Set)){throw new TypeError('Constructor Set requires "new"')}var e=new bn;if(arguments.length>0){$r(Set,e,arguments[0])}delete e.constructor;Object.setPrototypeOf(e,Set.prototype);return e};S.Set.prototype=bn.prototype;h(S.Set.prototype,"constructor",S.Set,true);O.preserveToString(S.Set,bn)}var gn=new S.Map;var dn=!a(function(){return gn.keys().next().done});if(typeof S.Map.prototype.clear!=="function"||(new S.Set).size!==0||gn.size!==0||typeof S.Map.prototype.keys!=="function"||typeof S.Set.prototype.keys!=="function"||typeof S.Map.prototype.forEach!=="function"||typeof S.Set.prototype.forEach!=="function"||u(S.Map)||u(S.Set)||typeof gn.keys().next!=="function"||dn||!sn){b(S,{Map:Ur.Map,Set:Ur.Set},true)}if(S.Set.prototype.keys!==S.Set.prototype.values){h(S.Set.prototype,"keys",S.Set.prototype.values,true)}we(Object.getPrototypeOf((new S.Map).keys()));we(Object.getPrototypeOf((new S.Set).keys()));if(c&&S.Set.prototype.has.name!=="has"){var On=S.Set.prototype.has;Z(S.Set.prototype,"has",function has(e){return t(On,this,e)})}}b(S,Ur);me(S.Map);me(S.Set)}var mn=function throwUnlessTargetIsObject(e){if(!re.TypeIsObject(e)){throw new TypeError("target must be an object")}};var wn={apply:function apply(){return re.Call(re.Call,null,arguments)},construct:function construct(e,t){if(!re.IsConstructor(e)){throw new TypeError("First argument must be a constructor.")}var r=arguments.length>2?arguments[2]:e;if(!re.IsConstructor(r)){throw new TypeError("new.target must be a constructor.")}return re.Construct(e,t,r,"internal")},deleteProperty:function deleteProperty(e,t){mn(e);if(s){var r=Object.getOwnPropertyDescriptor(e,t);if(r&&!r.configurable){return false}}return delete e[t]},has:function has(e,t){mn(e);return t in e}};if(Object.getOwnPropertyNames){Object.assign(wn,{ownKeys:function ownKeys(e){mn(e);var t=Object.getOwnPropertyNames(e);if(re.IsCallable(Object.getOwnPropertySymbols)){x(t,Object.getOwnPropertySymbols(e))}return t}})}var jn=function ConvertExceptionToBoolean(e){return!i(e)};if(Object.preventExtensions){Object.assign(wn,{isExtensible:function isExtensible(e){mn(e);return Object.isExtensible(e)},preventExtensions:function preventExtensions(e){mn(e);return jn(function(){Object.preventExtensions(e)})}})}if(s){var Sn=function get(e,t,r){var n=Object.getOwnPropertyDescriptor(e,t);if(!n){var o=Object.getPrototypeOf(e);if(o===null){return void 0}return Sn(o,t,r)}if("value"in n){return n.value}if(n.get){return re.Call(n.get,r)}return void 0};var Tn=function set(e,r,n,o){var i=Object.getOwnPropertyDescriptor(e,r);if(!i){var a=Object.getPrototypeOf(e);if(a!==null){return Tn(a,r,n,o)}i={value:void 0,writable:true,enumerable:true,configurable:true}}if("value"in i){if(!i.writable){return false}if(!re.TypeIsObject(o)){return false}var u=Object.getOwnPropertyDescriptor(o,r);if(u){return ee.defineProperty(o,r,{value:n})}else{return ee.defineProperty(o,r,{value:n,writable:true,enumerable:true,configurable:true})}}if(i.set){t(i.set,o,n);return true}return false};Object.assign(wn,{defineProperty:function defineProperty(e,t,r){mn(e);return jn(function(){Object.defineProperty(e,t,r)})},getOwnPropertyDescriptor:function getOwnPropertyDescriptor(e,t){mn(e);return Object.getOwnPropertyDescriptor(e,t)},get:function get(e,t){mn(e);var r=arguments.length>2?arguments[2]:e;return Sn(e,t,r)},set:function set(e,t,r){mn(e);var n=arguments.length>3?arguments[3]:e;return Tn(e,t,r,n)}})}if(Object.getPrototypeOf){var In=Object.getPrototypeOf;wn.getPrototypeOf=function getPrototypeOf(e){mn(e);return In(e)}}if(Object.setPrototypeOf&&wn.getPrototypeOf){var En=function(e,t){var r=t;while(r){if(e===r){return true}r=wn.getPrototypeOf(r)}return false};Object.assign(wn,{setPrototypeOf:function setPrototypeOf(e,t){mn(e);if(t!==null&&!re.TypeIsObject(t)){throw new TypeError("proto must be an object or null")}if(t===ee.getPrototypeOf(e)){return true}if(ee.isExtensible&&!ee.isExtensible(e)){return false}if(En(e,t)){return false}Object.setPrototypeOf(e,t);return true}})}var Pn=function(e,t){if(!re.IsCallable(S.Reflect[e])){h(S.Reflect,e,t)}else{var r=a(function(){S.Reflect[e](1);S.Reflect[e](NaN);S.Reflect[e](true);return true});if(r){Z(S.Reflect,e,t)}}};Object.keys(wn).forEach(function(e){Pn(e,wn[e])});var Cn=S.Reflect.getPrototypeOf;if(c&&Cn&&Cn.name!=="getPrototypeOf"){Z(S.Reflect,"getPrototypeOf",function getPrototypeOf(e){return t(Cn,S.Reflect,e)})}if(S.Reflect.setPrototypeOf){if(a(function(){S.Reflect.setPrototypeOf(1,{});return true})){Z(S.Reflect,"setPrototypeOf",wn.setPrototypeOf)}}if(S.Reflect.defineProperty){if(!a(function(){var e=!S.Reflect.defineProperty(1,"test",{value:1});var t=typeof Object.preventExtensions!=="function"||!S.Reflect.defineProperty(Object.preventExtensions({}),"test",{});return e&&t})){Z(S.Reflect,"defineProperty",wn.defineProperty)}}if(S.Reflect.construct){if(!a(function(){var e=function F(){};return S.Reflect.construct(function(){},[],e)instanceof e})){Z(S.Reflect,"construct",wn.construct)}}if(String(new Date(NaN))!=="Invalid Date"){var Mn=Date.prototype.toString;var xn=function toString(){var e=+this;if(e!==e){return"Invalid Date"}return re.Call(Mn,this)};Z(Date.prototype,"toString",xn)}var Nn={anchor:function anchor(e){return re.CreateHTML(this,"a","name",e)},big:function big(){return re.CreateHTML(this,"big","","")},blink:function blink(){return re.CreateHTML(this,"blink","","")},bold:function bold(){return re.CreateHTML(this,"b","","")},fixed:function fixed(){return re.CreateHTML(this,"tt","","")},fontcolor:function fontcolor(e){return re.CreateHTML(this,"font","color",e)},fontsize:function fontsize(e){return re.CreateHTML(this,"font","size",e)},italics:function italics(){return re.CreateHTML(this,"i","","")},link:function link(e){return re.CreateHTML(this,"a","href",e)},small:function small(){return re.CreateHTML(this,"small","","")},strike:function strike(){return re.CreateHTML(this,"strike","","")},sub:function sub(){return re.CreateHTML(this,"sub","","")},sup:function sub(){return re.CreateHTML(this,"sup","","")}};l(Object.keys(Nn),function(e){var r=String.prototype[e];var n=false;if(re.IsCallable(r)){var o=t(r,"",' " ');var i=P([],o.match(/"/g)).length;n=o!==o.toLowerCase()||i>2}else{n=true}if(n){Z(String.prototype,e,Nn[e])}});var An=function(){if(!Y){return false}var e=typeof JSON==="object"&&typeof JSON.stringify==="function"?JSON.stringify:null;if(!e){return false}if(typeof e(G())!=="undefined"){return true}if(e([G()])!=="[null]"){return true}var t={a:G()};t[G()]=true;if(e(t)!=="{}"){return true}return false}();var Rn=a(function(){if(!Y){return true}return JSON.stringify(Object(G()))==="{}"&&JSON.stringify([Object(G())])==="[{}]"});if(An||!Rn){var _n=JSON.stringify;Z(JSON,"stringify",function stringify(e){if(typeof e==="symbol"){return}var n;if(arguments.length>1){n=arguments[1]}var o=[e];if(!r(n)){var i=re.IsCallable(n)?n:null;var a=function(e,r){var n=i?t(i,this,e,r):r;if(typeof n!=="symbol"){if(K.symbol(n)){return St({})(n)}else{return n}}};o.push(a)}else{o.push(n)}if(arguments.length>2){o.push(arguments[2])}return _n.apply(this,o)})}return S}); +//# sourceMappingURL=es6-shim.map diff --git a/docs/js/libs/htmlparser.js b/docs/js/libs/htmlparser.js new file mode 100644 index 0000000..42fcba7 --- /dev/null +++ b/docs/js/libs/htmlparser.js @@ -0,0 +1,1002 @@ +/*********************************************** +Copyright 2010 - 2012 Chris Winberry . All rights reserved. +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. +***********************************************/ +/* v2.0.0 */ + +(function () { + +var exports; +if (typeof(module) !== 'undefined' && typeof(module.exports) !== 'undefined') { + exports = module.exports; +} else { + exports = {}; + if (!this.Tautologistics) { + this.Tautologistics = {}; + } + if (this.Tautologistics.NodeHtmlParser) { + return; + } + this.Tautologistics.NodeHtmlParser = exports; +} + +function inherits (ctor, superCtor) { + var tempCtor = function(){}; + tempCtor.prototype = superCtor.prototype; + ctor.super_ = superCtor; + ctor.prototype = new tempCtor(); + ctor.prototype.constructor = ctor; +} + +var Mode = { + Text: 'text', + Tag: 'tag', + Attr: 'attr', + CData: 'cdata', + Doctype: 'doctype', + Comment: 'comment' +}; + +function Parser (builder, options) { + this._options = options ? options : { }; + // if (this._options.includeLocation === undefined) { + // this._options.includeLocation = false; //Include position of element (row, col) on nodes + // } + this._validateBuilder(builder); + var self = this; + this._builder = builder; + this.reset(); +} + +if (typeof(module) !== 'undefined' && typeof(module.exports) !== 'undefined') { + + var Stream = require('stream'); + inherits(Parser, Stream); + + Parser.prototype.writable = true; + Parser.prototype.write = function(data) { + if(data instanceof Buffer) { + data = data.toString(); + } + this.parseChunk(data); + }; + + Parser.prototype.end = function(data) { + if (arguments.length) { + this.write(data); + } + this.writable = false; + this.done(); + }; + + Parser.prototype.destroy = function() { + this.writable = false; + }; + +} + + //**Public**// + Parser.prototype.reset = function Parser$reset () { + this._state = { + mode: Mode.Text, + pos: 0, + data: null, + pendingText: null, + pendingWrite: null, + lastTag: null, + isScript: false, + needData: false, + output: [], + done: false//, + // line: 1, + // col: 1 + }; + this._builder.reset(); + }; + + Parser.prototype.parseChunk = function Parser$parseChunk (chunk) { + this._state.needData = false; + this._state.data = (this._state.data !== null) ? + this._state.data.substr(this.pos) + chunk + : + chunk + ; + while (this._state.pos < this._state.data.length && !this._state.needData) { + this._parse(this._state); + } + }; + + Parser.prototype.parseComplete = function Parser$parseComplete (data) { + this.reset(); + this.parseChunk(data); + this.done(); + }; + + Parser.prototype.done = function Parser$done () { + this._state.done = true; + this._parse(this._state); + this._flushWrite(); + this._builder.done(); + }; + + //**Private**// + Parser.prototype._validateBuilder = function Parser$_validateBuilder (builder) { + if ((typeof builder) != "object") { + throw new Error("Builder is not an object"); + } + if ((typeof builder.reset) != "function") { + throw new Error("Builder method 'reset' is invalid"); + } + if ((typeof builder.done) != "function") { + throw new Error("Builder method 'done' is invalid"); + } + if ((typeof builder.write) != "function") { + throw new Error("Builder method 'write' is invalid"); + } + if ((typeof builder.error) != "function") { + throw new Error("Builder method 'error' is invalid"); + } + }; + + Parser.prototype._parse = function Parser$_parse () { + switch (this._state.mode) { + case Mode.Text: + return this._parseText(this._state); + case Mode.Tag: + return this._parseTag(this._state); + case Mode.Attr: + return this._parseAttr(this._state); + case Mode.CData: + return this._parseCData(this._state); + case Mode.Doctype: + return this._parseDoctype(this._state); + case Mode.Comment: + return this._parseComment(this._state); + } + }; + + Parser.prototype._writePending = function Parser$_writePending (node) { + if (!this._state.pendingWrite) { + this._state.pendingWrite = []; + } + this._state.pendingWrite.push(node); + }; + + Parser.prototype._flushWrite = function Parser$_flushWrite () { + if (this._state.pendingWrite) { + for (var i = 0, len = this._state.pendingWrite.length; i < len; i++) { + var node = this._state.pendingWrite[i]; + this._builder.write(node); + } + this._state.pendingWrite = null; + } + }; + + Parser.prototype._write = function Parser$_write (node) { + this._flushWrite(); + this._builder.write(node); + }; + + Parser._re_parseText_scriptClose = /<\s*\/\s*script/ig; + Parser.prototype._parseText = function Parser$_parseText () { + var state = this._state; + var foundPos; + if (state.isScript) { + Parser._re_parseText_scriptClose.lastIndex = state.pos; + foundPos = Parser._re_parseText_scriptClose.exec(state.data); + foundPos = (foundPos) ? + foundPos.index + : + -1 + ; + } else { + foundPos = state.data.indexOf('<', state.pos); + } + var text = (foundPos === -1) ? state.data.substring(state.pos, state.data.length) : state.data.substring(state.pos, foundPos); + if (foundPos < 0 && state.done) { + foundPos = state.data.length; + } + if (foundPos < 0) { + if (state.isScript) { + state.needData = true; + return; + } + if (!state.pendingText) { + state.pendingText = []; + } + state.pendingText.push(state.data.substring(state.pos, state.data.length)); + state.pos = state.data.length; + } else { + if (state.pendingText) { + state.pendingText.push(state.data.substring(state.pos, foundPos)); + text = state.pendingText.join(''); + state.pendingText = null; + } else { + text = state.data.substring(state.pos, foundPos); + } + if (text !== '') { + this._write({ type: Mode.Text, data: text }); + } + state.pos = foundPos + 1; + state.mode = Mode.Tag; + } + }; + + Parser.re_parseTag = /\s*(\/?)\s*([^\s>\/]+)(\s*)\??(>?)/g; + Parser.prototype._parseTag = function Parser$_parseTag () { + var state = this._state; + Parser.re_parseTag.lastIndex = state.pos; + var match = Parser.re_parseTag.exec(state.data); + if (match) { + if (!match[1] && match[2].substr(0, 3) === '!--') { + state.mode = Mode.Comment; + state.pos += 3; + return; + } + if (!match[1] && match[2].substr(0, 8) === '![CDATA[') { + state.mode = Mode.CData; + state.pos += 8; + return; + } + if (!match[1] && match[2].substr(0, 8) === '!DOCTYPE') { + state.mode = Mode.Doctype; + state.pos += 8; + return; + } + if (!state.done && (state.pos + match[0].length) === state.data.length) { + //We're at the and of the data, might be incomplete + state.needData = true; + return; + } + var raw; + if (match[4] === '>') { + state.mode = Mode.Text; + raw = match[0].substr(0, match[0].length - 1); + } else { + state.mode = Mode.Attr; + raw = match[0]; + } + state.pos += match[0].length; + var tag = { type: Mode.Tag, name: match[1] + match[2], raw: raw }; + if (state.mode === Mode.Attr) { + state.lastTag = tag; + } + if (tag.name.toLowerCase() === 'script') { + state.isScript = true; + } else if (tag.name.toLowerCase() === '/script') { + state.isScript = false; + } + if (state.mode === Mode.Attr) { + this._writePending(tag); + } else { + this._write(tag); + } + } else { + //TODO: end of tag? + //TODO: push to pending? + state.needData = true; + } + }; + + Parser.re_parseAttr_findName = /\s*([^=<>\s'"\/]+)\s*/g; + Parser.prototype._parseAttr_findName = function Parser$_parseAttr_findName () { + Parser.re_parseAttr_findName.lastIndex = this._state.pos; + var match = Parser.re_parseAttr_findName.exec(this._state.data); + if (!match) { + return null; + } + if (this._state.pos + match[0].length !== Parser.re_parseAttr_findName.lastIndex) { + return null; + } + return { + match: match[0] + , name: match[1] + }; + }; + Parser.re_parseAttr_findValue = /\s*=\s*(?:'([^']*)'|"([^"]*)"|([^'"\s\/>]+))\s*/g; + Parser.re_parseAttr_findValue_last = /\s*=\s*['"]?(.*)$/g; + Parser.prototype._parseAttr_findValue = function Parser$_parseAttr_findValue () { + var state = this._state; + Parser.re_parseAttr_findValue.lastIndex = state.pos; + var match = Parser.re_parseAttr_findValue.exec(state.data); + if (!match) { + if (!state.done) { + return null; + } + Parser.re_parseAttr_findValue_last.lastIndex = state.pos; + match = Parser.re_parseAttr_findValue_last.exec(state.data); + if (!match) { + return null; + } + return { + match: match[0] + , value: (match[1] !== '') ? match[1] : null + }; + } + if (state.pos + match[0].length !== Parser.re_parseAttr_findValue.lastIndex) { + return null; + } + return { + match: match[0] + , value: match[1] || match[2] || match[3] + }; + }; + Parser.re_parseAttr_splitValue = /\s*=\s*['"]?/g; + Parser.re_parseAttr_selfClose = /(\s*\/\s*)(>?)/g; + Parser.prototype._parseAttr = function Parser$_parseAttr () { + var state = this._state; + var name_data = this._parseAttr_findName(state); + if (!name_data || name_data.name === '?') { + Parser.re_parseAttr_selfClose.lastIndex = state.pos; + var matchTrailingSlash = Parser.re_parseAttr_selfClose.exec(state.data); + if (matchTrailingSlash && matchTrailingSlash.index === state.pos) { + if (!state.done && !matchTrailingSlash[2] && state.pos + matchTrailingSlash[0].length === state.data.length) { + state.needData = true; + return; + } + state.lastTag.raw += matchTrailingSlash[1]; + // state.output.push({ type: Mode.Tag, name: '/' + state.lastTag.name, raw: null }); + this._write({ type: Mode.Tag, name: '/' + state.lastTag.name, raw: null }); + state.pos += matchTrailingSlash[1].length; + } + var foundPos = state.data.indexOf('>', state.pos); + if (foundPos < 0) { + if (state.done) { //TODO: is this needed? + state.lastTag.raw += state.data.substr(state.pos); + state.pos = state.data.length; + return; + } + state.needData = true; + } else { + // state.lastTag = null; + state.pos = foundPos + 1; + state.mode = Mode.Text; + } + return; + } + if (!state.done && state.pos + name_data.match.length === state.data.length) { + state.needData = true; + return null; + } + state.pos += name_data.match.length; + var value_data = this._parseAttr_findValue(state); + var end = state.data.indexOf(' ', state.pos); + if (value_data) { + if (!state.done && state.pos + value_data.match.length === state.data.length) { + state.needData = true; + state.pos -= name_data.match.length; + return; + } + state.pos += value_data.match.length; + } else { + if (state.data.indexOf(' ', state.pos-1)) { + value_data = { + match: '' + , value: name_data.name + }; + + } else { + Parser.re_parseAttr_splitValue.lastIndex = state.pos; + if (Parser.re_parseAttr_splitValue.exec(state.data)) { + state.needData = true; + state.pos -= name_data.match.length; + return; + } + value_data = { + match: '' + , value: null + }; + } + } + state.lastTag.raw += name_data.match + value_data.match; + + this._writePending({ type: Mode.Attr, name: name_data.name, data: value_data.value }); + }; + + Parser.re_parseCData_findEnding = /\]{1,2}$/; + Parser.prototype._parseCData = function Parser$_parseCData () { + var state = this._state; + var foundPos = state.data.indexOf(']]>', state.pos); + if (foundPos < 0 && state.done) { + foundPos = state.data.length; + } + if (foundPos < 0) { + Parser.re_parseCData_findEnding.lastIndex = state.pos; + var matchPartialCDataEnd = Parser.re_parseCData_findEnding.exec(state.data); + if (matchPartialCDataEnd) { + state.needData = true; + return; + } + if (!state.pendingText) { + state.pendingText = []; + } + state.pendingText.push(state.data.substr(state.pos, state.data.length)); + state.pos = state.data.length; + state.needData = true; + } else { + var text; + if (state.pendingText) { + state.pendingText.push(state.data.substring(state.pos, foundPos)); + text = state.pendingText.join(''); + state.pendingText = null; + } else { + text = state.data.substring(state.pos, foundPos); + } + this._write({ type: Mode.CData, data: text }); + state.mode = Mode.Text; + state.pos = foundPos + 3; + } + }; + + Parser.prototype._parseDoctype = function Parser$_parseDoctype () { + var state = this._state; + var foundPos = state.data.indexOf('>', state.pos); + if (foundPos < 0 && state.done) { + foundPos = state.data.length; + } + if (foundPos < 0) { + Parser.re_parseCData_findEnding.lastIndex = state.pos; + if (!state.pendingText) { + state.pendingText = []; + } + state.pendingText.push(state.data.substr(state.pos, state.data.length)); + state.pos = state.data.length; + state.needData = true; + } else { + var text; + if (state.pendingText) { + state.pendingText.push(state.data.substring(state.pos, foundPos)); + text = state.pendingText.join(''); + state.pendingText = null; + } else { + text = state.data.substring(state.pos, foundPos); + } + this._write({ type: Mode.Doctype, data: text }); + state.mode = Mode.Text; + state.pos = foundPos + 1; + } + }; + + Parser.re_parseComment_findEnding = /\-{1,2}$/; + Parser.prototype._parseComment = function Parser$_parseComment () { + var state = this._state; + var foundPos = state.data.indexOf('-->', state.pos); + if (foundPos < 0 && state.done) { + foundPos = state.data.length; + } + if (foundPos < 0) { + Parser.re_parseComment_findEnding.lastIndex = state.pos; + var matchPartialCommentEnd = Parser.re_parseComment_findEnding.exec(state.data); + if (matchPartialCommentEnd) { + state.needData = true; + return; + } + if (!state.pendingText) { + state.pendingText = []; + } + state.pendingText.push(state.data.substr(state.pos, state.data.length)); + state.pos = state.data.length; + state.needData = true; + } else { + var text; + if (state.pendingText) { + state.pendingText.push(state.data.substring(state.pos, foundPos)); + text = state.pendingText.join(''); + state.pendingText = null; + } else { + text = state.data.substring(state.pos, foundPos); + } + // state.output.push({ type: Mode.Comment, data: text }); + this._write({ type: Mode.Comment, data: text }); + state.mode = Mode.Text; + state.pos = foundPos + 3; + } + }; + + +function HtmlBuilder (callback, options) { + this.reset(); + this._options = options ? options : { }; + if (this._options.ignoreWhitespace === undefined) { + this._options.ignoreWhitespace = false; //Keep whitespace-only text nodes + } + if (this._options.includeLocation === undefined) { + this._options.includeLocation = false; //Include position of element (row, col) on nodes + } + if (this._options.verbose === undefined) { + this._options.verbose = true; //Keep data property for tags and raw property for all + } + if (this._options.enforceEmptyTags === undefined) { + this._options.enforceEmptyTags = true; //Don't allow children for HTML tags defined as empty in spec + } + if (this._options.caseSensitiveTags === undefined) { + this._options.caseSensitiveTags = false; //Lowercase all tag names + } + if (this._options.caseSensitiveAttr === undefined) { + this._options.caseSensitiveAttr = false; //Lowercase all attribute names + } + if ((typeof callback) == "function") { + this._callback = callback; + } +} + + //**"Static"**// + //HTML Tags that shouldn't contain child nodes + HtmlBuilder._emptyTags = { + area: 1 + , base: 1 + , basefont: 1 + , br: 1 + , col: 1 + , frame: 1 + , hr: 1 + , img: 1 + , input: 1 + , isindex: 1 + , link: 1 + , meta: 1 + , param: 1 + , embed: 1 + , '?xml': 1 + }; + //Regex to detect whitespace only text nodes + HtmlBuilder.reWhitespace = /^\s*$/; + + //**Public**// + //Properties// + HtmlBuilder.prototype.dom = null; //The hierarchical object containing the parsed HTML + //Methods// + //Resets the builder back to starting state + HtmlBuilder.prototype.reset = function HtmlBuilder$reset() { + this.dom = []; + // this._raw = []; + this._done = false; + this._tagStack = []; + this._lastTag = null; + this._tagStack.last = function HtmlBuilder$_tagStack$last () { + return(this.length ? this[this.length - 1] : null); + }; + this._line = 1; + this._col = 1; + }; + //Signals the builder that parsing is done + HtmlBuilder.prototype.done = function HtmlBuilder$done () { + this._done = true; + this.handleCallback(null); + }; + + HtmlBuilder.prototype.error = function HtmlBuilder$error (error) { + this.handleCallback(error); + }; + + HtmlBuilder.prototype.handleCallback = function HtmlBuilder$handleCallback (error) { + if ((typeof this._callback) != "function") { + if (error) { + throw error; + } else { + return; + } + } + this._callback(error, this.dom); + }; + + HtmlBuilder.prototype.isEmptyTag = function HtmlBuilder$isEmptyTag (element) { + var name = element.name.toLowerCase(); + if (name.charAt(0) == '?') { + return true; + } + if (name.charAt(0) == '/') { + name = name.substring(1); + } + return this._options.enforceEmptyTags && !!HtmlBuilder._emptyTags[name]; + }; + + HtmlBuilder.prototype._getLocation = function HtmlBuilder$_getLocation () { + return { line: this._line, col: this._col }; + }; + + // HtmlBuilder.reLineSplit = /(\r\n|\r|\n)/g; + HtmlBuilder.prototype._updateLocation = function HtmlBuilder$_updateLocation (node) { + var positionData = (node.type === Mode.Tag) ? node.raw : node.data; + if (positionData === null) { + return; + } + // var lines = positionData.split(HtmlBuilder.reLineSplit); + var lines = positionData.split("\n"); + this._line += lines.length - 1; + if (lines.length > 1) { + this._col = 1; + } + this._col += lines[lines.length - 1].length; + if (node.type === Mode.Tag) { + this._col += 2; + } else if (node.type === Mode.Comment) { + this._col += 7; + } else if (node.type === Mode.CData) { + this._col += 12; + } + }; + + HtmlBuilder.prototype._copyElement = function HtmlBuilder$_copyElement (element) { + var newElement = { type: element.type }; + + if (this._options.verbose && element['raw'] !== undefined) { + newElement.raw = element.raw; + } + if (element['name'] !== undefined) { + switch (element.type) { + + case Mode.Tag: + newElement.name = this._options.caseSensitiveTags ? + element.name + : + element.name.toLowerCase() + ; + break; + + case Mode.Attr: + newElement.name = this._options.caseSensitiveAttr ? + element.name + : + element.name.toLowerCase() + ; + break; + + default: + newElement.name = this._options.caseSensitiveTags ? + element.name + : + element.name.toLowerCase() + ; + break; + + } + } + if (element['data'] !== undefined) { + newElement.data = element.data; + } + if (element.location) { + newElement.location = { line: element.location.line, col: element.location.col }; + } + + return newElement; + }; + + HtmlBuilder.prototype.write = function HtmlBuilder$write (element) { + // this._raw.push(element); + if (this._done) { + this.handleCallback(new Error("Writing to the builder after done() called is not allowed without a reset()")); + } + if (this._options.includeLocation) { + if (element.type !== Mode.Attr) { + element.location = this._getLocation(); + this._updateLocation(element); + } + } + if (element.type === Mode.Text && this._options.ignoreWhitespace) { + if (HtmlBuilder.reWhitespace.test(element.data)) { + return; + } + } + var parent; + var node; + if (!this._tagStack.last()) { //There are no parent elements + //If the element can be a container, add it to the tag stack and the top level list + if (element.type === Mode.Tag) { + if (element.name.charAt(0) != "/") { //Ignore closing tags that obviously don't have an opening tag + node = this._copyElement(element); + this.dom.push(node); + if (!this.isEmptyTag(node)) { //Don't add tags to the tag stack that can't have children + this._tagStack.push(node); + } + this._lastTag = node; + } + } else if (element.type === Mode.Attr && this._lastTag) { + if (!this._lastTag.attributes) { + this._lastTag.attributes = {}; + } + this._lastTag.attributes[this._options.caseSensitiveAttr ? element.name : element.name.toLowerCase()] = + element.data; + } else { //Otherwise just add to the top level list + this.dom.push(this._copyElement(element)); + } + } else { //There are parent elements + //If the element can be a container, add it as a child of the element + //on top of the tag stack and then add it to the tag stack + if (element.type === Mode.Tag) { + if (element.name.charAt(0) == "/") { + //This is a closing tag, scan the tagStack to find the matching opening tag + //and pop the stack up to the opening tag's parent + var baseName = this._options.caseSensitiveTags ? + element.name.substring(1) + : + element.name.substring(1).toLowerCase() + ; + if (!this.isEmptyTag(element)) { + var pos = this._tagStack.length - 1; + while (pos > -1 && this._tagStack[pos--].name != baseName) { } + if (pos > -1 || this._tagStack[0].name == baseName) { + while (pos < this._tagStack.length - 1) { + this._tagStack.pop(); + } + } + } + } + else { //This is not a closing tag + parent = this._tagStack.last(); + if (element.type === Mode.Attr) { + if (!parent.attributes) { + parent.attributes = {}; + } + parent.attributes[this._options.caseSensitiveAttr ? element.name : element.name.toLowerCase()] = + element.data; + } else { + node = this._copyElement(element); + if (!parent.children) { + parent.children = []; + } + parent.children.push(node); + if (!this.isEmptyTag(node)) { //Don't add tags to the tag stack that can't have children + this._tagStack.push(node); + } + if (element.type === Mode.Tag) { + this._lastTag = node; + } + } + } + } + else { //This is not a container element + parent = this._tagStack.last(); + if (element.type === Mode.Attr) { + if (!parent.attributes) { + parent.attributes = {}; + } + parent.attributes[this._options.caseSensitiveAttr ? element.name : element.name.toLowerCase()] = + element.data; + } else { + if (!parent.children) { + parent.children = []; + } + parent.children.push(this._copyElement(element)); + } + } + } + }; + + + //**Private**// + //Properties// + HtmlBuilder.prototype._options = null; //Builder options for how to behave + HtmlBuilder.prototype._callback = null; //Callback to respond to when parsing done + HtmlBuilder.prototype._done = false; //Flag indicating whether builder has been notified of parsing completed + HtmlBuilder.prototype._tagStack = null; //List of parents to the currently element being processed + //Methods// + + +function RssBuilder (callback) { + RssBuilder.super_.call(this, callback, { ignoreWhitespace: true, verbose: false, enforceEmptyTags: false, caseSensitiveTags: true }); +} +inherits(RssBuilder, HtmlBuilder); + + RssBuilder.prototype.done = function RssBuilder$done () { + var feed = {}; + var feedRoot; + + var found = DomUtils.getElementsByTagName(function (value) { return(value == "rss" || value == "feed"); }, this.dom, false); + if (found.length) { + feedRoot = found[0]; + } + if (feedRoot) { + if (feedRoot.name == "rss") { + feed.type = "rss"; + feedRoot = feedRoot.children[0]; // + feed.id = ""; + try { + feed.title = DomUtils.getElementsByTagName("title", feedRoot.children, false)[0].children[0].data; + } catch (ex) { } + try { + feed.link = DomUtils.getElementsByTagName("link", feedRoot.children, false)[0].children[0].data; + } catch (ex) { } + try { + feed.description = DomUtils.getElementsByTagName("description", feedRoot.children, false)[0].children[0].data; + } catch (ex) { } + try { + feed.updated = new Date(DomUtils.getElementsByTagName("lastBuildDate", feedRoot.children, false)[0].children[0].data); + } catch (ex) { } + try { + feed.author = DomUtils.getElementsByTagName("managingEditor", feedRoot.children, false)[0].children[0].data; + } catch (ex) { } + feed.items = []; + DomUtils.getElementsByTagName("item", feedRoot.children).forEach(function (item, index, list) { + var entry = {}; + try { + entry.id = DomUtils.getElementsByTagName("guid", item.children, false)[0].children[0].data; + } catch (ex) { } + try { + entry.title = DomUtils.getElementsByTagName("title", item.children, false)[0].children[0].data; + } catch (ex) { } + try { + entry.link = DomUtils.getElementsByTagName("link", item.children, false)[0].children[0].data; + } catch (ex) { } + try { + entry.description = DomUtils.getElementsByTagName("description", item.children, false)[0].children[0].data; + } catch (ex) { } + try { + entry.pubDate = new Date(DomUtils.getElementsByTagName("pubDate", item.children, false)[0].children[0].data); + } catch (ex) { } + feed.items.push(entry); + }); + } else { + feed.type = "atom"; + try { + feed.id = DomUtils.getElementsByTagName("id", feedRoot.children, false)[0].children[0].data; + } catch (ex) { } + try { + feed.title = DomUtils.getElementsByTagName("title", feedRoot.children, false)[0].children[0].data; + } catch (ex) { } + try { + feed.link = DomUtils.getElementsByTagName("link", feedRoot.children, false)[0].attributes.href; + } catch (ex) { } + try { + feed.description = DomUtils.getElementsByTagName("subtitle", feedRoot.children, false)[0].children[0].data; + } catch (ex) { } + try { + feed.updated = new Date(DomUtils.getElementsByTagName("updated", feedRoot.children, false)[0].children[0].data); + } catch (ex) { } + try { + feed.author = DomUtils.getElementsByTagName("email", feedRoot.children, true)[0].children[0].data; + } catch (ex) { } + feed.items = []; + DomUtils.getElementsByTagName("entry", feedRoot.children).forEach(function (item, index, list) { + var entry = {}; + try { + entry.id = DomUtils.getElementsByTagName("id", item.children, false)[0].children[0].data; + } catch (ex) { } + try { + entry.title = DomUtils.getElementsByTagName("title", item.children, false)[0].children[0].data; + } catch (ex) { } + try { + entry.link = DomUtils.getElementsByTagName("link", item.children, false)[0].attributes.href; + } catch (ex) { } + try { + entry.description = DomUtils.getElementsByTagName("summary", item.children, false)[0].children[0].data; + } catch (ex) { } + try { + entry.pubDate = new Date(DomUtils.getElementsByTagName("updated", item.children, false)[0].children[0].data); + } catch (ex) { } + feed.items.push(entry); + }); + } + + this.dom = feed; + } + RssBuilder.super_.prototype.done.call(this); + }; + + var DomUtils = { + testElement: function DomUtils$testElement (options, element) { + if (!element) { + return false; + } + + for (var key in options) { + if (!options.hasOwnProperty(key)) { + continue; + } + if (key == "tag_name") { + if (element.type !== Mode.Tag) { + return false; + } + if (!options["tag_name"](element.name)) { + return false; + } + } else if (key == "tag_type") { + if (!options["tag_type"](element.type)) { + return false; + } + } else if (key == "tag_contains") { + if (element.type !== Mode.Text && element.type !== Mode.Comment && element.type !== Mode.CData) { + return false; + } + if (!options["tag_contains"](element.data)) { + return false; + } + } else { + if (!element.attributes || !options[key](element.attributes[key])) { + return false; + } + } + } + + return true; + } + + , getElements: function DomUtils$getElements (options, currentElement, recurse, limit) { + recurse = (recurse === undefined || recurse === null) || !!recurse; + limit = isNaN(parseInt(limit)) ? -1 : parseInt(limit); + + if (!currentElement) { + return([]); + } + + var found = []; + var elementList; + + function getTest (checkVal) { + return function (value) { + return(value == checkVal); + }; + } + for (var key in options) { + if ((typeof options[key]) != "function") { + options[key] = getTest(options[key]); + } + } + + if (DomUtils.testElement(options, currentElement)) { + found.push(currentElement); + } + + if (limit >= 0 && found.length >= limit) { + return(found); + } + + if (recurse && currentElement.children) { + elementList = currentElement.children; + } else if (currentElement instanceof Array) { + elementList = currentElement; + } else { + return(found); + } + + for (var i = 0; i < elementList.length; i++) { + found = found.concat(DomUtils.getElements(options, elementList[i], recurse, limit)); + if (limit >= 0 && found.length >= limit) { + break; + } + } + + return(found); + } + + , getElementById: function DomUtils$getElementById (id, currentElement, recurse) { + var result = DomUtils.getElements({ id: id }, currentElement, recurse, 1); + return(result.length ? result[0] : null); + } + + , getElementsByTagName: function DomUtils$getElementsByTagName (name, currentElement, recurse, limit) { + return(DomUtils.getElements({ tag_name: name }, currentElement, recurse, limit)); + } + + , getElementsByTagType: function DomUtils$getElementsByTagType (type, currentElement, recurse, limit) { + return(DomUtils.getElements({ tag_type: type }, currentElement, recurse, limit)); + } + }; + +exports.Parser = Parser; + +exports.HtmlBuilder = HtmlBuilder; + +exports.RssBuilder = RssBuilder; + +exports.ElementType = Mode; + +exports.DomUtils = DomUtils; + +})(); diff --git a/docs/js/libs/prism.js b/docs/js/libs/prism.js new file mode 100644 index 0000000..a78ca99 --- /dev/null +++ b/docs/js/libs/prism.js @@ -0,0 +1,11 @@ +/* http://prismjs.com/download.html?themes=prism-okaidia&languages=markup+css+clike+javascript+json+markdown+typescript&plugins=line-highlight+line-numbers */ +var _self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},Prism=function(){var e=/\blang(?:uage)?-(\w+)\b/i,t=0,n=_self.Prism={manual:_self.Prism&&_self.Prism.manual,util:{encode:function(e){return e instanceof a?new a(e.type,n.util.encode(e.content),e.alias):"Array"===n.util.type(e)?e.map(n.util.encode):e.replace(/&/g,"&").replace(/e.length)break e;if(!(v instanceof a)){u.lastIndex=0;var b=u.exec(v),k=1;if(!b&&h&&m!=r.length-1){if(u.lastIndex=y,b=u.exec(e),!b)break;for(var w=b.index+(c?b[1].length:0),_=b.index+b[0].length,P=m,A=y,j=r.length;j>P&&_>A;++P)A+=r[P].length,w>=A&&(++m,y=A);if(r[m]instanceof a||r[P-1].greedy)continue;k=P-m,v=e.slice(y,A),b.index-=y}if(b){c&&(f=b[1].length);var w=b.index+f,b=b[0].slice(f),_=w+b.length,x=v.slice(0,w),O=v.slice(_),S=[m,k];x&&S.push(x);var N=new a(i,g?n.tokenize(b,g):b,d,b,h);S.push(N),O&&S.push(O),Array.prototype.splice.apply(r,S)}}}}}return r},hooks:{all:{},add:function(e,t){var a=n.hooks.all;a[e]=a[e]||[],a[e].push(t)},run:function(e,t){var a=n.hooks.all[e];if(a&&a.length)for(var r,l=0;r=a[l++];)r(t)}}},a=n.Token=function(e,t,n,a,r){this.type=e,this.content=t,this.alias=n,this.length=0|(a||"").length,this.greedy=!!r};if(a.stringify=function(e,t,r){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(n){return a.stringify(n,t,e)}).join("");var l={type:e.type,content:a.stringify(e.content,t,r),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:r};if("comment"==l.type&&(l.attributes.spellcheck="true"),e.alias){var i="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(l.classes,i)}n.hooks.run("wrap",l);var o=Object.keys(l.attributes).map(function(e){return e+'="'+(l.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+l.tag+' class="'+l.classes.join(" ")+'"'+(o?" "+o:"")+">"+l.content+""},!_self.document)return _self.addEventListener?(_self.addEventListener("message",function(e){var t=JSON.parse(e.data),a=t.language,r=t.code,l=t.immediateClose;_self.postMessage(n.highlight(r,n.languages[a],a)),l&&_self.close()},!1),_self.Prism):_self.Prism;var r=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return r&&(n.filename=r.src,!document.addEventListener||n.manual||r.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),_self.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=Prism),"undefined"!=typeof global&&(global.Prism=Prism); +Prism.languages.markup={comment://,prolog:/<\?[\w\W]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\\1|\\?(?!\1)[\w\W])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:('|")[\w\W]*?(\1)|[^\s>]+)/i,inside:{punctuation:/[=>"']/}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},Prism.hooks.add("wrap",function(a){"entity"===a.type&&(a.attributes.title=a.content.replace(/&/,"&"))}),Prism.languages.xml=Prism.languages.markup,Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup; +Prism.languages.css={comment:/\/\*[\w\W]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^\{\}\s][^\{\};]*?(?=\s*\{)/,string:{pattern:/("|')(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/(\b|\B)[\w-]+(?=\s*:)/i,important:/\B!important\b/i,"function":/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},Prism.languages.css.atrule.inside.rest=Prism.util.clone(Prism.languages.css),Prism.languages.markup&&(Prism.languages.insertBefore("markup","tag",{style:{pattern:/()[\w\W]*?(?=<\/style>)/i,lookbehind:!0,inside:Prism.languages.css,alias:"language-css"}}),Prism.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|').*?\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:Prism.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:Prism.languages.css}},alias:"language-css"}},Prism.languages.markup.tag)); +Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\w\W]*?\*\//,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0}],string:{pattern:/(["'])(\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[a-z0-9_\.\\]+/i,lookbehind:!0,inside:{punctuation:/(\.|\\)/}},keyword:/\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,"boolean":/\b(true|false)\b/,"function":/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/}; +Prism.languages.javascript=Prism.languages.extend("clike",{keyword:/\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\b/,number:/\b-?(0x[\dA-Fa-f]+|0b[01]+|0o[0-7]+|\d*\.?\d+([Ee][+-]?\d+)?|NaN|Infinity)\b/,"function":/[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*(?=\()/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*\*?|\/|~|\^|%|\.{3}/}),Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^\/])\/(?!\/)(\[.+?]|\\.|[^\/\\\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0}}),Prism.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\\\|\\?[^\\])*?`/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}}}),Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{script:{pattern:/()[\w\W]*?(?=<\/script>)/i,lookbehind:!0,inside:Prism.languages.javascript,alias:"language-javascript"}}),Prism.languages.js=Prism.languages.javascript; +Prism.languages.json={property:/"(?:\\.|[^\\"])*"(?=\s*:)/gi,string:/"(?!:)(?:\\.|[^\\"])*"(?!:)/g,number:/\b-?(0x[\dA-Fa-f]+|\d*\.?\d+([Ee][+-]?\d+)?)\b/g,punctuation:/[{}[\]);,]/g,operator:/:/g,"boolean":/\b(true|false)\b/gi,"null":/\bnull\b/gi},Prism.languages.jsonp=Prism.languages.json; +Prism.languages.markdown=Prism.languages.extend("markup",{}),Prism.languages.insertBefore("markdown","prolog",{blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},code:[{pattern:/^(?: {4}|\t).+/m,alias:"keyword"},{pattern:/``.+?``|`[^`\n]+`/,alias:"keyword"}],title:[{pattern:/\w+.*(?:\r?\n|\r)(?:==+|--+)/,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#+.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])([\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:/(^|[^\\])(\*\*|__)(?:(?:\r?\n|\r)(?!\r?\n|\r)|.)+?\2/,lookbehind:!0,inside:{punctuation:/^\*\*|^__|\*\*$|__$/}},italic:{pattern:/(^|[^\\])([*_])(?:(?:\r?\n|\r)(?!\r?\n|\r)|.)+?\2/,lookbehind:!0,inside:{punctuation:/^[*_]|[*_]$/}},url:{pattern:/!?\[[^\]]+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)| ?\[[^\]\n]*\])/,inside:{variable:{pattern:/(!?\[)[^\]]+(?=\]$)/,lookbehind:!0},string:{pattern:/"(?:\\.|[^"\\])*"(?=\)$)/}}}}),Prism.languages.markdown.bold.inside.url=Prism.util.clone(Prism.languages.markdown.url),Prism.languages.markdown.italic.inside.url=Prism.util.clone(Prism.languages.markdown.url),Prism.languages.markdown.bold.inside.italic=Prism.util.clone(Prism.languages.markdown.italic),Prism.languages.markdown.italic.inside.bold=Prism.util.clone(Prism.languages.markdown.bold); +Prism.languages.typescript=Prism.languages.extend("javascript",{keyword:/\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield|false|true|module|declare|constructor|string|Function|any|number|boolean|Array|enum|symbol|namespace|abstract|require|type)\b/}),Prism.languages.ts=Prism.languages.typescript; +!function(){function e(e,t){return Array.prototype.slice.call((t||document).querySelectorAll(e))}function t(e,t){return t=" "+t+" ",(" "+e.className+" ").replace(/[\n\t]/g," ").indexOf(t)>-1}function n(e,n,i){for(var o,a=n.replace(/\s+/g,"").split(","),d=+e.getAttribute("data-line-offset")||0,l=r()?parseInt:parseFloat,c=l(getComputedStyle(e).lineHeight),s=0;o=a[s++];){o=o.split("-");var u=+o[0],m=+o[1]||u,h=document.createElement("div");h.textContent=Array(m-u+2).join(" \n"),h.setAttribute("aria-hidden","true"),h.className=(i||"")+" line-highlight",t(e,"line-numbers")||(h.setAttribute("data-start",u),m>u&&h.setAttribute("data-end",m)),h.style.top=(u-d-1)*c+"px",t(e,"line-numbers")?e.appendChild(h):(e.querySelector("code")||e).appendChild(h)}}function i(){var t=location.hash.slice(1);e(".temporary.line-highlight").forEach(function(e){e.parentNode.removeChild(e)});var i=(t.match(/\.([\d,-]+)$/)||[,""])[1];if(i&&!document.getElementById(t)){var r=t.slice(0,t.lastIndexOf(".")),o=document.getElementById(r);o&&(o.hasAttribute("data-line")||o.setAttribute("data-line",""),n(o,i,"temporary "),document.querySelector(".temporary.line-highlight").scrollIntoView())}}if("undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector){var r=function(){var e;return function(){if("undefined"==typeof e){var t=document.createElement("div");t.style.fontSize="13px",t.style.lineHeight="1.5",t.style.padding=0,t.style.border=0,t.innerHTML=" 
                                                       ",document.body.appendChild(t),e=38===t.offsetHeight,document.body.removeChild(t)}return e}}(),o=0;Prism.hooks.add("before-sanity-check",function(t){var n=t.element.parentNode,i=n&&n.getAttribute("data-line");if(n&&i&&/pre/i.test(n.nodeName)){var r=0;e(".line-highlight",n).forEach(function(e){r+=e.textContent.length,e.parentNode.removeChild(e)}),r&&/^( \n)+$/.test(t.code.slice(-r))&&(t.code=t.code.slice(0,-r))}}),Prism.hooks.add("complete",function(e){var t=e.element.parentNode,r=t&&t.getAttribute("data-line");t&&r&&/pre/i.test(t.nodeName)&&(clearTimeout(o),n(t,r),o=setTimeout(i,1))}),window.addEventListener&&window.addEventListener("hashchange",i)}}(); +!function(){"undefined"!=typeof self&&self.Prism&&self.document&&Prism.hooks.add("complete",function(e){if(e.code){var t=e.element.parentNode,s=/\s*\bline-numbers\b\s*/;if(t&&/pre/i.test(t.nodeName)&&(s.test(t.className)||s.test(e.element.className))&&!e.element.querySelector(".line-numbers-rows")){s.test(e.element.className)&&(e.element.className=e.element.className.replace(s,"")),s.test(t.className)||(t.className+=" line-numbers");var n,a=e.code.match(/\n(?!$)/g),l=a?a.length+1:1,r=new Array(l+1);r=r.join(""),n=document.createElement("span"),n.setAttribute("aria-hidden","true"),n.className="line-numbers-rows",n.innerHTML=r,t.hasAttribute("data-start")&&(t.style.counterReset="linenumber "+(parseInt(t.getAttribute("data-start"),10)-1)),e.element.appendChild(n)}}})}(); diff --git a/docs/js/libs/promise.min.js b/docs/js/libs/promise.min.js new file mode 100644 index 0000000..59d3fee --- /dev/null +++ b/docs/js/libs/promise.min.js @@ -0,0 +1,6 @@ +/* + * Copyright 2012-2013 (c) Pierre Duquesne + * Licensed under the New BSD License. + * https://github.com/stackp/promisejs + */ +(function(a){function b(){this._callbacks=[];}b.prototype.then=function(a,c){var d;if(this._isdone)d=a.apply(c,this.result);else{d=new b();this._callbacks.push(function(){var b=a.apply(c,arguments);if(b&&typeof b.then==='function')b.then(d.done,d);});}return d;};b.prototype.done=function(){this.result=arguments;this._isdone=true;for(var a=0;a=300)&&j.status!==304);h.done(a,j.responseText,j);}};j.send(k);return h;}function h(a){return function(b,c,d){return g(a,b,c,d);};}var i={Promise:b,join:c,chain:d,ajax:g,get:h('GET'),post:h('POST'),put:h('PUT'),del:h('DELETE'),ENOXHR:1,ETIMEOUT:2,ajaxTimeout:0};if(typeof define==='function'&&define.amd)define(function(){return i;});else a.promise=i;})(this); \ No newline at end of file diff --git a/docs/js/libs/svg-pan-zoom.min.js b/docs/js/libs/svg-pan-zoom.min.js new file mode 100644 index 0000000..7063225 --- /dev/null +++ b/docs/js/libs/svg-pan-zoom.min.js @@ -0,0 +1,3 @@ +// svg-pan-zoom v3.5.0 +// https://github.com/ariutta/svg-pan-zoom +!function t(e,o,n){function i(r,a){if(!o[r]){if(!e[r]){var l="function"==typeof require&&require;if(!a&&l)return l(r,!0);if(s)return s(r,!0);var u=new Error("Cannot find module '"+r+"'");throw u.code="MODULE_NOT_FOUND",u}var h=o[r]={exports:{}};e[r][0].call(h.exports,function(t){var o=e[r][1][t];return i(o?o:t)},h,h.exports,t,e,o,n)}return o[r].exports}for(var s="function"==typeof require&&require,r=0;r=0;n--)this.eventListeners.hasOwnProperty(o[n])&&delete this.eventListeners[o[n]]}for(var i in this.eventListeners)(this.options.eventsListenerElement||this.svg).addEventListener(i,this.eventListeners[i],!1);this.options.mouseWheelZoomEnabled&&(this.options.mouseWheelZoomEnabled=!1,this.enableMouseWheelZoom())},l.prototype.enableMouseWheelZoom=function(){if(!this.options.mouseWheelZoomEnabled){var t=this;this.wheelListener=function(e){return t.handleMouseWheel(e)},n.on(this.options.eventsListenerElement||this.svg,this.wheelListener,!1),this.options.mouseWheelZoomEnabled=!0}},l.prototype.disableMouseWheelZoom=function(){this.options.mouseWheelZoomEnabled&&(n.off(this.options.eventsListenerElement||this.svg,this.wheelListener,!1),this.options.mouseWheelZoomEnabled=!1)},l.prototype.handleMouseWheel=function(t){if(this.options.zoomEnabled&&"none"===this.state){this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1);var e=t.deltaY||1,o=Date.now()-this.lastMouseWheelEventTime,n=3+Math.max(0,30-o);this.lastMouseWheelEventTime=Date.now(),"deltaMode"in t&&0===t.deltaMode&&t.wheelDelta&&(e=0===t.deltaY?0:Math.abs(t.wheelDelta)/t.deltaY),e=e>-.3&&.3>e?e:(e>0?1:-1)*Math.log(Math.abs(e)+10)/n;var i=this.svg.getScreenCTM().inverse(),s=r.getEventPoint(t,this.svg).matrixTransform(i),a=Math.pow(1+this.options.zoomScaleSensitivity,-1*e);this.zoomAtPoint(a,s)}},l.prototype.zoomAtPoint=function(t,e,o){var n=this.viewport.getOriginalState();o?(t=Math.max(this.options.minZoom*n.zoom,Math.min(this.options.maxZoom*n.zoom,t)),t/=this.getZoom()):this.getZoom()*tthis.options.maxZoom*n.zoom&&(t=this.options.maxZoom*n.zoom/this.getZoom());var i=this.viewport.getCTM(),s=e.matrixTransform(i.inverse()),r=this.svg.createSVGMatrix().translate(s.x,s.y).scale(t).translate(-s.x,-s.y),a=i.multiply(r);a.a!==i.a&&this.viewport.setCTM(a)},l.prototype.zoom=function(t,e){this.zoomAtPoint(t,r.getSvgCenterPoint(this.svg,this.width,this.height),e)},l.prototype.publicZoom=function(t,e){e&&(t=this.computeFromRelativeZoom(t)),this.zoom(t,e)},l.prototype.publicZoomAtPoint=function(t,e,o){if(o&&(t=this.computeFromRelativeZoom(t)),"SVGPoint"!==s.getType(e)){if(!("x"in e&&"y"in e))throw new Error("Given point is invalid");e=r.createSVGPoint(this.svg,e.x,e.y)}this.zoomAtPoint(t,e,o)},l.prototype.getZoom=function(){return this.viewport.getZoom()},l.prototype.getRelativeZoom=function(){return this.viewport.getRelativeZoom()},l.prototype.computeFromRelativeZoom=function(t){return t*this.viewport.getOriginalState().zoom},l.prototype.resetZoom=function(){var t=this.viewport.getOriginalState();this.zoom(t.zoom,!0)},l.prototype.resetPan=function(){this.pan(this.viewport.getOriginalState())},l.prototype.reset=function(){this.resetZoom(),this.resetPan()},l.prototype.handleDblClick=function(t){if(this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1),this.options.controlIconsEnabled){var e=t.target.getAttribute("class")||"";if(e.indexOf("svg-pan-zoom-control")>-1)return!1}var o;o=t.shiftKey?1/(2*(1+this.options.zoomScaleSensitivity)):2*(1+this.options.zoomScaleSensitivity);var n=r.getEventPoint(t,this.svg).matrixTransform(this.svg.getScreenCTM().inverse());this.zoomAtPoint(o,n)},l.prototype.handleMouseDown=function(t,e){this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1),s.mouseAndTouchNormalize(t,this.svg),this.options.dblClickZoomEnabled&&s.isDblClick(t,e)?this.handleDblClick(t):(this.state="pan",this.firstEventCTM=this.viewport.getCTM(),this.stateOrigin=r.getEventPoint(t,this.svg).matrixTransform(this.firstEventCTM.inverse()))},l.prototype.handleMouseMove=function(t){if(this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1),"pan"===this.state&&this.options.panEnabled){var e=r.getEventPoint(t,this.svg).matrixTransform(this.firstEventCTM.inverse()),o=this.firstEventCTM.translate(e.x-this.stateOrigin.x,e.y-this.stateOrigin.y);this.viewport.setCTM(o)}},l.prototype.handleMouseUp=function(t){this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1),"pan"===this.state&&(this.state="none")},l.prototype.fit=function(){var t=this.viewport.getViewBox(),e=Math.min(this.width/t.width,this.height/t.height);this.zoom(e,!0)},l.prototype.contain=function(){var t=this.viewport.getViewBox(),e=Math.max(this.width/t.width,this.height/t.height);this.zoom(e,!0)},l.prototype.center=function(){var t=this.viewport.getViewBox(),e=.5*(this.width-(t.width+2*t.x)*this.getZoom()),o=.5*(this.height-(t.height+2*t.y)*this.getZoom());this.getPublicInstance().pan({x:e,y:o})},l.prototype.updateBBox=function(){this.viewport.simpleViewBoxCache()},l.prototype.pan=function(t){var e=this.viewport.getCTM();e.e=t.x,e.f=t.y,this.viewport.setCTM(e)},l.prototype.panBy=function(t){var e=this.viewport.getCTM();e.e+=t.x,e.f+=t.y,this.viewport.setCTM(e)},l.prototype.getPan=function(){var t=this.viewport.getState();return{x:t.x,y:t.y}},l.prototype.resize=function(){var t=r.getBoundingClientRectNormalized(this.svg);this.width=t.width,this.height=t.height;var e=this.viewport;e.options.width=this.width,e.options.height=this.height,e.processCTM(),this.options.controlIconsEnabled&&(this.getPublicInstance().disableControlIcons(),this.getPublicInstance().enableControlIcons())},l.prototype.destroy=function(){var t=this;this.beforeZoom=null,this.onZoom=null,this.beforePan=null,this.onPan=null,this.onUpdatedCTM=null,null!=this.options.customEventsHandler&&this.options.customEventsHandler.destroy({svgElement:this.svg,eventsListenerElement:this.options.eventsListenerElement,instance:this.getPublicInstance()});for(var e in this.eventListeners)(this.options.eventsListenerElement||this.svg).removeEventListener(e,this.eventListeners[e],!1);this.disableMouseWheelZoom(),this.getPublicInstance().disableControlIcons(),this.reset(),h=h.filter(function(e){return e.svg!==t.svg}),delete this.options,delete this.viewport,delete this.publicInstance,delete this.pi,this.getPublicInstance=function(){return null}},l.prototype.getPublicInstance=function(){var t=this;return this.publicInstance||(this.publicInstance=this.pi={enablePan:function(){return t.options.panEnabled=!0,t.pi},disablePan:function(){return t.options.panEnabled=!1,t.pi},isPanEnabled:function(){return!!t.options.panEnabled},pan:function(e){return t.pan(e),t.pi},panBy:function(e){return t.panBy(e),t.pi},getPan:function(){return t.getPan()},setBeforePan:function(e){return t.options.beforePan=null===e?null:s.proxy(e,t.publicInstance),t.pi},setOnPan:function(e){return t.options.onPan=null===e?null:s.proxy(e,t.publicInstance),t.pi},enableZoom:function(){return t.options.zoomEnabled=!0,t.pi},disableZoom:function(){return t.options.zoomEnabled=!1,t.pi},isZoomEnabled:function(){return!!t.options.zoomEnabled},enableControlIcons:function(){return t.options.controlIconsEnabled||(t.options.controlIconsEnabled=!0,i.enable(t)),t.pi},disableControlIcons:function(){return t.options.controlIconsEnabled&&(t.options.controlIconsEnabled=!1,i.disable(t)),t.pi},isControlIconsEnabled:function(){return!!t.options.controlIconsEnabled},enableDblClickZoom:function(){return t.options.dblClickZoomEnabled=!0,t.pi},disableDblClickZoom:function(){return t.options.dblClickZoomEnabled=!1,t.pi},isDblClickZoomEnabled:function(){return!!t.options.dblClickZoomEnabled},enableMouseWheelZoom:function(){return t.enableMouseWheelZoom(),t.pi},disableMouseWheelZoom:function(){return t.disableMouseWheelZoom(),t.pi},isMouseWheelZoomEnabled:function(){return!!t.options.mouseWheelZoomEnabled},setZoomScaleSensitivity:function(e){return t.options.zoomScaleSensitivity=e,t.pi},setMinZoom:function(e){return t.options.minZoom=e,t.pi},setMaxZoom:function(e){return t.options.maxZoom=e,t.pi},setBeforeZoom:function(e){return t.options.beforeZoom=null===e?null:s.proxy(e,t.publicInstance),t.pi},setOnZoom:function(e){return t.options.onZoom=null===e?null:s.proxy(e,t.publicInstance),t.pi},zoom:function(e){return t.publicZoom(e,!0),t.pi},zoomBy:function(e){return t.publicZoom(e,!1),t.pi},zoomAtPoint:function(e,o){return t.publicZoomAtPoint(e,o,!0),t.pi},zoomAtPointBy:function(e,o){return t.publicZoomAtPoint(e,o,!1),t.pi},zoomIn:function(){return this.zoomBy(1+t.options.zoomScaleSensitivity),t.pi},zoomOut:function(){return this.zoomBy(1/(1+t.options.zoomScaleSensitivity)),t.pi},getZoom:function(){return t.getRelativeZoom()},setOnUpdatedCTM:function(e){return t.options.onUpdatedCTM=null===e?null:s.proxy(e,t.publicInstance),t.pi},resetZoom:function(){return t.resetZoom(),t.pi},resetPan:function(){return t.resetPan(),t.pi},reset:function(){return t.reset(),t.pi},fit:function(){return t.fit(),t.pi},contain:function(){return t.contain(),t.pi},center:function(){return t.center(),t.pi},updateBBox:function(){return t.updateBBox(),t.pi},resize:function(){return t.resize(),t.pi},getSizes:function(){return{width:t.width,height:t.height,realZoom:t.getZoom(),viewBox:t.viewport.getViewBox()}},destroy:function(){return t.destroy(),t.pi}}),this.publicInstance};var h=[],c=function(t,e){var o=s.getSvg(t);if(null===o)return null;for(var n=h.length-1;n>=0;n--)if(h[n].svg===o)return h[n].instance.getPublicInstance();return h.push({svg:o,instance:new l(o,e)}),h[h.length-1].instance.getPublicInstance()};e.exports=c},{"./control-icons":2,"./shadow-viewport":3,"./svg-utilities":5,"./uniwheel":6,"./utilities":7}],5:[function(t,e,o){var n=t("./utilities"),i="unknown";document.documentMode&&(i="ie"),e.exports={svgNS:"http://www.w3.org/2000/svg",xmlNS:"http://www.w3.org/XML/1998/namespace",xmlnsNS:"http://www.w3.org/2000/xmlns/",xlinkNS:"http://www.w3.org/1999/xlink",evNS:"http://www.w3.org/2001/xml-events",getBoundingClientRectNormalized:function(t){if(t.clientWidth&&t.clientHeight)return{width:t.clientWidth,height:t.clientHeight};if(t.getBoundingClientRect())return t.getBoundingClientRect();throw new Error("Cannot get BoundingClientRect for SVG.")},getOrCreateViewport:function(t,e){var o=null;if(o=n.isElement(e)?e:t.querySelector(e),!o){var i=Array.prototype.slice.call(t.childNodes||t.children).filter(function(t){return"defs"!==t.nodeName&&"#text"!==t.nodeName});1===i.length&&"g"===i[0].nodeName&&null===i[0].getAttribute("transform")&&(o=i[0])}if(!o){var s="viewport-"+(new Date).toISOString().replace(/\D/g,"");o=document.createElementNS(this.svgNS,"g"),o.setAttribute("id",s);var r=t.childNodes||t.children;if(r&&r.length>0)for(var a=r.length;a>0;a--)"defs"!==r[r.length-a].nodeName&&o.appendChild(r[r.length-a]);t.appendChild(o)}var l=[];return o.getAttribute("class")&&(l=o.getAttribute("class").split(" ")),~l.indexOf("svg-pan-zoom_viewport")||(l.push("svg-pan-zoom_viewport"),o.setAttribute("class",l.join(" "))),o},setupSvgAttributes:function(t){if(t.setAttribute("xmlns",this.svgNS),t.setAttributeNS(this.xmlnsNS,"xmlns:xlink",this.xlinkNS),t.setAttributeNS(this.xmlnsNS,"xmlns:ev",this.evNS),null!==t.parentNode){var e=t.getAttribute("style")||"";-1===e.toLowerCase().indexOf("overflow")&&t.setAttribute("style","overflow: hidden; "+e)}},internetExplorerRedisplayInterval:300,refreshDefsGlobal:n.throttle(function(){for(var t=document.querySelectorAll("defs"),e=t.length,o=0;e>o;o++){var n=t[o];n.parentNode.insertBefore(n,n)}},this.internetExplorerRedisplayInterval),setCTM:function(t,e,o){var n=this,s="matrix("+e.a+","+e.b+","+e.c+","+e.d+","+e.e+","+e.f+")";t.setAttributeNS(null,"transform",s),"transform"in t.style?t.style.transform=s:"-ms-transform"in t.style?t.style["-ms-transform"]=s:"-webkit-transform"in t.style&&(t.style["-webkit-transform"]=s),"ie"===i&&o&&(o.parentNode.insertBefore(o,o),window.setTimeout(function(){n.refreshDefsGlobal()},n.internetExplorerRedisplayInterval))},getEventPoint:function(t,e){var o=e.createSVGPoint();return n.mouseAndTouchNormalize(t,e),o.x=t.clientX,o.y=t.clientY,o},getSvgCenterPoint:function(t,e,o){return this.createSVGPoint(t,e/2,o/2)},createSVGPoint:function(t,e,o){var n=t.createSVGPoint();return n.x=e,n.y=o,n}}},{"./utilities":7}],6:[function(t,e,o){e.exports=function(){function t(t,e,o){var n=function(t){!t&&(t=window.event);var o={originalEvent:t,target:t.target||t.srcElement,type:"wheel",deltaMode:"MozMousePixelScroll"==t.type?0:1,deltaX:0,delatZ:0,preventDefault:function(){t.preventDefault?t.preventDefault():t.returnValue=!1}};return"mousewheel"==u?(o.deltaY=-1/40*t.wheelDelta,t.wheelDeltaX&&(o.deltaX=-1/40*t.wheelDeltaX)):o.deltaY=t.detail,e(o)};return c.push({element:t,fn:n,capture:o}),n}function e(t,e){for(var o=0;oo&&10>n}return!1},now:Date.now||function(){return(new Date).getTime()},throttle:function(t,e,o){var n,i,s,r=this,a=null,l=0;o||(o={});var u=function(){l=o.leading===!1?0:r.now(),a=null,s=t.apply(n,i),a||(n=i=null)};return function(){var h=r.now();l||o.leading!==!1||(l=h);var c=e-(h-l);return n=this,i=arguments,0>=c||c>e?(clearTimeout(a),a=null,l=h,s=t.apply(n,i),a||(n=i=null)):a||o.trailing===!1||(a=setTimeout(u,c)),s}},createRequestAnimationFrame:function(t){var e=null;return"auto"!==t&&60>t&&t>1&&(e=Math.floor(1e3/t)),null===e?window.requestAnimationFrame||n(33):n(e)}}},{}]},{},[1]); diff --git a/docs/js/libs/vis.min.js b/docs/js/libs/vis.min.js new file mode 100644 index 0000000..d6f9b38 --- /dev/null +++ b/docs/js/libs/vis.min.js @@ -0,0 +1,46 @@ +/** + * vis.js + * https://github.com/almende/vis + * + * A dynamic, browser-based visualization library. + * + * @version 4.18.1 + * @date 2017-01-29 + * + * @license + * Copyright (C) 2011-2016 Almende B.V, http://almende.com + * + * Vis.js is dual licensed under both + * + * * The Apache 2.0 License + * http://www.apache.org/licenses/LICENSE-2.0 + * + * and + * + * * The MIT License + * http://opensource.org/licenses/MIT + * + * Vis.js may be distributed under either license. + */ +"use strict";!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.vis=e():t.vis=e()}(this,function(){return function(t){function e(o){if(i[o])return i[o].exports;var n=i[o]={exports:{},id:o,loaded:!1};return t[o].call(n.exports,n,n.exports,e),n.loaded=!0,n.exports}var i={};return e.m=t,e.c=i,e.p="",e(0)}([function(t,e,i){var o=i(1);o.extend(e,i(89)),o.extend(e,i(112)),o.extend(e,i(154))},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}var n=i(2),s=o(n),r=i(55),a=o(r),h=i(58),d=o(h),l=i(62),u=o(l),c=i(82),p=o(c),f=i(84),m=i(88);e.isNumber=function(t){return t instanceof Number||"number"==typeof t},e.elementsCensor=function(t){if(t){var e=function(t,e){return e instanceof Element?"DOM Element":e};return JSON.parse((0,p.default)(t,e))}},e.recursiveDOMDelete=function(t){if(t)for(;t.hasChildNodes()===!0;)e.recursiveDOMDelete(t.firstChild),t.removeChild(t.firstChild)},e.giveRange=function(t,e,i,o){if(e==t)return.5;var n=1/(e-t);return Math.max(0,(o-t)*n)},e.isString=function(t){return t instanceof String||"string"==typeof t},e.isDate=function(t){if(t instanceof Date)return!0;if(e.isString(t)){var i=v.exec(t);if(i)return!0;if(!isNaN(Date.parse(t)))return!0}return!1},e.randomUUID=function(){return m.v4()},e.assignAllKeys=function(t,e){for(var i in t)t.hasOwnProperty(i)&&"object"!==(0,u.default)(t[i])&&(t[i]=e)},e.fillIfDefined=function(t,i){var o=arguments.length>2&&void 0!==arguments[2]&&arguments[2];for(var n in t)void 0!==i[n]&&("object"!==(0,u.default)(i[n])?void 0!==i[n]&&null!==i[n]||void 0===t[n]||o!==!0?t[n]=i[n]:delete t[n]:"object"===(0,u.default)(t[n])&&e.fillIfDefined(t[n],i[n],o))},e.protoExtend=function(t,e){for(var i=1;i3&&void 0!==arguments[3]&&arguments[3];if(Array.isArray(o))throw new TypeError("Arrays are not supported by deepExtend");for(var s=2;s3&&void 0!==arguments[3]&&arguments[3];if(Array.isArray(o))throw new TypeError("Arrays are not supported by deepExtend");for(var s in o)if(o.hasOwnProperty(s)&&t.indexOf(s)==-1)if(o[s]&&o[s].constructor===Object)void 0===i[s]&&(i[s]={}),i[s].constructor===Object?e.deepExtend(i[s],o[s]):null===o[s]&&void 0!==i[s]&&n===!0?delete i[s]:i[s]=o[s];else if(Array.isArray(o[s])){i[s]=[];for(var r=0;r=0&&(e="DOMMouseScroll"),t.addEventListener(e,i,o)):t.attachEvent("on"+e,i)},e.removeEventListener=function(t,e,i,o){t.removeEventListener?(void 0===o&&(o=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.removeEventListener(e,i,o)):t.detachEvent("on"+e,i)},e.preventDefault=function(t){t||(t=window.event),t.preventDefault?t.preventDefault():t.returnValue=!1},e.getTarget=function(t){t||(t=window.event);var e;return t.target?e=t.target:t.srcElement&&(e=t.srcElement),void 0!=e.nodeType&&3==e.nodeType&&(e=e.parentNode),e},e.hasParent=function(t,e){for(var i=t;i;){if(i===e)return!0;i=i.parentNode}return!1},e.option={},e.option.asBoolean=function(t,e){return"function"==typeof t&&(t=t()),null!=t?0!=t:e||null},e.option.asNumber=function(t,e){return"function"==typeof t&&(t=t()),null!=t?Number(t)||e||null:e||null},e.option.asString=function(t,e){return"function"==typeof t&&(t=t()),null!=t?String(t):e||null},e.option.asSize=function(t,i){return"function"==typeof t&&(t=t()),e.isString(t)?t:e.isNumber(t)?t+"px":i||null},e.option.asElement=function(t,e){return"function"==typeof t&&(t=t()),t||e||null},e.hexToRGB=function(t){var e=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;t=t.replace(e,function(t,e,i,o){return e+e+i+i+o+o});var i=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return i?{r:parseInt(i[1],16),g:parseInt(i[2],16),b:parseInt(i[3],16)}:null},e.overrideOpacity=function(t,i){if(t.indexOf("rgba")!=-1)return t;if(t.indexOf("rgb")!=-1){var o=t.substr(t.indexOf("(")+1).replace(")","").split(",");return"rgba("+o[0]+","+o[1]+","+o[2]+","+i+")"}var o=e.hexToRGB(t);return null==o?t:"rgba("+o.r+","+o.g+","+o.b+","+i+")"},e.RGBToHex=function(t,e,i){return"#"+((1<<24)+(t<<16)+(e<<8)+i).toString(16).slice(1)},e.parseColor=function(t){var i;if(e.isString(t)===!0){if(e.isValidRGB(t)===!0){var o=t.substr(4).substr(0,t.length-5).split(",").map(function(t){return parseInt(t)});t=e.RGBToHex(o[0],o[1],o[2])}if(e.isValidHex(t)===!0){var n=e.hexToHSV(t),s={h:n.h,s:.8*n.s,v:Math.min(1,1.02*n.v)},r={h:n.h,s:Math.min(1,1.25*n.s),v:.8*n.v},a=e.HSVToHex(r.h,r.s,r.v),h=e.HSVToHex(s.h,s.s,s.v);i={background:t,border:a,highlight:{background:h,border:a},hover:{background:h,border:a}}}else i={background:t,border:t,highlight:{background:t,border:t},hover:{background:t,border:t}}}else i={},i.background=t.background||void 0,i.border=t.border||void 0,e.isString(t.highlight)?i.highlight={border:t.highlight,background:t.highlight}:(i.highlight={},i.highlight.background=t.highlight&&t.highlight.background||void 0,i.highlight.border=t.highlight&&t.highlight.border||void 0),e.isString(t.hover)?i.hover={border:t.hover,background:t.hover}:(i.hover={},i.hover.background=t.hover&&t.hover.background||void 0,i.hover.border=t.hover&&t.hover.border||void 0);return i},e.RGBToHSV=function(t,e,i){t/=255,e/=255,i/=255;var o=Math.min(t,Math.min(e,i)),n=Math.max(t,Math.max(e,i));if(o==n)return{h:0,s:0,v:o};var s=t==o?e-i:i==o?t-e:i-t,r=t==o?3:i==o?1:5,a=60*(r-s/(n-o))/360,h=(n-o)/n,d=n;return{h:a,s:h,v:d}};var g={split:function(t){var e={};return t.split(";").forEach(function(t){if(""!=t.trim()){var i=t.split(":"),o=i[0].trim(),n=i[1].trim();e[o]=n}}),e},join:function(t){return(0,d.default)(t).map(function(e){return e+": "+t[e]}).join("; ")}};e.addCssText=function(t,i){var o=g.split(t.style.cssText),n=g.split(i),s=e.extend(o,n);t.style.cssText=g.join(s)},e.removeCssText=function(t,e){var i=g.split(t.style.cssText),o=g.split(e);for(var n in o)o.hasOwnProperty(n)&&delete i[n];t.style.cssText=g.join(i)},e.HSVToRGB=function(t,e,i){var o,n,s,r=Math.floor(6*t),a=6*t-r,h=i*(1-e),d=i*(1-a*e),l=i*(1-(1-a)*e);switch(r%6){case 0:o=i,n=l,s=h;break;case 1:o=d,n=i,s=h;break;case 2:o=h,n=i,s=l;break;case 3:o=h,n=d,s=i;break;case 4:o=l,n=h,s=i;break;case 5:o=i,n=h,s=d}return{r:Math.floor(255*o),g:Math.floor(255*n),b:Math.floor(255*s)}},e.HSVToHex=function(t,i,o){var n=e.HSVToRGB(t,i,o);return e.RGBToHex(n.r,n.g,n.b)},e.hexToHSV=function(t){var i=e.hexToRGB(t);return e.RGBToHSV(i.r,i.g,i.b)},e.isValidHex=function(t){var e=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t);return e},e.isValidRGB=function(t){t=t.replace(" ","");var e=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/i.test(t);return e},e.isValidRGBA=function(t){t=t.replace(" ","");var e=/rgba\((\d{1,3}),(\d{1,3}),(\d{1,3}),(.{1,3})\)/i.test(t);return e},e.selectiveBridgeObject=function(t,i){if("object"==("undefined"==typeof i?"undefined":(0,u.default)(i))){for(var o=(0,a.default)(i),n=0;n0&&e(o,t[n-1])<0;n--)t[n]=t[n-1];t[n]=o}return t},e.mergeOptions=function(t,e,i){var o=(arguments.length>3&&void 0!==arguments[3]&&arguments[3],arguments.length>4&&void 0!==arguments[4]?arguments[4]:{});if(null===e[i])t[i]=(0,a.default)(o[i]);else if(void 0!==e[i])if("boolean"==typeof e[i])t[i].enabled=e[i];else{void 0===e[i].enabled&&(t[i].enabled=!0);for(var n in e[i])e[i].hasOwnProperty(n)&&(t[i][n]=e[i][n])}},e.binarySearchCustom=function(t,e,i,o){for(var n=1e4,s=0,r=0,a=t.length-1;r<=a&&s0)return"before"==o?Math.max(0,h-1):h;if(n(r,e)<0&&n(a,e)>0)return"before"==o?h:Math.min(t.length-1,h+1);n(r,e)<0?u=h+1:c=h-1,l++}return-1},e.easingFunctions={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return t*(2-t)},easeInOutQuad:function(t){return t<.5?2*t*t:-1+(4-2*t)*t},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return--t*t*t+1},easeInOutCubic:function(t){return t<.5?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return 1- --t*t*t*t},easeInOutQuart:function(t){return t<.5?8*t*t*t*t:1-8*--t*t*t*t},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return 1+--t*t*t*t*t},easeInOutQuint:function(t){return t<.5?16*t*t*t*t*t:1+16*--t*t*t*t*t}},e.getScrollBarWidth=function(){var t=document.createElement("p");t.style.width="100%",t.style.height="200px";var e=document.createElement("div");e.style.position="absolute",e.style.top="0px",e.style.left="0px",e.style.visibility="hidden",e.style.width="200px",e.style.height="150px",e.style.overflow="hidden",e.appendChild(t),document.body.appendChild(e);var i=t.offsetWidth;e.style.overflow="scroll";var o=t.offsetWidth;return i==o&&(o=e.clientWidth),document.body.removeChild(e),i-o},e.topMost=function(t,e){var i=void 0;Array.isArray(e)||(e=[e]);var o=!0,n=!1,r=void 0;try{for(var a,h=(0,s.default)(t);!(o=(a=h.next()).done);o=!0){var d=a.value;if(d){i=d[e[0]];for(var l=1;l=t.length?(this._t=void 0,n(1)):"keys"==e?n(0,i):"values"==e?n(0,t[i]):n(0,[i,t[i]])},"values"),s.Arguments=s.Array,o("keys"),o("values"),o("entries")},function(t,e){t.exports=function(){}},function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},function(t,e){t.exports={}},function(t,e,i){var o=i(10),n=i(12);t.exports=function(t){return o(n(t))}},function(t,e,i){var o=i(11);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==o(t)?t.split(""):Object(t)}},function(t,e){var i={}.toString;t.exports=function(t){return i.call(t).slice(8,-1)}},function(t,e){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},function(t,e,i){var o=i(14),n=i(15),s=i(30),r=i(20),a=i(31),h=i(8),d=i(32),l=i(46),u=i(48),c=i(47)("iterator"),p=!([].keys&&"next"in[].keys()),f="@@iterator",m="keys",v="values",g=function(){return this};t.exports=function(t,e,i,y,b,_,w){d(i,e,y);var x,k,O,D=function(t){if(!p&&t in T)return T[t];switch(t){case m:return function(){return new i(this,t)};case v:return function(){return new i(this,t)}}return function(){return new i(this,t)}},M=e+" Iterator",S=b==v,C=!1,T=t.prototype,E=T[c]||T[f]||b&&T[b],P=E||D(b),I=b?S?D("entries"):P:void 0,N="Array"==e?T.entries||E:E;if(N&&(O=u(N.call(new t)),O!==Object.prototype&&(l(O,M,!0),o||a(O,c)||r(O,c,g))),S&&E&&E.name!==v&&(C=!0,P=function(){return E.call(this)}),o&&!w||!p&&!C&&T[c]||r(T,c,P),h[e]=P,h[M]=g,b)if(x={values:S?P:D(v),keys:_?P:D(m),entries:I},w)for(k in x)k in T||s(T,k,x[k]);else n(n.P+n.F*(p||C),e,x);return x}},function(t,e){t.exports=!0},function(t,e,i){var o=i(16),n=i(17),s=i(18),r=i(20),a="prototype",h=function(t,e,i){var d,l,u,c=t&h.F,p=t&h.G,f=t&h.S,m=t&h.P,v=t&h.B,g=t&h.W,y=p?n:n[e]||(n[e]={}),b=y[a],_=p?o:f?o[e]:(o[e]||{})[a];p&&(i=e);for(d in i)l=!c&&_&&void 0!==_[d],l&&d in y||(u=l?_[d]:i[d],y[d]=p&&"function"!=typeof _[d]?i[d]:v&&l?s(u,o):g&&_[d]==u?function(t){var e=function(e,i,o){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,i)}return new t(e,i,o)}return t.apply(this,arguments)};return e[a]=t[a],e}(u):m&&"function"==typeof u?s(Function.call,u):u,m&&((y.virtual||(y.virtual={}))[d]=u,t&h.R&&b&&!b[d]&&r(b,d,u)))};h.F=1,h.G=2,h.S=4,h.P=8,h.B=16,h.W=32,h.U=64,h.R=128,t.exports=h},function(t,e){var i=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=i)},function(t,e){var i=t.exports={version:"2.4.0"};"number"==typeof __e&&(__e=i)},function(t,e,i){var o=i(19);t.exports=function(t,e,i){if(o(t),void 0===e)return t;switch(i){case 1:return function(i){return t.call(e,i)};case 2:return function(i,o){return t.call(e,i,o)};case 3:return function(i,o,n){return t.call(e,i,o,n)}}return function(){return t.apply(e,arguments)}}},function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,e,i){var o=i(21),n=i(29);t.exports=i(25)?function(t,e,i){return o.f(t,e,n(1,i))}:function(t,e,i){return t[e]=i,t}},function(t,e,i){var o=i(22),n=i(24),s=i(28),r=Object.defineProperty;e.f=i(25)?Object.defineProperty:function(t,e,i){if(o(t),e=s(e,!0),o(i),n)try{return r(t,e,i)}catch(t){}if("get"in i||"set"in i)throw TypeError("Accessors not supported!");return"value"in i&&(t[e]=i.value),t}},function(t,e,i){var o=i(23);t.exports=function(t){if(!o(t))throw TypeError(t+" is not an object!");return t}},function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,e,i){t.exports=!i(25)&&!i(26)(function(){return 7!=Object.defineProperty(i(27)("div"),"a",{get:function(){return 7}}).a})},function(t,e,i){t.exports=!i(26)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e,i){var o=i(23),n=i(16).document,s=o(n)&&o(n.createElement);t.exports=function(t){return s?n.createElement(t):{}}},function(t,e,i){var o=i(23);t.exports=function(t,e){if(!o(t))return t;var i,n;if(e&&"function"==typeof(i=t.toString)&&!o(n=i.call(t)))return n;if("function"==typeof(i=t.valueOf)&&!o(n=i.call(t)))return n;if(!e&&"function"==typeof(i=t.toString)&&!o(n=i.call(t)))return n;throw TypeError("Can't convert object to primitive value")}},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e,i){t.exports=i(20)},function(t,e){var i={}.hasOwnProperty;t.exports=function(t,e){return i.call(t,e)}},function(t,e,i){var o=i(33),n=i(29),s=i(46),r={};i(20)(r,i(47)("iterator"),function(){return this}),t.exports=function(t,e,i){t.prototype=o(r,{next:n(1,i)}),s(t,e+" Iterator")}},function(t,e,i){var o=i(22),n=i(34),s=i(44),r=i(41)("IE_PROTO"),a=function(){},h="prototype",d=function(){var t,e=i(27)("iframe"),o=s.length,n="<",r=">";for(e.style.display="none",i(45).appendChild(e),e.src="javascript:",t=e.contentWindow.document,t.open(),t.write(n+"script"+r+"document.F=Object"+n+"/script"+r),t.close(),d=t.F;o--;)delete d[h][s[o]];return d()};t.exports=Object.create||function(t,e){var i;return null!==t?(a[h]=o(t),i=new a,a[h]=null,i[r]=t):i=d(),void 0===e?i:n(i,e)}},function(t,e,i){var o=i(21),n=i(22),s=i(35);t.exports=i(25)?Object.defineProperties:function(t,e){n(t);for(var i,r=s(e),a=r.length,h=0;a>h;)o.f(t,i=r[h++],e[i]);return t}},function(t,e,i){var o=i(36),n=i(44);t.exports=Object.keys||function(t){return o(t,n)}},function(t,e,i){var o=i(31),n=i(9),s=i(37)(!1),r=i(41)("IE_PROTO");t.exports=function(t,e){var i,a=n(t),h=0,d=[];for(i in a)i!=r&&o(a,i)&&d.push(i);for(;e.length>h;)o(a,i=e[h++])&&(~s(d,i)||d.push(i));return d}},function(t,e,i){var o=i(9),n=i(38),s=i(40);t.exports=function(t){return function(e,i,r){var a,h=o(e),d=n(h.length),l=s(r,d);if(t&&i!=i){for(;d>l;)if(a=h[l++],a!=a)return!0}else for(;d>l;l++)if((t||l in h)&&h[l]===i)return t||l||0;return!t&&-1}}},function(t,e,i){var o=i(39),n=Math.min;t.exports=function(t){return t>0?n(o(t),9007199254740991):0}},function(t,e){var i=Math.ceil,o=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?o:i)(t)}},function(t,e,i){var o=i(39),n=Math.max,s=Math.min;t.exports=function(t,e){return t=o(t),t<0?n(t+e,0):s(t,e)}},function(t,e,i){var o=i(42)("keys"),n=i(43);t.exports=function(t){return o[t]||(o[t]=n(t))}},function(t,e,i){var o=i(16),n="__core-js_shared__",s=o[n]||(o[n]={});t.exports=function(t){return s[t]||(s[t]={})}},function(t,e){var i=0,o=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++i+o).toString(36))}},function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(t,e,i){t.exports=i(16).document&&document.documentElement},function(t,e,i){var o=i(21).f,n=i(31),s=i(47)("toStringTag");t.exports=function(t,e,i){t&&!n(t=i?t:t.prototype,s)&&o(t,s,{configurable:!0,value:e})}},function(t,e,i){var o=i(42)("wks"),n=i(43),s=i(16).Symbol,r="function"==typeof s,a=t.exports=function(t){return o[t]||(o[t]=r&&s[t]||(r?s:n)("Symbol."+t))};a.store=o},function(t,e,i){var o=i(31),n=i(49),s=i(41)("IE_PROTO"),r=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=n(t),o(t,s)?t[s]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?r:null}},function(t,e,i){var o=i(12);t.exports=function(t){return Object(o(t))}},function(t,e,i){var o=i(51)(!0);i(13)(String,"String",function(t){this._t=String(t),this._i=0},function(){var t,e=this._t,i=this._i;return i>=e.length?{value:void 0,done:!0}:(t=o(e,i),this._i+=t.length,{value:t,done:!1})})},function(t,e,i){var o=i(39),n=i(12);t.exports=function(t){return function(e,i){var s,r,a=String(n(e)),h=o(i),d=a.length;return h<0||h>=d?t?"":void 0:(s=a.charCodeAt(h),s<55296||s>56319||h+1===d||(r=a.charCodeAt(h+1))<56320||r>57343?t?a.charAt(h):s:t?a.slice(h,h+2):(s-55296<<10)+(r-56320)+65536)}}},function(t,e,i){var o=i(22),n=i(53);t.exports=i(17).getIterator=function(t){var e=n(t);if("function"!=typeof e)throw TypeError(t+" is not iterable!");return o(e.call(t))}},function(t,e,i){var o=i(54),n=i(47)("iterator"),s=i(8);t.exports=i(17).getIteratorMethod=function(t){if(void 0!=t)return t[n]||t["@@iterator"]||s[o(t)]}},function(t,e,i){var o=i(11),n=i(47)("toStringTag"),s="Arguments"==o(function(){return arguments}()),r=function(t,e){try{return t[e]}catch(t){}};t.exports=function(t){var e,i,a;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(i=r(e=Object(t),n))?i:s?o(e):"Object"==(a=o(e))&&"function"==typeof e.callee?"Arguments":a}},function(t,e,i){t.exports={default:i(56),__esModule:!0}},function(t,e,i){i(57);var o=i(17).Object;t.exports=function(t,e){return o.create(t,e)}},function(t,e,i){var o=i(15);o(o.S,"Object",{create:i(33)})},function(t,e,i){t.exports={default:i(59),__esModule:!0}},function(t,e,i){i(60),t.exports=i(17).Object.keys},function(t,e,i){var o=i(49),n=i(35);i(61)("keys",function(){return function(t){return n(o(t))}})},function(t,e,i){var o=i(15),n=i(17),s=i(26);t.exports=function(t,e){var i=(n.Object||{})[t]||Object[t],r={};r[t]=e(i),o(o.S+o.F*s(function(){i(1)}),"Object",r)}},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}e.__esModule=!0;var n=i(63),s=o(n),r=i(66),a=o(r),h="function"==typeof a.default&&"symbol"==typeof s.default?function(t){return typeof t}:function(t){return t&&"function"==typeof a.default&&t.constructor===a.default&&t!==a.default.prototype?"symbol":typeof t};e.default="function"==typeof a.default&&"symbol"===h(s.default)?function(t){return"undefined"==typeof t?"undefined":h(t)}:function(t){return t&&"function"==typeof a.default&&t.constructor===a.default&&t!==a.default.prototype?"symbol":"undefined"==typeof t?"undefined":h(t)}},function(t,e,i){t.exports={default:i(64),__esModule:!0}},function(t,e,i){i(50),i(4),t.exports=i(65).f("iterator")},function(t,e,i){e.f=i(47)},function(t,e,i){t.exports={default:i(67),__esModule:!0}},function(t,e,i){i(68),i(79),i(80),i(81),t.exports=i(17).Symbol},function(t,e,i){var o=i(16),n=i(31),s=i(25),r=i(15),a=i(30),h=i(69).KEY,d=i(26),l=i(42),u=i(46),c=i(43),p=i(47),f=i(65),m=i(70),v=i(71),g=i(72),y=i(75),b=i(22),_=i(9),w=i(28),x=i(29),k=i(33),O=i(76),D=i(78),M=i(21),S=i(35),C=D.f,T=M.f,E=O.f,P=o.Symbol,I=o.JSON,N=I&&I.stringify,z="prototype",R=p("_hidden"),L=p("toPrimitive"),A={}.propertyIsEnumerable,B=l("symbol-registry"),F=l("symbols"),H=l("op-symbols"),j=Object[z],W="function"==typeof P,Y=o.QObject,G=!Y||!Y[z]||!Y[z].findChild,V=s&&d(function(){return 7!=k(T({},"a",{get:function(){return T(this,"a",{value:7}).a}})).a})?function(t,e,i){var o=C(j,e);o&&delete j[e],T(t,e,i),o&&t!==j&&T(j,e,o)}:T,U=function(t){var e=F[t]=k(P[z]);return e._k=t,e},q=W&&"symbol"==typeof P.iterator?function(t){return"symbol"==typeof t}:function(t){return t instanceof P},X=function(t,e,i){return t===j&&X(H,e,i),b(t),e=w(e,!0),b(i),n(F,e)?(i.enumerable?(n(t,R)&&t[R][e]&&(t[R][e]=!1),i=k(i,{enumerable:x(0,!1)})):(n(t,R)||T(t,R,x(1,{})),t[R][e]=!0),V(t,e,i)):T(t,e,i)},Z=function(t,e){b(t);for(var i,o=g(e=_(e)),n=0,s=o.length;s>n;)X(t,i=o[n++],e[i]);return t},K=function(t,e){return void 0===e?k(t):Z(k(t),e)},Q=function(t){var e=A.call(this,t=w(t,!0));return!(this===j&&n(F,t)&&!n(H,t))&&(!(e||!n(this,t)||!n(F,t)||n(this,R)&&this[R][t])||e)},J=function(t,e){if(t=_(t),e=w(e,!0),t!==j||!n(F,e)||n(H,e)){var i=C(t,e);return!i||!n(F,e)||n(t,R)&&t[R][e]||(i.enumerable=!0),i}},$=function(t){for(var e,i=E(_(t)),o=[],s=0;i.length>s;)n(F,e=i[s++])||e==R||e==h||o.push(e);return o},tt=function(t){for(var e,i=t===j,o=E(i?H:_(t)),s=[],r=0;o.length>r;)!n(F,e=o[r++])||i&&!n(j,e)||s.push(F[e]);return s};W||(P=function(){if(this instanceof P)throw TypeError("Symbol is not a constructor!");var t=c(arguments.length>0?arguments[0]:void 0),e=function(i){this===j&&e.call(H,i),n(this,R)&&n(this[R],t)&&(this[R][t]=!1),V(this,t,x(1,i))};return s&&G&&V(j,t,{configurable:!0,set:e}),U(t)},a(P[z],"toString",function(){return this._k}),D.f=J,M.f=X,i(77).f=O.f=$,i(74).f=Q,i(73).f=tt,s&&!i(14)&&a(j,"propertyIsEnumerable",Q,!0),f.f=function(t){return U(p(t))}),r(r.G+r.W+r.F*!W,{Symbol:P});for(var et="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),it=0;et.length>it;)p(et[it++]);for(var et=S(p.store),it=0;et.length>it;)m(et[it++]);r(r.S+r.F*!W,"Symbol",{for:function(t){return n(B,t+="")?B[t]:B[t]=P(t)},keyFor:function(t){if(q(t))return v(B,t);throw TypeError(t+" is not a symbol!")},useSetter:function(){G=!0},useSimple:function(){G=!1}}),r(r.S+r.F*!W,"Object",{create:K,defineProperty:X,defineProperties:Z,getOwnPropertyDescriptor:J,getOwnPropertyNames:$,getOwnPropertySymbols:tt}),I&&r(r.S+r.F*(!W||d(function(){var t=P();return"[null]"!=N([t])||"{}"!=N({a:t})||"{}"!=N(Object(t))})),"JSON",{stringify:function(t){if(void 0!==t&&!q(t)){for(var e,i,o=[t],n=1;arguments.length>n;)o.push(arguments[n++]);return e=o[1],"function"==typeof e&&(i=e),!i&&y(e)||(e=function(t,e){if(i&&(e=i.call(this,t,e)),!q(e))return e}),o[1]=e,N.apply(I,o)}}}),P[z][L]||i(20)(P[z],L,P[z].valueOf),u(P,"Symbol"),u(Math,"Math",!0),u(o.JSON,"JSON",!0)},function(t,e,i){var o=i(43)("meta"),n=i(23),s=i(31),r=i(21).f,a=0,h=Object.isExtensible||function(){return!0},d=!i(26)(function(){return h(Object.preventExtensions({}))}),l=function(t){r(t,o,{value:{i:"O"+ ++a,w:{}}})},u=function(t,e){if(!n(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!s(t,o)){if(!h(t))return"F";if(!e)return"E";l(t)}return t[o].i},c=function(t,e){if(!s(t,o)){if(!h(t))return!0;if(!e)return!1;l(t)}return t[o].w},p=function(t){return d&&f.NEED&&h(t)&&!s(t,o)&&l(t),t},f=t.exports={KEY:o,NEED:!1,fastKey:u,getWeak:c,onFreeze:p}},function(t,e,i){var o=i(16),n=i(17),s=i(14),r=i(65),a=i(21).f;t.exports=function(t){var e=n.Symbol||(n.Symbol=s?{}:o.Symbol||{});"_"==t.charAt(0)||t in e||a(e,t,{value:r.f(t)})}},function(t,e,i){var o=i(35),n=i(9);t.exports=function(t,e){for(var i,s=n(t),r=o(s),a=r.length,h=0;a>h;)if(s[i=r[h++]]===e)return i}},function(t,e,i){var o=i(35),n=i(73),s=i(74);t.exports=function(t){var e=o(t),i=n.f;if(i)for(var r,a=i(t),h=s.f,d=0;a.length>d;)h.call(t,r=a[d++])&&e.push(r);return e}},function(t,e){e.f=Object.getOwnPropertySymbols},function(t,e){e.f={}.propertyIsEnumerable},function(t,e,i){var o=i(11);t.exports=Array.isArray||function(t){return"Array"==o(t)}},function(t,e,i){var o=i(9),n=i(77).f,s={}.toString,r="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],a=function(t){try{return n(t)}catch(t){return r.slice()}};t.exports.f=function(t){return r&&"[object Window]"==s.call(t)?a(t):n(o(t))}},function(t,e,i){var o=i(36),n=i(44).concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return o(t,n)}},function(t,e,i){var o=i(74),n=i(29),s=i(9),r=i(28),a=i(31),h=i(24),d=Object.getOwnPropertyDescriptor;e.f=i(25)?d:function(t,e){if(t=s(t),e=r(e,!0),h)try{return d(t,e)}catch(t){}if(a(t,e))return n(!o.f.call(t,e),t[e])}},function(t,e){},function(t,e,i){i(70)("asyncIterator")},function(t,e,i){i(70)("observable")},function(t,e,i){t.exports={default:i(83),__esModule:!0}},function(t,e,i){var o=i(17),n=o.JSON||(o.JSON={stringify:JSON.stringify});t.exports=function(t){return n.stringify.apply(n,arguments)}},function(t,e,i){t.exports="undefined"!=typeof window&&window.moment||i(85)},function(t,e,i){(function(t){!function(e,i){t.exports=i()}(this,function(){function e(){return vo.apply(null,arguments)}function i(t){vo=t}function o(t){return t instanceof Array||"[object Array]"===Object.prototype.toString.call(t)}function n(t){return null!=t&&"[object Object]"===Object.prototype.toString.call(t)}function s(t){var e;for(e in t)return!1;return!0}function r(t){return"number"==typeof t||"[object Number]"===Object.prototype.toString.call(t)}function a(t){return t instanceof Date||"[object Date]"===Object.prototype.toString.call(t)}function h(t,e){var i,o=[];for(i=0;i0)for(i in bo)o=bo[i],n=e[o],v(n)||(t[o]=n);return t}function y(t){g(this,t),this._d=new Date(null!=t._d?t._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),_o===!1&&(_o=!0,e.updateOffset(this),_o=!1)}function b(t){return t instanceof y||null!=t&&null!=t._isAMomentObject}function _(t){return t<0?Math.ceil(t)||0:Math.floor(t)}function w(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=_(e)),i}function x(t,e,i){var o,n=Math.min(t.length,e.length),s=Math.abs(t.length-e.length),r=0;for(o=0;o0?"future":"past"];return M(i)?i(e):i.replace(/%s/i,e)}function L(t,e){var i=t.toLowerCase();Po[i]=Po[i+"s"]=Po[e]=t}function A(t){return"string"==typeof t?Po[t]||Po[t.toLowerCase()]:void 0}function B(t){var e,i,o={};for(i in t)d(t,i)&&(e=A(i),e&&(o[e]=t[i]));return o}function F(t,e){Io[t]=e}function H(t){var e=[];for(var i in t)e.push({unit:i,priority:Io[i]});return e.sort(function(t,e){return t.priority-e.priority}),e}function j(t,i){return function(o){return null!=o?(Y(this,t,o),e.updateOffset(this,i),this):W(this,t)}}function W(t,e){return t.isValid()?t._d["get"+(t._isUTC?"UTC":"")+e]():NaN}function Y(t,e,i){t.isValid()&&t._d["set"+(t._isUTC?"UTC":"")+e](i)}function G(t){return t=A(t),M(this[t])?this[t]():this}function V(t,e){if("object"==typeof t){t=B(t);for(var i=H(t),o=0;o=0;return(s?i?"+":"":"-")+Math.pow(10,Math.max(0,n)).toString().substr(1)+o}function q(t,e,i,o){var n=o;"string"==typeof o&&(n=function(){return this[o]()}),t&&(Lo[t]=n),e&&(Lo[e[0]]=function(){return U(n.apply(this,arguments),e[1],e[2])}),i&&(Lo[i]=function(){return this.localeData().ordinal(n.apply(this,arguments),t)})}function X(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function Z(t){var e,i,o=t.match(No);for(e=0,i=o.length;e=0&&zo.test(t);)t=t.replace(zo,i),zo.lastIndex=0,o-=1;return t}function J(t,e,i){tn[t]=M(e)?e:function(t,o){return t&&i?i:e}}function $(t,e){return d(tn,t)?tn[t](e._strict,e._locale):new RegExp(tt(t))}function tt(t){return et(t.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,o,n){return e||i||o||n}))}function et(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function it(t,e){var i,o=e;for("string"==typeof t&&(t=[t]),r(e)&&(o=function(t,i){i[e]=w(t)}),i=0;i=0&&isFinite(a.getFullYear())&&a.setFullYear(t),a}function _t(t){var e=new Date(Date.UTC.apply(null,arguments));return t<100&&t>=0&&isFinite(e.getUTCFullYear())&&e.setUTCFullYear(t),e}function wt(t,e,i){var o=7+e-i,n=(7+_t(t,0,o).getUTCDay()-e)%7;return-n+o-1}function xt(t,e,i,o,n){var s,r,a=(7+i-o)%7,h=wt(t,o,n),d=1+7*(e-1)+a+h;return d<=0?(s=t-1,r=vt(s)+d):d>vt(t)?(s=t+1,r=d-vt(t)):(s=t,r=d),{year:s,dayOfYear:r}}function kt(t,e,i){var o,n,s=wt(t.year(),e,i),r=Math.floor((t.dayOfYear()-s-1)/7)+1;return r<1?(n=t.year()-1,o=r+Ot(n,e,i)):r>Ot(t.year(),e,i)?(o=r-Ot(t.year(),e,i),n=t.year()+1):(n=t.year(),o=r),{week:o,year:n}}function Ot(t,e,i){var o=wt(t,e,i),n=wt(t+1,e,i);return(vt(t)-o+n)/7}function Dt(t){return kt(t,this._week.dow,this._week.doy).week}function Mt(){return this._week.dow}function St(){return this._week.doy}function Ct(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")}function Tt(t){var e=kt(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")}function Et(t,e){return"string"!=typeof t?t:isNaN(t)?(t=e.weekdaysParse(t),"number"==typeof t?t:null):parseInt(t,10)}function Pt(t,e){return"string"==typeof t?e.weekdaysParse(t)%7||7:isNaN(t)?null:t}function It(t,e){return t?o(this._weekdays)?this._weekdays[t.day()]:this._weekdays[this._weekdays.isFormat.test(e)?"format":"standalone"][t.day()]:this._weekdays}function Nt(t){return t?this._weekdaysShort[t.day()]:this._weekdaysShort}function zt(t){return t?this._weekdaysMin[t.day()]:this._weekdaysMin}function Rt(t,e,i){var o,n,s,r=t.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],o=0;o<7;++o)s=u([2e3,1]).day(o),this._minWeekdaysParse[o]=this.weekdaysMin(s,"").toLocaleLowerCase(),this._shortWeekdaysParse[o]=this.weekdaysShort(s,"").toLocaleLowerCase(),this._weekdaysParse[o]=this.weekdays(s,"").toLocaleLowerCase();return i?"dddd"===e?(n=cn.call(this._weekdaysParse,r),n!==-1?n:null):"ddd"===e?(n=cn.call(this._shortWeekdaysParse,r),n!==-1?n:null):(n=cn.call(this._minWeekdaysParse,r),n!==-1?n:null):"dddd"===e?(n=cn.call(this._weekdaysParse,r),n!==-1?n:(n=cn.call(this._shortWeekdaysParse,r),n!==-1?n:(n=cn.call(this._minWeekdaysParse,r),n!==-1?n:null))):"ddd"===e?(n=cn.call(this._shortWeekdaysParse,r),n!==-1?n:(n=cn.call(this._weekdaysParse,r),n!==-1?n:(n=cn.call(this._minWeekdaysParse,r),n!==-1?n:null))):(n=cn.call(this._minWeekdaysParse,r),n!==-1?n:(n=cn.call(this._weekdaysParse,r),n!==-1?n:(n=cn.call(this._shortWeekdaysParse,r),n!==-1?n:null)))}function Lt(t,e,i){var o,n,s;if(this._weekdaysParseExact)return Rt.call(this,t,e,i);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),o=0;o<7;o++){if(n=u([2e3,1]).day(o),i&&!this._fullWeekdaysParse[o]&&(this._fullWeekdaysParse[o]=new RegExp("^"+this.weekdays(n,"").replace(".",".?")+"$","i"),this._shortWeekdaysParse[o]=new RegExp("^"+this.weekdaysShort(n,"").replace(".",".?")+"$","i"),this._minWeekdaysParse[o]=new RegExp("^"+this.weekdaysMin(n,"").replace(".",".?")+"$","i")),this._weekdaysParse[o]||(s="^"+this.weekdays(n,"")+"|^"+this.weekdaysShort(n,"")+"|^"+this.weekdaysMin(n,""),this._weekdaysParse[o]=new RegExp(s.replace(".",""),"i")),i&&"dddd"===e&&this._fullWeekdaysParse[o].test(t))return o;if(i&&"ddd"===e&&this._shortWeekdaysParse[o].test(t))return o;if(i&&"dd"===e&&this._minWeekdaysParse[o].test(t))return o;if(!i&&this._weekdaysParse[o].test(t))return o}}function At(t){if(!this.isValid())return null!=t?this:NaN;var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=Et(t,this.localeData()),this.add(t-e,"d")):e}function Bt(t){if(!this.isValid())return null!=t?this:NaN;var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")}function Ft(t){if(!this.isValid())return null!=t?this:NaN;if(null!=t){var e=Pt(t,this.localeData());return this.day(this.day()%7?e:e-7)}return this.day()||7}function Ht(t){return this._weekdaysParseExact?(d(this,"_weekdaysRegex")||Yt.call(this),t?this._weekdaysStrictRegex:this._weekdaysRegex):(d(this,"_weekdaysRegex")||(this._weekdaysRegex=kn),this._weekdaysStrictRegex&&t?this._weekdaysStrictRegex:this._weekdaysRegex)}function jt(t){return this._weekdaysParseExact?(d(this,"_weekdaysRegex")||Yt.call(this),t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(d(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=On),this._weekdaysShortStrictRegex&&t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function Wt(t){return this._weekdaysParseExact?(d(this,"_weekdaysRegex")||Yt.call(this),t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(d(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Dn),this._weekdaysMinStrictRegex&&t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function Yt(){function t(t,e){return e.length-t.length}var e,i,o,n,s,r=[],a=[],h=[],d=[];for(e=0;e<7;e++)i=u([2e3,1]).day(e),o=this.weekdaysMin(i,""),n=this.weekdaysShort(i,""),s=this.weekdays(i,""),r.push(o),a.push(n),h.push(s),d.push(o),d.push(n),d.push(s);for(r.sort(t),a.sort(t),h.sort(t),d.sort(t),e=0;e<7;e++)a[e]=et(a[e]),h[e]=et(h[e]),d[e]=et(d[e]);this._weekdaysRegex=new RegExp("^("+d.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+h.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+r.join("|")+")","i")}function Gt(){return this.hours()%12||12}function Vt(){return this.hours()||24}function Ut(t,e){q(t,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)})}function qt(t,e){return e._meridiemParse}function Xt(t){return"p"===(t+"").toLowerCase().charAt(0)}function Zt(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"}function Kt(t){return t?t.toLowerCase().replace("_","-"):t}function Qt(t){for(var e,i,o,n,s=0;s0;){if(o=Jt(n.slice(0,e).join("-")))return o;if(i&&i.length>=e&&x(n,i,!0)>=e-1)break;e--}s++}return null}function Jt(e){var i=null;if(!En[e]&&"undefined"!=typeof t&&t&&t.exports)try{i=Mn._abbr,!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),$t(i)}catch(t){}return En[e]}function $t(t,e){var i;return t&&(i=v(e)?ie(t):te(t,e),i&&(Mn=i)),Mn._abbr}function te(t,e){if(null!==e){var i=Tn;if(e.abbr=t,null!=En[t])D("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),i=En[t]._config;else if(null!=e.parentLocale){if(null==En[e.parentLocale])return Pn[e.parentLocale]||(Pn[e.parentLocale]=[]),Pn[e.parentLocale].push({name:t,config:e}),null;i=En[e.parentLocale]._config}return En[t]=new T(C(i,e)),Pn[t]&&Pn[t].forEach(function(t){te(t.name,t.config)}),$t(t),En[t]}return delete En[t],null}function ee(t,e){if(null!=e){var i,o=Tn;null!=En[t]&&(o=En[t]._config),e=C(o,e),i=new T(e),i.parentLocale=En[t],En[t]=i,$t(t)}else null!=En[t]&&(null!=En[t].parentLocale?En[t]=En[t].parentLocale:null!=En[t]&&delete En[t]);return En[t]}function ie(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Mn;if(!o(t)){if(e=Jt(t))return e;t=[t]}return Qt(t)}function oe(){return Oo(En)}function ne(t){var e,i=t._a;return i&&p(t).overflow===-2&&(e=i[nn]<0||i[nn]>11?nn:i[sn]<1||i[sn]>st(i[on],i[nn])?sn:i[rn]<0||i[rn]>24||24===i[rn]&&(0!==i[an]||0!==i[hn]||0!==i[dn])?rn:i[an]<0||i[an]>59?an:i[hn]<0||i[hn]>59?hn:i[dn]<0||i[dn]>999?dn:-1,p(t)._overflowDayOfYear&&(esn)&&(e=sn),p(t)._overflowWeeks&&e===-1&&(e=ln),p(t)._overflowWeekday&&e===-1&&(e=un),p(t).overflow=e),t}function se(t){var e,i,o,n,s,r,a=t._i,h=In.exec(a)||Nn.exec(a);if(h){for(p(t).iso=!0,e=0,i=Rn.length;evt(n)&&(p(t)._overflowDayOfYear=!0),i=_t(n,0,t._dayOfYear),t._a[nn]=i.getUTCMonth(),t._a[sn]=i.getUTCDate()),e=0;e<3&&null==t._a[e];++e)t._a[e]=s[e]=o[e];for(;e<7;e++)t._a[e]=s[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[rn]&&0===t._a[an]&&0===t._a[hn]&&0===t._a[dn]&&(t._nextDay=!0,t._a[rn]=0),t._d=(t._useUTC?_t:bt).apply(null,s),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[rn]=24)}}function le(t){var e,i,o,n,s,r,a,h;if(e=t._w,null!=e.GG||null!=e.W||null!=e.E)s=1,r=4,i=ae(e.GG,t._a[on],kt(be(),1,4).year),o=ae(e.W,1),n=ae(e.E,1),(n<1||n>7)&&(h=!0);else{s=t._locale._week.dow,r=t._locale._week.doy;var d=kt(be(),s,r);i=ae(e.gg,t._a[on],d.year),o=ae(e.w,d.week),null!=e.d?(n=e.d,(n<0||n>6)&&(h=!0)):null!=e.e?(n=e.e+s,(e.e<0||e.e>6)&&(h=!0)):n=s}o<1||o>Ot(i,s,r)?p(t)._overflowWeeks=!0:null!=h?p(t)._overflowWeekday=!0:(a=xt(i,o,n,s,r),t._a[on]=a.year,t._dayOfYear=a.dayOfYear)}function ue(t){if(t._f===e.ISO_8601)return void se(t);t._a=[],p(t).empty=!0;var i,o,n,s,r,a=""+t._i,h=a.length,d=0;for(n=Q(t._f,t._locale).match(No)||[],i=0;i0&&p(t).unusedInput.push(r),a=a.slice(a.indexOf(o)+o.length),d+=o.length),Lo[s]?(o?p(t).empty=!1:p(t).unusedTokens.push(s),nt(s,o,t)):t._strict&&!o&&p(t).unusedTokens.push(s);p(t).charsLeftOver=h-d,a.length>0&&p(t).unusedInput.push(a),t._a[rn]<=12&&p(t).bigHour===!0&&t._a[rn]>0&&(p(t).bigHour=void 0),p(t).parsedDateParts=t._a.slice(0),p(t).meridiem=t._meridiem,t._a[rn]=ce(t._locale,t._a[rn],t._meridiem),de(t),ne(t)}function ce(t,e,i){var o;return null==i?e:null!=t.meridiemHour?t.meridiemHour(e,i):null!=t.isPM?(o=t.isPM(i),o&&e<12&&(e+=12),o||12!==e||(e=0),e):e}function pe(t){var e,i,o,n,s;if(0===t._f.length)return p(t).invalidFormat=!0,void(t._d=new Date(NaN));for(n=0;nthis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Ae(){if(!v(this._isDSTShifted))return this._isDSTShifted;var t={};if(g(t,this),t=ve(t),t._a){var e=t._isUTC?u(t._a):be(t._a);this._isDSTShifted=this.isValid()&&x(t._a,e.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}function Be(){return!!this.isValid()&&!this._isUTC}function Fe(){return!!this.isValid()&&this._isUTC}function He(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}function je(t,e){var i,o,n,s=t,a=null;return Oe(t)?s={ms:t._milliseconds,d:t._days,M:t._months}:r(t)?(s={},e?s[e]=t:s.milliseconds=t):(a=Wn.exec(t))?(i="-"===a[1]?-1:1,s={y:0,d:w(a[sn])*i,h:w(a[rn])*i,m:w(a[an])*i,s:w(a[hn])*i,ms:w(De(1e3*a[dn]))*i}):(a=Yn.exec(t))?(i="-"===a[1]?-1:1,s={y:We(a[2],i),M:We(a[3],i),w:We(a[4],i),d:We(a[5],i),h:We(a[6],i),m:We(a[7],i),s:We(a[8],i)}):null==s?s={}:"object"==typeof s&&("from"in s||"to"in s)&&(n=Ge(be(s.from),be(s.to)),s={},s.ms=n.milliseconds,s.M=n.months),o=new ke(s),Oe(t)&&d(t,"_locale")&&(o._locale=t._locale),o}function We(t,e){var i=t&&parseFloat(t.replace(",","."));return(isNaN(i)?0:i)*e}function Ye(t,e){var i={milliseconds:0,months:0};return i.months=e.month()-t.month()+12*(e.year()-t.year()),t.clone().add(i.months,"M").isAfter(e)&&--i.months,i.milliseconds=+e-+t.clone().add(i.months,"M"),i}function Ge(t,e){var i;return t.isValid()&&e.isValid()?(e=Ce(e,t),t.isBefore(e)?i=Ye(t,e):(i=Ye(e,t),i.milliseconds=-i.milliseconds,i.months=-i.months),i):{milliseconds:0,months:0}}function Ve(t,e){return function(i,o){var n,s;return null===o||isNaN(+o)||(D(e,"moment()."+e+"(period, number) is deprecated. Please use moment()."+e+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),s=i,i=o,o=s),i="string"==typeof i?+i:i,n=je(i,o),Ue(this,n,t),this}}function Ue(t,i,o,n){var s=i._milliseconds,r=De(i._days),a=De(i._months);t.isValid()&&(n=null==n||n,s&&t._d.setTime(t._d.valueOf()+s*o),r&&Y(t,"Date",W(t,"Date")+r*o),a&<(t,W(t,"Month")+a*o),n&&e.updateOffset(t,r||a))}function qe(t,e){var i=t.diff(e,"days",!0);return i<-6?"sameElse":i<-1?"lastWeek":i<0?"lastDay":i<1?"sameDay":i<2?"nextDay":i<7?"nextWeek":"sameElse"}function Xe(t,i){var o=t||be(),n=Ce(o,this).startOf("day"),s=e.calendarFormat(this,n)||"sameElse",r=i&&(M(i[s])?i[s].call(this,o):i[s]);return this.format(r||this.localeData().calendar(s,this,be(o)))}function Ze(){return new y(this)}function Ke(t,e){var i=b(t)?t:be(t);return!(!this.isValid()||!i.isValid())&&(e=A(v(e)?"millisecond":e),"millisecond"===e?this.valueOf()>i.valueOf():i.valueOf()s&&(e=s),Ii.call(this,t,e,i,o,n))}function Ii(t,e,i,o,n){var s=xt(t,e,i,o,n),r=_t(s.year,0,s.dayOfYear);return this.year(r.getUTCFullYear()),this.month(r.getUTCMonth()),this.date(r.getUTCDate()),this}function Ni(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)}function zi(t){var e=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")}function Ri(t,e){e[dn]=w(1e3*("0."+t))}function Li(){return this._isUTC?"UTC":""}function Ai(){return this._isUTC?"Coordinated Universal Time":""}function Bi(t){return be(1e3*t)}function Fi(){return be.apply(null,arguments).parseZone()}function Hi(t){return t}function ji(t,e,i,o){var n=ie(),s=u().set(o,e);return n[i](s,t)}function Wi(t,e,i){if(r(t)&&(e=t,t=void 0),t=t||"",null!=e)return ji(t,e,i,"month");var o,n=[];for(o=0;o<12;o++)n[o]=ji(t,o,i,"month");return n}function Yi(t,e,i,o){"boolean"==typeof t?(r(e)&&(i=e,e=void 0),e=e||""):(e=t,i=e,t=!1,r(e)&&(i=e,e=void 0),e=e||"");var n=ie(),s=t?n._week.dow:0;if(null!=i)return ji(e,(i+s)%7,o,"day");var a,h=[];for(a=0;a<7;a++)h[a]=ji(e,(a+s)%7,o,"day");return h}function Gi(t,e){return Wi(t,e,"months")}function Vi(t,e){return Wi(t,e,"monthsShort")}function Ui(t,e,i){return Yi(t,e,i,"weekdays")}function qi(t,e,i){return Yi(t,e,i,"weekdaysShort")}function Xi(t,e,i){return Yi(t,e,i,"weekdaysMin")}function Zi(){var t=this._data;return this._milliseconds=ts(this._milliseconds),this._days=ts(this._days),this._months=ts(this._months),t.milliseconds=ts(t.milliseconds),t.seconds=ts(t.seconds),t.minutes=ts(t.minutes),t.hours=ts(t.hours),t.months=ts(t.months),t.years=ts(t.years),this}function Ki(t,e,i,o){var n=je(e,i);return t._milliseconds+=o*n._milliseconds,t._days+=o*n._days,t._months+=o*n._months,t._bubble()}function Qi(t,e){return Ki(this,t,e,1)}function Ji(t,e){return Ki(this,t,e,-1)}function $i(t){return t<0?Math.floor(t):Math.ceil(t)}function to(){var t,e,i,o,n,s=this._milliseconds,r=this._days,a=this._months,h=this._data;return s>=0&&r>=0&&a>=0||s<=0&&r<=0&&a<=0||(s+=864e5*$i(io(a)+r),r=0,a=0),h.milliseconds=s%1e3,t=_(s/1e3),h.seconds=t%60,e=_(t/60),h.minutes=e%60,i=_(e/60),h.hours=i%24,r+=_(i/24),n=_(eo(r)),a+=n,r-=$i(io(n)),o=_(a/12),a%=12,h.days=r,h.months=a,h.years=o,this}function eo(t){return 4800*t/146097}function io(t){return 146097*t/4800}function oo(t){var e,i,o=this._milliseconds;if(t=A(t),"month"===t||"year"===t)return e=this._days+o/864e5,i=this._months+eo(e), +"month"===t?i:i/12;switch(e=this._days+Math.round(io(this._months)),t){case"week":return e/7+o/6048e5;case"day":return e+o/864e5;case"hour":return 24*e+o/36e5;case"minute":return 1440*e+o/6e4;case"second":return 86400*e+o/1e3;case"millisecond":return Math.floor(864e5*e)+o;default:throw new Error("Unknown unit "+t)}}function no(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*w(this._months/12)}function so(t){return function(){return this.as(t)}}function ro(t){return t=A(t),this[t+"s"]()}function ao(t){return function(){return this._data[t]}}function ho(){return _(this.days()/7)}function lo(t,e,i,o,n){return n.relativeTime(e||1,!!i,t,o)}function uo(t,e,i){var o=je(t).abs(),n=vs(o.as("s")),s=vs(o.as("m")),r=vs(o.as("h")),a=vs(o.as("d")),h=vs(o.as("M")),d=vs(o.as("y")),l=n0,l[4]=i,lo.apply(null,l)}function co(t){return void 0===t?vs:"function"==typeof t&&(vs=t,!0)}function po(t,e){return void 0!==gs[t]&&(void 0===e?gs[t]:(gs[t]=e,!0))}function fo(t){var e=this.localeData(),i=uo(this,!t,e);return t&&(i=e.pastFuture(+this,i)),e.postformat(i)}function mo(){var t,e,i,o=ys(this._milliseconds)/1e3,n=ys(this._days),s=ys(this._months);t=_(o/60),e=_(t/60),o%=60,t%=60,i=_(s/12),s%=12;var r=i,a=s,h=n,d=e,l=t,u=o,c=this.asSeconds();return c?(c<0?"-":"")+"P"+(r?r+"Y":"")+(a?a+"M":"")+(h?h+"D":"")+(d||l||u?"T":"")+(d?d+"H":"")+(l?l+"M":"")+(u?u+"S":""):"P0D"}var vo,go;go=Array.prototype.some?Array.prototype.some:function(t){for(var e=Object(this),i=e.length>>>0,o=0;o68?1900:2e3)};var yn=j("FullYear",!0);q("w",["ww",2],"wo","week"),q("W",["WW",2],"Wo","isoWeek"),L("week","w"),L("isoWeek","W"),F("week",5),F("isoWeek",5),J("w",Wo),J("ww",Wo,Bo),J("W",Wo),J("WW",Wo,Bo),ot(["w","ww","W","WW"],function(t,e,i,o){e[o.substr(0,1)]=w(t)});var bn={dow:0,doy:6};q("d",0,"do","day"),q("dd",0,0,function(t){return this.localeData().weekdaysMin(this,t)}),q("ddd",0,0,function(t){return this.localeData().weekdaysShort(this,t)}),q("dddd",0,0,function(t){return this.localeData().weekdays(this,t)}),q("e",0,0,"weekday"),q("E",0,0,"isoWeekday"),L("day","d"),L("weekday","e"),L("isoWeekday","E"),F("day",11),F("weekday",11),F("isoWeekday",11),J("d",Wo),J("e",Wo),J("E",Wo),J("dd",function(t,e){return e.weekdaysMinRegex(t)}),J("ddd",function(t,e){return e.weekdaysShortRegex(t)}),J("dddd",function(t,e){return e.weekdaysRegex(t)}),ot(["dd","ddd","dddd"],function(t,e,i,o){var n=i._locale.weekdaysParse(t,o,i._strict);null!=n?e.d=n:p(i).invalidWeekday=t}),ot(["d","e","E"],function(t,e,i,o){e[o]=w(t)});var _n="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),wn="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),xn="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),kn=$o,On=$o,Dn=$o;q("H",["HH",2],0,"hour"),q("h",["hh",2],0,Gt),q("k",["kk",2],0,Vt),q("hmm",0,0,function(){return""+Gt.apply(this)+U(this.minutes(),2)}),q("hmmss",0,0,function(){return""+Gt.apply(this)+U(this.minutes(),2)+U(this.seconds(),2)}),q("Hmm",0,0,function(){return""+this.hours()+U(this.minutes(),2)}),q("Hmmss",0,0,function(){return""+this.hours()+U(this.minutes(),2)+U(this.seconds(),2)}),Ut("a",!0),Ut("A",!1),L("hour","h"),F("hour",13),J("a",qt),J("A",qt),J("H",Wo),J("h",Wo),J("HH",Wo,Bo),J("hh",Wo,Bo),J("hmm",Yo),J("hmmss",Go),J("Hmm",Yo),J("Hmmss",Go),it(["H","HH"],rn),it(["a","A"],function(t,e,i){i._isPm=i._locale.isPM(t),i._meridiem=t}),it(["h","hh"],function(t,e,i){e[rn]=w(t),p(i).bigHour=!0}),it("hmm",function(t,e,i){var o=t.length-2;e[rn]=w(t.substr(0,o)),e[an]=w(t.substr(o)),p(i).bigHour=!0}),it("hmmss",function(t,e,i){var o=t.length-4,n=t.length-2;e[rn]=w(t.substr(0,o)),e[an]=w(t.substr(o,2)),e[hn]=w(t.substr(n)),p(i).bigHour=!0}),it("Hmm",function(t,e,i){var o=t.length-2;e[rn]=w(t.substr(0,o)),e[an]=w(t.substr(o))}),it("Hmmss",function(t,e,i){var o=t.length-4,n=t.length-2;e[rn]=w(t.substr(0,o)),e[an]=w(t.substr(o,2)),e[hn]=w(t.substr(n))});var Mn,Sn=/[ap]\.?m?\.?/i,Cn=j("Hours",!0),Tn={calendar:Do,longDateFormat:Mo,invalidDate:So,ordinal:Co,ordinalParse:To,relativeTime:Eo,months:fn,monthsShort:mn,week:bn,weekdays:_n,weekdaysMin:xn,weekdaysShort:wn,meridiemParse:Sn},En={},Pn={},In=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,Nn=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,zn=/Z|[+-]\d\d(?::?\d\d)?/,Rn=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],Ln=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],An=/^\/?Date\((\-?\d+)/i;e.createFromInputFallback=O("value provided is not in a recognized ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))}),e.ISO_8601=function(){};var Bn=O("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var t=be.apply(null,arguments);return this.isValid()&&t.isValid()?tthis?this:t:m()}),Hn=function(){return Date.now?Date.now():+new Date};Me("Z",":"),Me("ZZ",""),J("Z",Qo),J("ZZ",Qo),it(["Z","ZZ"],function(t,e,i){i._useUTC=!0,i._tzm=Se(Qo,t)});var jn=/([\+\-]|\d\d)/gi;e.updateOffset=function(){};var Wn=/^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,Yn=/^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/;je.fn=ke.prototype;var Gn=Ve(1,"add"),Vn=Ve(-1,"subtract");e.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",e.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var Un=O("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return void 0===t?this.localeData():this.locale(t)});q(0,["gg",2],0,function(){return this.weekYear()%100}),q(0,["GG",2],0,function(){return this.isoWeekYear()%100}),Mi("gggg","weekYear"),Mi("ggggg","weekYear"),Mi("GGGG","isoWeekYear"),Mi("GGGGG","isoWeekYear"),L("weekYear","gg"),L("isoWeekYear","GG"),F("weekYear",1),F("isoWeekYear",1),J("G",Zo),J("g",Zo),J("GG",Wo,Bo),J("gg",Wo,Bo),J("GGGG",Uo,Ho),J("gggg",Uo,Ho),J("GGGGG",qo,jo),J("ggggg",qo,jo),ot(["gggg","ggggg","GGGG","GGGGG"],function(t,e,i,o){e[o.substr(0,2)]=w(t)}),ot(["gg","GG"],function(t,i,o,n){i[n]=e.parseTwoDigitYear(t)}),q("Q",0,"Qo","quarter"),L("quarter","Q"),F("quarter",7),J("Q",Ao),it("Q",function(t,e){e[nn]=3*(w(t)-1)}),q("D",["DD",2],"Do","date"),L("date","D"),F("date",9),J("D",Wo),J("DD",Wo,Bo),J("Do",function(t,e){return t?e._ordinalParse:e._ordinalParseLenient}),it(["D","DD"],sn),it("Do",function(t,e){e[sn]=w(t.match(Wo)[0],10)});var qn=j("Date",!0);q("DDD",["DDDD",3],"DDDo","dayOfYear"),L("dayOfYear","DDD"),F("dayOfYear",4),J("DDD",Vo),J("DDDD",Fo),it(["DDD","DDDD"],function(t,e,i){i._dayOfYear=w(t)}),q("m",["mm",2],0,"minute"),L("minute","m"),F("minute",14),J("m",Wo),J("mm",Wo,Bo),it(["m","mm"],an);var Xn=j("Minutes",!1);q("s",["ss",2],0,"second"),L("second","s"),F("second",15),J("s",Wo),J("ss",Wo,Bo),it(["s","ss"],hn);var Zn=j("Seconds",!1);q("S",0,0,function(){return~~(this.millisecond()/100)}),q(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),q(0,["SSS",3],0,"millisecond"),q(0,["SSSS",4],0,function(){return 10*this.millisecond()}),q(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),q(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),q(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),q(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),q(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),L("millisecond","ms"),F("millisecond",16),J("S",Vo,Ao),J("SS",Vo,Bo),J("SSS",Vo,Fo);var Kn;for(Kn="SSSS";Kn.length<=9;Kn+="S")J(Kn,Xo);for(Kn="S";Kn.length<=9;Kn+="S")it(Kn,Ri);var Qn=j("Milliseconds",!1);q("z",0,0,"zoneAbbr"),q("zz",0,0,"zoneName");var Jn=y.prototype;Jn.add=Gn,Jn.calendar=Xe,Jn.clone=Ze,Jn.diff=ii,Jn.endOf=mi,Jn.format=ai,Jn.from=hi,Jn.fromNow=di,Jn.to=li,Jn.toNow=ui,Jn.get=G,Jn.invalidAt=Oi,Jn.isAfter=Ke,Jn.isBefore=Qe,Jn.isBetween=Je,Jn.isSame=$e,Jn.isSameOrAfter=ti,Jn.isSameOrBefore=ei,Jn.isValid=xi,Jn.lang=Un,Jn.locale=ci,Jn.localeData=pi,Jn.max=Fn,Jn.min=Bn,Jn.parsingFlags=ki,Jn.set=V,Jn.startOf=fi,Jn.subtract=Vn,Jn.toArray=bi,Jn.toObject=_i,Jn.toDate=yi,Jn.toISOString=si,Jn.inspect=ri,Jn.toJSON=wi,Jn.toString=ni,Jn.unix=gi,Jn.valueOf=vi,Jn.creationData=Di,Jn.year=yn,Jn.isLeapYear=yt,Jn.weekYear=Si,Jn.isoWeekYear=Ci,Jn.quarter=Jn.quarters=Ni,Jn.month=ut,Jn.daysInMonth=ct,Jn.week=Jn.weeks=Ct,Jn.isoWeek=Jn.isoWeeks=Tt,Jn.weeksInYear=Ei,Jn.isoWeeksInYear=Ti,Jn.date=qn,Jn.day=Jn.days=At,Jn.weekday=Bt,Jn.isoWeekday=Ft,Jn.dayOfYear=zi,Jn.hour=Jn.hours=Cn,Jn.minute=Jn.minutes=Xn,Jn.second=Jn.seconds=Zn,Jn.millisecond=Jn.milliseconds=Qn,Jn.utcOffset=Ee,Jn.utc=Ie,Jn.local=Ne,Jn.parseZone=ze,Jn.hasAlignedHourOffset=Re,Jn.isDST=Le,Jn.isLocal=Be,Jn.isUtcOffset=Fe,Jn.isUtc=He,Jn.isUTC=He,Jn.zoneAbbr=Li,Jn.zoneName=Ai,Jn.dates=O("dates accessor is deprecated. Use date instead.",qn),Jn.months=O("months accessor is deprecated. Use month instead",ut),Jn.years=O("years accessor is deprecated. Use year instead",yn),Jn.zone=O("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",Pe),Jn.isDSTShifted=O("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",Ae);var $n=T.prototype;$n.calendar=E,$n.longDateFormat=P,$n.invalidDate=I,$n.ordinal=N,$n.preparse=Hi,$n.postformat=Hi,$n.relativeTime=z,$n.pastFuture=R,$n.set=S,$n.months=rt,$n.monthsShort=at,$n.monthsParse=dt,$n.monthsRegex=ft,$n.monthsShortRegex=pt,$n.week=Dt,$n.firstDayOfYear=St,$n.firstDayOfWeek=Mt,$n.weekdays=It,$n.weekdaysMin=zt,$n.weekdaysShort=Nt,$n.weekdaysParse=Lt,$n.weekdaysRegex=Ht,$n.weekdaysShortRegex=jt,$n.weekdaysMinRegex=Wt,$n.isPM=Xt,$n.meridiem=Zt,$t("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,i=1===w(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),e.lang=O("moment.lang is deprecated. Use moment.locale instead.",$t),e.langData=O("moment.langData is deprecated. Use moment.localeData instead.",ie);var ts=Math.abs,es=so("ms"),is=so("s"),os=so("m"),ns=so("h"),ss=so("d"),rs=so("w"),as=so("M"),hs=so("y"),ds=ao("milliseconds"),ls=ao("seconds"),us=ao("minutes"),cs=ao("hours"),ps=ao("days"),fs=ao("months"),ms=ao("years"),vs=Math.round,gs={s:45,m:45,h:22,d:26,M:11},ys=Math.abs,bs=ke.prototype;return bs.abs=Zi,bs.add=Qi,bs.subtract=Ji,bs.as=oo,bs.asMilliseconds=es,bs.asSeconds=is,bs.asMinutes=os,bs.asHours=ns,bs.asDays=ss,bs.asWeeks=rs,bs.asMonths=as,bs.asYears=hs,bs.valueOf=no,bs._bubble=to,bs.get=ro,bs.milliseconds=ds,bs.seconds=ls,bs.minutes=us,bs.hours=cs,bs.days=ps,bs.weeks=ho,bs.months=fs,bs.years=ms,bs.humanize=fo,bs.toISOString=mo,bs.toString=mo,bs.toJSON=mo,bs.locale=ci,bs.localeData=pi,bs.toIsoString=O("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",mo),bs.lang=Un,q("X",0,0,"unix"),q("x",0,0,"valueOf"),J("x",Zo),J("X",Jo),it("X",function(t,e,i){i._d=new Date(1e3*parseFloat(t,10))}),it("x",function(t,e,i){i._d=new Date(w(t))}),e.version="2.17.1",i(be),e.fn=Jn,e.min=we,e.max=xe,e.now=Hn,e.utc=u,e.unix=Bi,e.months=Gi,e.isDate=a,e.locale=$t,e.invalid=m,e.duration=je,e.isMoment=b,e.weekdays=Ui,e.parseZone=Fi,e.localeData=ie,e.isDuration=Oe,e.monthsShort=Vi,e.weekdaysMin=Xi,e.defineLocale=te,e.updateLocale=ee,e.locales=oe,e.weekdaysShort=qi,e.normalizeUnits=A,e.relativeTimeRounding=co,e.relativeTimeThreshold=po,e.calendarFormat=qe,e.prototype=Jn,e})}).call(e,i(86)(t))},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}},function(t,e){function i(t){throw new Error("Cannot find module '"+t+"'.")}i.keys=function(){return[]},i.resolve=i,t.exports=i,i.id=87},function(t,e){(function(e){function i(t,e,i){var o=e&&i||0,n=0;for(e=e||[],t.toLowerCase().replace(/[0-9a-f]{2}/g,function(t){n<16&&(e[o+n++]=u[t])});n<16;)e[o+n++]=0;return e}function o(t,e){var i=e||0,o=l;return o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+"-"+o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]+o[t[i++]]}function n(t,e,i){var n=e&&i||0,s=e||[];t=t||{};var r=void 0!==t.clockseq?t.clockseq:m,a=void 0!==t.msecs?t.msecs:(new Date).getTime(),h=void 0!==t.nsecs?t.nsecs:g+1,d=a-v+(h-g)/1e4;if(d<0&&void 0===t.clockseq&&(r=r+1&16383),(d<0||a>v)&&void 0===t.nsecs&&(h=0),h>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");v=a,g=h,m=r,a+=122192928e5;var l=(1e4*(268435455&a)+h)%4294967296;s[n++]=l>>>24&255,s[n++]=l>>>16&255,s[n++]=l>>>8&255,s[n++]=255&l;var u=a/4294967296*1e4&268435455;s[n++]=u>>>8&255,s[n++]=255&u,s[n++]=u>>>24&15|16,s[n++]=u>>>16&255,s[n++]=r>>>8|128,s[n++]=255&r;for(var c=t.node||f,p=0;p<6;p++)s[n+p]=c[p];return e?e:o(s)}function s(t,e,i){var n=e&&i||0;"string"==typeof t&&(e="binary"==t?new Array(16):null,t=null),t=t||{};var s=t.random||(t.rng||r)();if(s[6]=15&s[6]|64,s[8]=63&s[8]|128,e)for(var a=0;a<16;a++)e[n+a]=s[a];return e||o(s)}var r,a="undefined"!=typeof window?window:"undefined"!=typeof e?e:null;if(a&&a.crypto&&crypto.getRandomValues){var h=new Uint8Array(16);r=function(){return crypto.getRandomValues(h),h}}if(!r){var d=new Array(16);r=function(){for(var t,e=0;e<16;e++)0===(3&e)&&(t=4294967296*Math.random()),d[e]=t>>>((3&e)<<3)&255;return d}}for(var l=[],u={},c=0;c<256;c++)l[c]=(c+256).toString(16).substr(1),u[l[c]]=c;var p=r(),f=[1|p[0],p[1],p[2],p[3],p[4],p[5]],m=16383&(p[6]<<8|p[7]),v=0,g=0,y=s;y.v1=n,y.v4=s,y.parse=i,y.unparse=o,t.exports=y}).call(e,function(){return this}())},function(t,e,i){e.util=i(1),e.DOMutil=i(90),e.DataSet=i(91),e.DataView=i(93),e.Queue=i(92),e.Graph3d=i(94),e.graph3d={Camera:i(98),Filter:i(103),Point2d:i(97),Point3d:i(96),Slider:i(104),StepNumber:i(105)},e.moment=i(84),e.Hammer=i(108),e.keycharm=i(111)},function(t,e){e.prepareElements=function(t){for(var e in t)t.hasOwnProperty(e)&&(t[e].redundant=t[e].used,t[e].used=[])},e.cleanupElements=function(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e].redundant){for(var i=0;i0?(o=e[t].redundant[0],e[t].redundant.shift()):(o=document.createElementNS("http://www.w3.org/2000/svg",t),i.appendChild(o)):(o=document.createElementNS("http://www.w3.org/2000/svg",t),e[t]={used:[],redundant:[]},i.appendChild(o)),e[t].used.push(o),o},e.getDOMElement=function(t,e,i,o){var n;return e.hasOwnProperty(t)?e[t].redundant.length>0?(n=e[t].redundant[0],e[t].redundant.shift()):(n=document.createElement(t),void 0!==o?i.insertBefore(n,o):i.appendChild(n)):(n=document.createElement(t),e[t]={used:[],redundant:[]},void 0!==o?i.insertBefore(n,o):i.appendChild(n)),e[t].used.push(n),n},e.drawPoint=function(t,i,o,n,s,r){var a;if("circle"==o.style?(a=e.getSVGElement("circle",n,s),a.setAttributeNS(null,"cx",t),a.setAttributeNS(null,"cy",i),a.setAttributeNS(null,"r",.5*o.size)):(a=e.getSVGElement("rect",n,s),a.setAttributeNS(null,"x",t-.5*o.size),a.setAttributeNS(null,"y",i-.5*o.size),a.setAttributeNS(null,"width",o.size),a.setAttributeNS(null,"height",o.size)),void 0!==o.styles&&a.setAttributeNS(null,"style",o.styles),a.setAttributeNS(null,"class",o.className+" vis-point"),r){var h=e.getSVGElement("text",n,s);r.xOffset&&(t+=r.xOffset),r.yOffset&&(i+=r.yOffset),r.content&&(h.textContent=r.content),r.className&&h.setAttributeNS(null,"class",r.className+" vis-label"),h.setAttributeNS(null,"x",t),h.setAttributeNS(null,"y",i)}return a},e.drawBar=function(t,i,o,n,s,r,a,h){if(0!=n){n<0&&(n*=-1,i-=n);var d=e.getSVGElement("rect",r,a);d.setAttributeNS(null,"x",t-.5*o),d.setAttributeNS(null,"y",i),d.setAttributeNS(null,"width",o),d.setAttributeNS(null,"height",n),d.setAttributeNS(null,"class",s),h&&d.setAttributeNS(null,"style",h)}}},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}function n(t,e){if(t&&!Array.isArray(t)&&(e=t,t=null),this._options=e||{},this._data={},this.length=0,this._fieldId=this._options.fieldId||"id",this._type={},this._options.type)for(var i=(0,l.default)(this._options.type),o=0,n=i.length;on?1:or)&&(s=h,r=d)}return s},n.prototype.min=function(t){var e,i,o=this._data,n=(0,l.default)(o),s=null,r=null;for(e=0,i=n.length;ethis.max&&this.flush(),clearTimeout(this._timeout),this.queue.length>0&&"number"==typeof this.delay){var t=this;this._timeout=setTimeout(function(){t.flush()},this.delay)}},i.prototype.flush=function(){for(;this._queue.length>0;){var t=this._queue.shift();t.fn.apply(t.context||t.fn,t.args||[])}},t.exports=i},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}function n(t,e){this._data=null,this._ids={},this.length=0,this._options=e||{},this._fieldId="id",this._subscribers={};var i=this;this.listener=function(){i._onEvent.apply(i,arguments)},this.setData(t)}var s=i(58),r=o(s),a=i(1),h=i(91);n.prototype.setData=function(t){var e,i,o,n,s;if(this._data){for(this._data.off&&this._data.off("*",this.listener),e=this._data.getIds({filter:this._options&&this._options.filter}),s=[],o=0,n=e.length;o0&&(h[n-1].pointNext=r),h.push(r);return h},o.prototype.create=function(){for(;this.containerElement.hasChildNodes();)this.containerElement.removeChild(this.containerElement.firstChild);this.frame=document.createElement("div"),this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas);var t=document.createElement("DIV");t.style.color="red",t.style.fontWeight="bold",t.style.padding="10px",t.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(t),this.frame.filter=document.createElement("div"),this.frame.filter.style.position="absolute",this.frame.filter.style.bottom="0px",this.frame.filter.style.left="0px",this.frame.filter.style.width="100%",this.frame.appendChild(this.frame.filter);var e=this,i=function(t){e._onMouseDown(t)},o=function(t){e._onTouchStart(t)},n=function(t){e._onWheel(t)},s=function(t){e._onTooltip(t)},r=function(t){e._onClick(t)};d.addEventListener(this.frame.canvas,"keydown",onkeydown),d.addEventListener(this.frame.canvas,"mousedown",i),d.addEventListener(this.frame.canvas,"touchstart",o),d.addEventListener(this.frame.canvas,"mousewheel",n),d.addEventListener(this.frame.canvas,"mousemove",s),d.addEventListener(this.frame.canvas,"click",r),this.containerElement.appendChild(this.frame)},o.prototype._setSize=function(t,e){this.frame.style.width=t,this.frame.style.height=e,this._resizeCanvas()},o.prototype._resizeCanvas=function(){this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=this.frame.canvas.clientWidth,this.frame.canvas.height=this.frame.canvas.clientHeight,this.frame.filter.style.width=this.frame.canvas.clientWidth-20+"px"},o.prototype.animationStart=function(){if(!this.frame.filter||!this.frame.filter.slider)throw new Error("No animation available");this.frame.filter.slider.play()},o.prototype.animationStop=function(){this.frame.filter&&this.frame.filter.slider&&this.frame.filter.slider.stop()},o.prototype._resizeCenter=function(){"%"===this.xCenter.charAt(this.xCenter.length-1)?this.currentXCenter=parseFloat(this.xCenter)/100*this.frame.canvas.clientWidth:this.currentXCenter=parseFloat(this.xCenter),"%"===this.yCenter.charAt(this.yCenter.length-1)?this.currentYCenter=parseFloat(this.yCenter)/100*(this.frame.canvas.clientHeight-this.frame.filter.clientHeight):this.currentYCenter=parseFloat(this.yCenter)},o.prototype.getCameraPosition=function(){var t=this.camera.getArmRotation();return t.distance=this.camera.getArmLength(),t},o.prototype._readData=function(t){this._dataInitialize(t,this.style),this.dataFilter?this.dataPoints=this.dataFilter._getDataPoints():this.dataPoints=this._getDataPoints(this.dataTable),this._redrawFilter()},o.prototype.setData=function(t){this._readData(t),this.redraw(),this.animationAutoStart&&this.dataFilter&&this.animationStart()},o.prototype.setOptions=function(t){this.animationStop(),v.setOptions(t,this),this.setPointDrawingMethod(),this._setSize(this.width,this.height),this.dataTable&&this.setData(this.dataTable),this.animationAutoStart&&this.dataFilter&&this.animationStart()},o.prototype.setPointDrawingMethod=function(){var t=void 0;switch(this.style){case o.STYLE.BAR:t=o.prototype._redrawBarGraphPoint;break;case o.STYLE.BARCOLOR:t=o.prototype._redrawBarColorGraphPoint;break;case o.STYLE.BARSIZE:t=o.prototype._redrawBarSizeGraphPoint;break;case o.STYLE.DOT:t=o.prototype._redrawDotGraphPoint;break;case o.STYLE.DOTLINE:t=o.prototype._redrawDotLineGraphPoint;break;case o.STYLE.DOTCOLOR:t=o.prototype._redrawDotColorGraphPoint;break;case o.STYLE.DOTSIZE:t=o.prototype._redrawDotSizeGraphPoint;break;case o.STYLE.SURFACE:t=o.prototype._redrawSurfaceGraphPoint;break;case o.STYLE.GRID:t=o.prototype._redrawGridGraphPoint;break;case o.STYLE.LINE:t=o.prototype._redrawLineGraphPoint;break;default:throw new Error("Can not determine point drawing method for graph style '"+this.style+"'")}this._pointDrawingMethod=t},o.prototype.redraw=function(){if(void 0===this.dataPoints)throw new Error("Graph data not initialized");this._resizeCanvas(),this._resizeCenter(),this._redrawSlider(),this._redrawClear(),this._redrawAxis(),this._redrawDataGraph(),this._redrawInfo(),this._redrawLegend()},o.prototype._getContext=function(){var t=this.frame.canvas,e=t.getContext("2d");return e.lineJoin="round",e.lineCap="round",e},o.prototype._redrawClear=function(){var t=this.frame.canvas,e=t.getContext("2d");e.clearRect(0,0,t.width,t.height)},o.prototype._dotSize=function(){return this.frame.clientWidth*this.dotSizeRatio},o.prototype._getLegendWidth=function(){var t;if(this.style===o.STYLE.DOTSIZE){var e=this._dotSize();t=e/2+2*e}else t=this.style===o.STYLE.BARSIZE?this.xBarWidth:20;return t},o.prototype._redrawLegend=function(){if(this.showLegend===!0&&this.style!==o.STYLE.LINE&&this.style!==o.STYLE.BARSIZE){var t=this.style===o.STYLE.BARSIZE||this.style===o.STYLE.DOTSIZE,e=this.style===o.STYLE.DOTSIZE||this.style===o.STYLE.DOTCOLOR||this.style===o.STYLE.BARCOLOR,i=Math.max(.25*this.frame.clientHeight,100),n=this.margin,s=this._getLegendWidth(),r=this.frame.clientWidth-this.margin,a=r-s,h=n+i,d=this._getContext();if(d.lineWidth=1,d.font="14px arial",t===!1){var l,c=0,p=i;for(l=c;l0?(t.textAlign="center",t.textBaseline="top",s.y+=n):Math.sin(2*o)<0?(t.textAlign="right",t.textBaseline="middle"):(t.textAlign="left",t.textBaseline="middle"),t.fillStyle=this.axisColor,t.fillText(i,s.x,s.y)},o.prototype.drawAxisLabelY=function(t,e,i,o,n){void 0===n&&(n=0);var s=this._convert3Dto2D(e);Math.cos(2*o)<0?(t.textAlign="center",t.textBaseline="top",s.y+=n):Math.sin(2*o)>0?(t.textAlign="right",t.textBaseline="middle"):(t.textAlign="left",t.textBaseline="middle"),t.fillStyle=this.axisColor,t.fillText(i,s.x,s.y)},o.prototype.drawAxisLabelZ=function(t,e,i,o){void 0===o&&(o=0);var n=this._convert3Dto2D(e);t.textAlign="right",t.textBaseline="middle",t.fillStyle=this.axisColor,t.fillText(i,n.x-o,n.y)},o.prototype._line3d=function(t,e,i,o){var n=this._convert3Dto2D(e),s=this._convert3Dto2D(i);this._line(t,n,s,o)},o.prototype._redrawAxis=function(){var t,e,i,o,n,s,r,a,h,d,c,p=this._getContext();p.font=24/this.camera.getArmLength()+"px arial";var m=.025/this.scale.x,v=.025/this.scale.y,g=5/this.camera.getArmLength(),y=this.camera.getArmRotation().horizontal,b=new u(Math.cos(y),Math.sin(y)),_=this.xRange,w=this.yRange,x=this.zRange;for(p.lineWidth=1,o=void 0===this.defaultXStep,i=new f(_.min,_.max,this.xStep,o),i.start(!0);!i.end();){var k=i.getCurrent();this.showGrid?(t=new l(k,w.min,x.min),e=new l(k,w.max,x.min),this._line3d(p,t,e,this.gridColor)):(t=new l(k,w.min,x.min),e=new l(k,w.min+m,x.min),this._line3d(p,t,e,this.axisColor),t=new l(k,w.max,x.min),e=new l(k,w.max-m,x.min),this._line3d(p,t,e,this.axisColor)),r=b.x>0?w.min:w.max;var O=new l(k,r,x.min),D=" "+this.xValueLabel(k)+" ";this.drawAxisLabelX(p,O,D,y,g),i.next()}for(p.lineWidth=1,o=void 0===this.defaultYStep,i=new f(w.min,w.max,this.yStep,o),i.start(!0);!i.end();){var M=i.getCurrent();this.showGrid?(t=new l(_.min,M,x.min),e=new l(_.max,M,x.min),this._line3d(p,t,e,this.gridColor)):(t=new l(_.min,M,x.min),e=new l(_.min+v,M,x.min),this._line3d(p,t,e,this.axisColor),t=new l(_.max,M,x.min),e=new l(_.max-v,M,x.min),this._line3d(p,t,e,this.axisColor)),s=b.y>0?_.min:_.max,O=new l(s,M,x.min);var D=" "+this.yValueLabel(M)+" ";this.drawAxisLabelY(p,O,D,y,g),i.next()}for(p.lineWidth=1,o=void 0===this.defaultZStep,i=new f(x.min,x.max,this.zStep,o),i.start(!0),s=b.x>0?_.min:_.max,r=b.y<0?w.min:w.max;!i.end();){var S=i.getCurrent(),C=new l(s,r,S),T=this._convert3Dto2D(C);e=new u(T.x-g,T.y),this._line(p,T,e,this.axisColor);var D=this.zValueLabel(S)+" ";this.drawAxisLabelZ(p,C,D,5),i.next()}p.lineWidth=1,t=new l(s,r,x.min),e=new l(s,r,x.max),this._line3d(p,t,e,this.axisColor);var E,P;p.lineWidth=1,E=new l(_.min,w.min,x.min),P=new l(_.max,w.min,x.min),this._line3d(p,E,P,this.axisColor),E=new l(_.min,w.max,x.min),P=new l(_.max,w.max,x.min),this._line3d(p,E,P,this.axisColor),p.lineWidth=1,t=new l(_.min,w.min,x.min),e=new l(_.min,w.max,x.min),this._line3d(p,t,e,this.axisColor),t=new l(_.max,w.min,x.min),e=new l(_.max,w.max,x.min),this._line3d(p,t,e,this.axisColor);var I=this.xLabel;I.length>0&&(c=.1/this.scale.y,s=(_.max+3*_.min)/4,r=b.x>0?w.min-c:w.max+c,n=new l(s,r,x.min),this.drawAxisLabelX(p,n,I,y));var N=this.yLabel;N.length>0&&(d=.1/this.scale.x,s=b.y>0?_.min-d:_.max+d,r=(w.max+3*w.min)/4,n=new l(s,r,x.min),this.drawAxisLabelY(p,n,N,y));var z=this.zLabel;z.length>0&&(h=30,s=b.x>0?_.min:_.max,r=b.y<0?w.min:w.max,a=(x.max+3*x.min)/4,n=new l(s,r,a),this.drawAxisLabelZ(p,n,z,h))},o.prototype._hsv2rgb=function(t,e,i){var o,n,s,r,a,h;switch(r=i*e,a=Math.floor(t/60),h=r*(1-Math.abs(t/60%2-1)),a){case 0:o=r,n=h,s=0;break;case 1:o=h,n=r,s=0;break;case 2:o=0,n=r,s=h;break;case 3:o=0,n=h,s=r;break;case 4:o=h,n=0,s=r;break;case 5:o=r,n=0,s=h;break;default:o=0,n=0,s=0}return"RGB("+parseInt(255*o)+","+parseInt(255*n)+","+parseInt(255*s)+")"},o.prototype._getStrokeWidth=function(t){return void 0!==t?this.showPerspective?1/-t.trans.z*this.dataColor.strokeWidth:-(this.eye.z/this.camera.getArmLength())*this.dataColor.strokeWidth:this.dataColor.strokeWidth},o.prototype._redrawBar=function(t,e,i,o,n,s){var r,a,h=this,d=e.point,u=this.zRange.min,c=[{point:new l(d.x-i,d.y-o,d.z)},{point:new l(d.x+i,d.y-o,d.z)},{point:new l(d.x+i,d.y+o,d.z)},{point:new l(d.x-i,d.y+o,d.z)}],p=[{point:new l(d.x-i,d.y-o,u)},{point:new l(d.x+i,d.y-o,u)},{point:new l(d.x+i,d.y+o,u)},{point:new l(d.x-i,d.y+o,u)}];c.forEach(function(t){t.screen=h._convert3Dto2D(t.point)}),p.forEach(function(t){t.screen=h._convert3Dto2D(t.point)});var f=[{corners:c,center:l.avg(p[0].point,p[2].point)},{corners:[c[0],c[1],p[1],p[0]],center:l.avg(p[1].point,p[0].point)},{corners:[c[1],c[2],p[2],p[1]],center:l.avg(p[2].point,p[1].point)},{corners:[c[2],c[3],p[3],p[2]],center:l.avg(p[3].point,p[2].point)},{corners:[c[3],c[0],p[0],p[3]],center:l.avg(p[0].point,p[3].point)}];for(e.surfaces=f,r=0;r0}if(a){var p,f=(e.point.z+i.point.z+o.point.z+n.point.z)/4,m=240*(1-(f-this.zRange.min)*this.scale.z/this.verticalRatio),v=1;this.showShadow?(p=Math.min(1+u.x/c/2,1),s=this._hsv2rgb(m,v,p),r=s):(p=1,s=this._hsv2rgb(m,v,p),r=this.axisColor)}else s="gray",r=this.axisColor;t.lineWidth=this._getStrokeWidth(e);var g=[e,i,n,o];this._polygon(t,g,s,r)}},o.prototype._drawGridLine=function(t,e,i){if(void 0!==e&&void 0!==i){var o=(e.point.z+i.point.z)/2,n=240*(1-(o-this.zRange.min)*this.scale.z/this.verticalRatio);t.lineWidth=2*this._getStrokeWidth(e),t.strokeStyle=this._hsv2rgb(n,1,1),this._line(t,e.screen,i.screen)}},o.prototype._redrawGridGraphPoint=function(t,e){this._drawGridLine(t,e,e.pointRight),this._drawGridLine(t,e,e.pointTop)},o.prototype._redrawLineGraphPoint=function(t,e){void 0!==e.pointNext&&(t.lineWidth=this._getStrokeWidth(e),t.strokeStyle=this.dataColor.stroke,this._line(t,e.screen,e.pointNext.screen))},o.prototype._redrawDataGraph=function(){var t,e=this._getContext();if(!(void 0===this.dataPoints||this.dataPoints.length<=0))for(this._calcTranslations(this.dataPoints),t=0;t0?1:t<0?-1:0}var o=e[0],n=e[1],s=e[2],r=i((n.x-o.x)*(t.y-o.y)-(n.y-o.y)*(t.x-o.x)),a=i((s.x-n.x)*(t.y-n.y)-(s.y-n.y)*(t.x-n.x)),h=i((o.x-s.x)*(t.y-s.y)-(o.y-s.y)*(t.x-s.x));return!(0!=r&&0!=a&&r!=a||0!=a&&0!=h&&a!=h||0!=r&&0!=h&&r!=h)},o.prototype._dataPointFromXY=function(t,e){var i,n=100,s=null,r=null,a=null,h=new u(t,e);if(this.style===o.STYLE.BAR||this.style===o.STYLE.BARCOLOR||this.style===o.STYLE.BARSIZE)for(i=this.dataPoints.length-1;i>=0;i--){s=this.dataPoints[i];var d=s.surfaces;if(d)for(var l=d.length-1;l>=0;l--){var c=d[l],p=c.corners,f=[p[0].screen,p[1].screen,p[2].screen],m=[p[2].screen,p[3].screen,p[0].screen];if(this._insideTriangle(h,f)||this._insideTriangle(h,m))return s}}else for(i=0;i"+this.xLabel+":"+t.point.x+""+this.yLabel+":"+t.point.y+""+this.zLabel+":"+t.point.z+"",e.style.left="0",e.style.top="0",this.frame.appendChild(e),this.frame.appendChild(i),this.frame.appendChild(o);var n=e.offsetWidth,s=e.offsetHeight,r=i.offsetHeight,a=o.offsetWidth,h=o.offsetHeight,d=t.screen.x-n/2;d=Math.min(Math.max(d,10),this.frame.clientWidth-10-n),i.style.left=t.screen.x+"px",i.style.top=t.screen.y-r+"px",e.style.left=d+"px",e.style.top=t.screen.y-r-s+"px",o.style.left=t.screen.x-a/2+"px",o.style.top=t.screen.y-h/2+"px"},o.prototype._hideTooltip=function(){if(this.tooltip){this.tooltip.dataPoint=null;for(var t in this.tooltip.dom)if(this.tooltip.dom.hasOwnProperty(t)){var e=this.tooltip.dom[t];e&&e.parentNode&&e.parentNode.removeChild(e)}}},o.prototype.setCameraPosition=function(t){v.setCameraPosition(t,this),this.redraw()},o.prototype.setSize=function(t,e){this._setSize(t,e),this.redraw()},t.exports=o},function(t,e){function i(t){if(t)return o(t)}function o(t){for(var e in i.prototype)t[e]=i.prototype[e];return t}t.exports=i,i.prototype.on=i.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},i.prototype.once=function(t,e){function i(){o.off(t,i),e.apply(this,arguments)}var o=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},i.prototype.off=i.prototype.removeListener=i.prototype.removeAllListeners=i.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var o,n=0;ns&&(t=o(t)*s),i(e)>s&&(e=o(e)*s),this.cameraOffset.x=t,this.cameraOffset.y=e,this.calculateCameraOrientation()},n.prototype.getOffset=function(t,e){return this.cameraOffset},n.prototype.setArmLocation=function(t,e,i){this.armLocation.x=t,this.armLocation.y=e,this.armLocation.z=i,this.calculateCameraOrientation()},n.prototype.setArmRotation=function(t,e){void 0!==t&&(this.armRotation.horizontal=t),void 0!==e&&(this.armRotation.vertical=e,this.armRotation.vertical<0&&(this.armRotation.vertical=0),this.armRotation.vertical>.5*Math.PI&&(this.armRotation.vertical=.5*Math.PI)),void 0===t&&void 0===e||this.calculateCameraOrientation()},n.prototype.getArmRotation=function(){var t={};return t.horizontal=this.armRotation.horizontal,t.vertical=this.armRotation.vertical,t},n.prototype.setArmLength=function(t){void 0!==t&&(this.armLength=t,this.armLength<.71&&(this.armLength=.71),this.armLength>5&&(this.armLength=5),this.setOffset(this.cameraOffset.x,this.cameraOffset.y),this.calculateCameraOrientation())},n.prototype.getArmLength=function(){return this.armLength},n.prototype.getCameraLocation=function(){return this.cameraLocation},n.prototype.getCameraRotation=function(){return this.cameraRotation},n.prototype.calculateCameraOrientation=function(){this.cameraLocation.x=this.armLocation.x-this.armLength*Math.sin(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.y=this.armLocation.y-this.armLength*Math.cos(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.z=this.armLocation.z+this.armLength*Math.sin(this.armRotation.vertical),this.cameraRotation.x=Math.PI/2-this.armRotation.vertical,this.cameraRotation.y=0,this.cameraRotation.z=-this.armRotation.horizontal;var t=this.cameraRotation.x,e=(this.cameraRotation.y,this.cameraRotation.z),i=this.cameraOffset.x,o=this.cameraOffset.y,n=Math.sin,s=Math.cos;this.cameraLocation.x=this.cameraLocation.x+i*s(e)+o*-n(e)*s(t),this.cameraLocation.y=this.cameraLocation.y+i*n(e)+o*s(e)*s(t),this.cameraLocation.z=this.cameraLocation.z+o*n(t)},t.exports=n},function(t,e,i){t.exports={default:i(100),__esModule:!0}},function(t,e,i){i(101),t.exports=i(17).Math.sign},function(t,e,i){var o=i(15);o(o.S,"Math",{sign:i(102)})},function(t,e){t.exports=Math.sign||function(t){return 0==(t=+t)||t!=t?t:t<0?-1:1}},function(t,e,i){function o(t,e,i){this.data=t,this.column=e,this.graph=i,this.index=void 0,this.value=void 0,this.values=i.getDistinctValues(t.get(),this.column),this.values.sort(function(t,e){return t>e?1:t0&&this.selectValue(0),this.dataPoints=[],this.loaded=!1,this.onLoadCallback=void 0,i.animationPreload?(this.loaded=!1,this.loadInBackground()):this.loaded=!0}var n=i(93);o.prototype.isLoaded=function(){return this.loaded},o.prototype.getLoadedProgress=function(){for(var t=this.values.length,e=0;this.dataPoints[e];)e++;return Math.round(e/t*100)},o.prototype.getLabel=function(){return this.graph.filterLabel},o.prototype.getColumn=function(){return this.column},o.prototype.getSelectedValue=function(){if(void 0!==this.index)return this.values[this.index]},o.prototype.getValues=function(){return this.values},o.prototype.getValue=function(t){if(t>=this.values.length)throw new Error("Index out of range");return this.values[t]},o.prototype._getDataPoints=function(t){if(void 0===t&&(t=this.index),void 0===t)return[];var e;if(this.dataPoints[t])e=this.dataPoints[t];else{var i={};i.column=this.column,i.value=this.values[t];var o=new n(this.data,{filter:function(t){return t[i.column]==i.value}}).get();e=this.graph._getDataPoints(o),this.dataPoints[t]=e}return e},o.prototype.setOnLoadCallback=function(t){this.onLoadCallback=t},o.prototype.selectValue=function(t){if(t>=this.values.length)throw new Error("Index out of range");this.index=t,this.value=this.values[t]},o.prototype.loadInBackground=function(t){void 0===t&&(t=0);var e=this.graph.frame;if(t0&&(t--,this.setIndex(t))},o.prototype.next=function(){var t=this.getIndex();t0?this.setIndex(0):this.index=void 0},o.prototype.setIndex=function(t){if(!(tthis.values.length-1&&(o=this.values.length-1),o},o.prototype.indexToLeft=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10,i=t/(this.values.length-1)*e,o=i+3;return o},o.prototype._onMouseMove=function(t){var e=t.clientX-this.startClientX,i=this.startSlideX+e,o=this.leftToIndex(i);this.setIndex(o),n.preventDefault()},o.prototype._onMouseUp=function(t){this.frame.style.cursor="auto",n.removeEventListener(document,"mousemove",this.onmousemove),n.removeEventListener(document,"mouseup",this.onmouseup),n.preventDefault()},t.exports=o},function(t,e){function i(t,e,i,o){this._start=0,this._end=0,this._step=1,this.prettyStep=!0,this.precision=5,this._current=0,this.setRange(t,e,i,o)}i.prototype.isNumeric=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},i.prototype.setRange=function(t,e,i,o){if(!this.isNumeric(t))throw new Error("Parameter 'start' is not numeric; value: "+t);if(!this.isNumeric(e))throw new Error("Parameter 'end' is not numeric; value: "+t);if(!this.isNumeric(i))throw new Error("Parameter 'step' is not numeric; value: "+t);this._start=t?t:0,this._end=e?e:0,this.setStep(i,o)},i.prototype.setStep=function(t,e){void 0===t||t<=0||(void 0!==e&&(this.prettyStep=e),this.prettyStep===!0?this._step=i.calculatePrettyStep(t):this._step=t)},i.calculatePrettyStep=function(t){var e=function(t){return Math.log(t)/Math.LN10},i=Math.pow(10,Math.round(e(t))),o=2*Math.pow(10,Math.round(e(t/2))),n=5*Math.pow(10,Math.round(e(t/5))),s=i;return Math.abs(o-t)<=Math.abs(s-t)&&(s=o),Math.abs(n-t)<=Math.abs(s-t)&&(s=n),s<=0&&(s=1),s},i.prototype.getCurrent=function(){return parseFloat(this._current.toPrecision(this.precision))},i.prototype.getStep=function(){return this._step},i.prototype.start=function(t){void 0===t&&(t=!1),this._current=this._start-this._start%this._step,t&&this.getCurrent()this._end},t.exports=i},function(t,e){function i(){this.min=void 0,this.max=void 0}i.prototype.adjust=function(t){void 0!==t&&((void 0===this.min||this.min>t)&&(this.min=t),(void 0===this.max||this.maxi)throw new Error("Passed expansion value makes range invalid");this.min=e,this.max=i}},i.prototype.range=function(){return this.max-this.min},i.prototype.center=function(){return(this.min+this.max)/2},t.exports=i},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}function n(t){for(var e in t)if(t.hasOwnProperty(e))return!1;return!0}function s(t){return void 0===t||""===t||"string"!=typeof t?t:t.charAt(0).toUpperCase()+t.slice(1)}function r(t,e){return void 0===t||""===t?e:t+s(e)}function a(t,e,i,o){var n,s;for(var a in i)n=i[a],s=r(o,n),e[s]=t[n]}function h(t,e,i,o){var n,s;for(var a in i)n=i[a],void 0!==t[n]&&(s=r(o,n),e[s]=t[n])}function d(t,e){if(void 0===t||n(t))throw new Error("No DEFAULTS passed");if(void 0===e)throw new Error("No dst passed");S=t,a(t,e,D),a(t,e,M,"default"),u(t,e),e.margin=10,e.showGrayBottom=!1,e.showTooltip=!1,e.onclick_callback=null,e.eye=new x(0,0,-1)}function l(t,e){if(void 0!==t){if(void 0===e)throw new Error("No dst passed");if(void 0===S||n(S))throw new Error("DEFAULTS not set for module Settings");h(t,e,D),h(t,e,M,"default"),u(t,e)}}function u(t,e){void 0!==t.backgroundColor&&v(t.backgroundColor,e),g(t.dataColor,e),m(t.style,e),c(t.showLegend,e),y(t.cameraPosition,e),void 0!==t.tooltip&&(e.showTooltip=t.tooltip),void 0!=t.onclick&&(e.onclick_callback=t.onclick)}function c(t,e){if(void 0===t){var i=void 0===S.showLegend;if(i){var o=e.style===k.DOTCOLOR||e.style===k.DOTSIZE;e.showLegend=o}}else e.showLegend=t}function p(t){var e=O[t];return void 0===e?-1:e}function f(t){var e=!1;for(var i in k)if(k[i]===t){e=!0;break}return e}function m(t,e){if(void 0!==t){var i;if("string"==typeof t){if(i=p(t),i===-1)throw new Error("Style '"+t+"' is invalid")}else{if(!f(t))throw new Error("Style '"+t+"' is invalid");i=t}e.style=i}}function v(t,e){var i="white",o="gray",n=1;if("string"==typeof t)i=t,o="none",n=0;else{if("object"!==("undefined"==typeof t?"undefined":(0,_.default)(t)))throw new Error("Unsupported type of backgroundColor");void 0!==t.fill&&(i=t.fill),void 0!==t.stroke&&(o=t.stroke),void 0!==t.strokeWidth&&(n=t.strokeWidth)}e.frame.style.backgroundColor=i,e.frame.style.borderColor=o,e.frame.style.borderWidth=n+"px",e.frame.style.borderStyle="solid"}function g(t,e){void 0!==t&&(void 0===e.dataColor&&(e.dataColor={}),"string"==typeof t?(e.dataColor.fill=t,e.dataColor.stroke=t):(t.fill&&(e.dataColor.fill=t.fill),t.stroke&&(e.dataColor.stroke=t.stroke),void 0!==t.strokeWidth&&(e.dataColor.strokeWidth=t.strokeWidth)))}function y(t,e){var i=t;void 0!==i&&(void 0===e.camera&&(e.camera=new w),e.camera.setArmRotation(i.horizontal,i.vertical),e.camera.setArmLength(i.distance))}var b=i(62),_=o(b),w=i(98),x=i(96),k={BAR:0,BARCOLOR:1,BARSIZE:2,DOT:3,DOTLINE:4,DOTCOLOR:5,DOTSIZE:6,GRID:7,LINE:8,SURFACE:9},O={dot:k.DOT,"dot-line":k.DOTLINE,"dot-color":k.DOTCOLOR,"dot-size":k.DOTSIZE,line:k.LINE,grid:k.GRID,surface:k.SURFACE,bar:k.BAR,"bar-color":k.BARCOLOR,"bar-size":k.BARSIZE},D=["width","height","filterLabel","legendLabel","xLabel","yLabel","zLabel","xValueLabel","yValueLabel","zValueLabel","showGrid","showPerspective","showShadow","keepAspectRatio","verticalRatio","dotSizeRatio","showAnimationControls","animationInterval","animationPreload","animationAutoStart","axisColor","gridColor","xCenter","yCenter"],M=["xBarWidth","yBarWidth","valueMin","valueMax","xMin","xMax","xStep","yMin","yMax","yStep","zMin","zMax","zStep"],S=void 0;t.exports.STYLE=k,t.exports.setDefaults=d,t.exports.setOptions=l,t.exports.setCameraPosition=y},function(t,e,i){if("undefined"!=typeof window){var o=i(109),n=window.Hammer||i(110);t.exports=o(n,{preventDefault:"mouse"})}else t.exports=function(){throw Error("hammer.js is only available in a browser, not in node.js.")}},function(t,e,i){var o,n,s;!function(i){n=[],o=i,s="function"==typeof o?o.apply(e,n):o,!(void 0!==s&&(t.exports=s))}(function(){var t=null;return function e(i,o){function n(t){return t.match(/[^ ]+/g)}function s(e){if("hammer.input"!==e.type){if(e.srcEvent._handled||(e.srcEvent._handled={}),e.srcEvent._handled[e.type])return;e.srcEvent._handled[e.type]=!0}var i=!1;e.stopPropagation=function(){i=!0};var o=e.srcEvent.stopPropagation.bind(e.srcEvent);"function"==typeof o&&(e.srcEvent.stopPropagation=function(){o(),e.stopPropagation()}),e.firstTarget=t;for(var n=t;n&&!i;){var s=n.hammer;if(s)for(var r,a=0;a0?d._handlers[t]=o:(i.off(t,s),delete d._handlers[t]))}),d},d.emit=function(e,o){t=o.target,i.emit(e,o)},d.destroy=function(){var t=i.element.hammer,e=t.indexOf(d);e!==-1&&t.splice(e,1),t.length||delete i.element.hammer,d._handlers={},i.destroy()},d}})},function(t,e,i){var o;!function(n,s,r,a){function h(t,e,i){return setTimeout(p(t,i),e)}function d(t,e,i){return!!Array.isArray(t)&&(l(t,i[e],i),!0)}function l(t,e,i){var o;if(t)if(t.forEach)t.forEach(e,i);else if(t.length!==a)for(o=0;o\s*\(/gm,"{anonymous}()@"):"Unknown Stack Trace",s=n.console&&(n.console.warn||n.console.log);return s&&s.call(n.console,o,i),t.apply(this,arguments)}}function c(t,e,i){var o,n=e.prototype;o=t.prototype=Object.create(n),o.constructor=t,o._super=n,i&&mt(o,i)}function p(t,e){return function(){return t.apply(e,arguments)}}function f(t,e){return typeof t==yt?t.apply(e?e[0]||a:a,e):t}function m(t,e){return t===a?e:t}function v(t,e,i){l(_(e),function(e){t.addEventListener(e,i,!1)})}function g(t,e,i){l(_(e),function(e){t.removeEventListener(e,i,!1)})}function y(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1}function b(t,e){return t.indexOf(e)>-1}function _(t){return t.trim().split(/\s+/g)}function w(t,e,i){if(t.indexOf&&!i)return t.indexOf(e);for(var o=0;oi[e]}):o.sort()),o}function O(t,e){for(var i,o,n=e[0].toUpperCase()+e.slice(1),s=0;s1&&!i.firstMultiple?i.firstMultiple=N(e):1===n&&(i.firstMultiple=!1);var s=i.firstInput,r=i.firstMultiple,a=r?r.center:s.center,h=e.center=z(o);e.timeStamp=wt(),e.deltaTime=e.timeStamp-s.timeStamp,e.angle=B(a,h),e.distance=A(a,h),P(i,e),e.offsetDirection=L(e.deltaX,e.deltaY);var d=R(e.deltaTime,e.deltaX,e.deltaY);e.overallVelocityX=d.x,e.overallVelocityY=d.y,e.overallVelocity=_t(d.x)>_t(d.y)?d.x:d.y,e.scale=r?H(r.pointers,o):1,e.rotation=r?F(r.pointers,o):0,e.maxPointers=i.prevInput?e.pointers.length>i.prevInput.maxPointers?e.pointers.length:i.prevInput.maxPointers:e.pointers.length,I(i,e);var l=t.element;y(e.srcEvent.target,l)&&(l=e.srcEvent.target),e.target=l}function P(t,e){var i=e.center,o=t.offsetDelta||{},n=t.prevDelta||{},s=t.prevInput||{};e.eventType!==zt&&s.eventType!==Lt||(n=t.prevDelta={x:s.deltaX||0,y:s.deltaY||0},o=t.offsetDelta={x:i.x,y:i.y}),e.deltaX=n.x+(i.x-o.x),e.deltaY=n.y+(i.y-o.y)}function I(t,e){var i,o,n,s,r=t.lastInterval||e,h=e.timeStamp-r.timeStamp;if(e.eventType!=At&&(h>Nt||r.velocity===a)){var d=e.deltaX-r.deltaX,l=e.deltaY-r.deltaY,u=R(h,d,l);o=u.x,n=u.y,i=_t(u.x)>_t(u.y)?u.x:u.y,s=L(d,l),t.lastInterval=e}else i=r.velocity,o=r.velocityX,n=r.velocityY,s=r.direction;e.velocity=i,e.velocityX=o,e.velocityY=n,e.direction=s}function N(t){for(var e=[],i=0;i=_t(e)?t<0?Ft:Ht:e<0?jt:Wt}function A(t,e,i){i||(i=Ut);var o=e[i[0]]-t[i[0]],n=e[i[1]]-t[i[1]];return Math.sqrt(o*o+n*n)}function B(t,e,i){i||(i=Ut);var o=e[i[0]]-t[i[0]],n=e[i[1]]-t[i[1]];return 180*Math.atan2(n,o)/Math.PI}function F(t,e){return B(e[1],e[0],qt)+B(t[1],t[0],qt)}function H(t,e){return A(e[0],e[1],qt)/A(t[0],t[1],qt)}function j(){this.evEl=Zt,this.evWin=Kt,this.pressed=!1,S.apply(this,arguments)}function W(){this.evEl=$t,this.evWin=te,S.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}function Y(){this.evTarget=ie,this.evWin=oe,this.started=!1,S.apply(this,arguments)}function G(t,e){var i=x(t.touches),o=x(t.changedTouches);return e&(Lt|At)&&(i=k(i.concat(o),"identifier",!0)),[i,o]}function V(){this.evTarget=se,this.targetIds={},S.apply(this,arguments)}function U(t,e){var i=x(t.touches),o=this.targetIds;if(e&(zt|Rt)&&1===i.length)return o[i[0].identifier]=!0,[i,i];var n,s,r=x(t.changedTouches),a=[],h=this.target;if(s=i.filter(function(t){return y(t.target,h)}),e===zt)for(n=0;n-1&&o.splice(t,1)};setTimeout(n,re)}}function K(t){for(var e=t.srcEvent.clientX,i=t.srcEvent.clientY,o=0;o-1&&this.requireFail.splice(e,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(t){return!!this.simultaneous[t.id]},emit:function(t){function e(e){i.manager.emit(e,t)}var i=this,o=this.state;o<_e&&e(i.options.event+et(o)),e(i.options.event),t.additionalEvent&&e(t.additionalEvent),o>=_e&&e(i.options.event+et(o))},tryEmit:function(t){return this.canEmit()?this.emit(t):void(this.state=ke)},canEmit:function(){for(var t=0;te.threshold&&n&e.direction},attrTest:function(t){return nt.prototype.attrTest.call(this,t)&&(this.state&ye||!(this.state&ye)&&this.directionTest(t))},emit:function(t){this.pX=t.deltaX,this.pY=t.deltaY;var e=it(t.direction);e&&(t.additionalEvent=this.options.event+e),this._super.emit.call(this,t)}}),c(rt,nt,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[pe]; +},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.scale-1)>this.options.threshold||this.state&ye)},emit:function(t){if(1!==t.scale){var e=t.scale<1?"in":"out";t.additionalEvent=this.options.event+e}this._super.emit.call(this,t)}}),c(at,tt,{defaults:{event:"press",pointers:1,time:251,threshold:9},getTouchAction:function(){return[ue]},process:function(t){var e=this.options,i=t.pointers.length===e.pointers,o=t.distancee.time;if(this._input=t,!o||!i||t.eventType&(Lt|At)&&!n)this.reset();else if(t.eventType&zt)this.reset(),this._timer=h(function(){this.state=we,this.tryEmit()},e.time,this);else if(t.eventType&Lt)return we;return ke},reset:function(){clearTimeout(this._timer)},emit:function(t){this.state===we&&(t&&t.eventType&Lt?this.manager.emit(this.options.event+"up",t):(this._input.timeStamp=wt(),this.manager.emit(this.options.event,this._input)))}}),c(ht,nt,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[pe]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.rotation)>this.options.threshold||this.state&ye)}}),c(dt,nt,{defaults:{event:"swipe",threshold:10,velocity:.3,direction:Yt|Gt,pointers:1},getTouchAction:function(){return st.prototype.getTouchAction.call(this)},attrTest:function(t){var e,i=this.options.direction;return i&(Yt|Gt)?e=t.overallVelocity:i&Yt?e=t.overallVelocityX:i&Gt&&(e=t.overallVelocityY),this._super.attrTest.call(this,t)&&i&t.offsetDirection&&t.distance>this.options.threshold&&t.maxPointers==this.options.pointers&&_t(e)>this.options.velocity&&t.eventType&Lt},emit:function(t){var e=it(t.offsetDirection);e&&this.manager.emit(this.options.event+e,t),this.manager.emit(this.options.event,t)}}),c(lt,tt,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[ce]},process:function(t){var e=this.options,i=t.pointers.length===e.pointers,o=t.distances)&&(s=i)}),null!==n&&null!==s){var r=(n+s)/2,a=Math.max(this.range.end-this.range.start,1.1*(s-n)),h=!e||void 0===e.animation||e.animation;this.range.setRange(r-a/2,r+a/2,h)}}},n.prototype.fit=function(t){var e,i=!t||void 0===t.animation||t.animation,o=this.itemsData&&this.itemsData.getDataSet();1===o.length&&void 0===o.get()[0].end?(e=this.getDataRange(),this.moveTo(e.min.valueOf(),{animation:i})):(e=this.getItemRange(),this.range.setRange(e.min,e.max,i))},n.prototype.getItemRange=function(){var t=this,e=this.getDataRange(),i=null!==e.min?e.min.valueOf():null,o=null!==e.max?e.max.valueOf():null,n=null,s=null;if(null!=i&&null!=o){var r,a,h,d,u;!function(){var e=function(t){return l.convert(t.data.start,"Date").valueOf()},c=function(t){var e=void 0!=t.data.end?t.data.end:t.data.start;return l.convert(e,"Date").valueOf()};r=o-i,r<=0&&(r=10),a=r/t.props.center.width,l.forEach(t.itemSet.items,function(t){t.groupShowing&&(t.show(),t.repositionX());var r=e(t),h=c(t);if(this.options.rtl)var d=r-(t.getWidthRight()+10)*a,l=h+(t.getWidthLeft()+10)*a;else var d=r-(t.getWidthLeft()+10)*a,l=h+(t.getWidthRight()+10)*a;do&&(o=l,s=t)}.bind(t)),n&&s&&(h=n.getWidthLeft()+10,d=s.getWidthRight()+10,u=t.props.center.width-h-d,u>0&&(t.options.rtl?(i=e(n)-d*r/u,o=c(s)+h*r/u):(i=e(n)-h*r/u,o=c(s)+d*r/u)))}()}return{min:null!=i?new Date(i):null,max:null!=o?new Date(o):null}},n.prototype.getDataRange=function(){var t=null,e=null,i=this.itemsData&&this.itemsData.getDataSet();return i&&i.forEach(function(i){var o=l.convert(i.start,"Date").valueOf(),n=l.convert(void 0!=i.end?i.end:i.start,"Date").valueOf();(null===t||oe)&&(e=n)}),{min:null!=t?new Date(t):null,max:null!=e?new Date(e):null}},n.prototype.getEventProperties=function(t){var e=t.center?t.center.x:t.clientX,i=t.center?t.center.y:t.clientY;if(this.options.rtl)var o=l.getAbsoluteRight(this.dom.centerContainer)-e;else var o=e-l.getAbsoluteLeft(this.dom.centerContainer);var n=i-l.getAbsoluteTop(this.dom.centerContainer),s=this.itemSet.itemFromTarget(t),r=this.itemSet.groupFromTarget(t),a=g.customTimeFromTarget(t),h=this.itemSet.options.snap||null,d=this.body.util.getScale(),u=this.body.util.getStep(),c=this._toTime(o),p=h?h(c,d,u):c,f=l.getTarget(t),m=null;return null!=s?m="item":null!=a?m="custom-time":l.hasParent(f,this.timeAxis.dom.foreground)?m="axis":this.timeAxis2&&l.hasParent(f,this.timeAxis2.dom.foreground)?m="axis":l.hasParent(f,this.itemSet.dom.labelSet)?m="group-label":l.hasParent(f,this.currentTime.bar)?m="current-time":l.hasParent(f,this.dom.center)&&(m="background"),{event:t,item:s?s.id:null,group:r?r.groupId:null,what:m,pageX:t.srcEvent?t.srcEvent.pageX:t.pageX,pageY:t.srcEvent?t.srcEvent.pageY:t.pageY,x:o,y:n,time:c,snappedTime:p}},t.exports=n},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(82),s=o(n),r=i(62),a=o(r),h=i(115),d=o(h),l=i(116),u=o(l),c=i(120),p=o(c),f=i(1),m=function(){function t(e,i,o){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;(0,d.default)(this,t),this.parent=e,this.changedOptions=[],this.container=i,this.allowCreation=!1,this.options={},this.initialized=!1,this.popupCounter=0,this.defaultOptions={enabled:!1,filter:!0,container:void 0,showButton:!0},f.extend(this.options,this.defaultOptions),this.configureOptions=o,this.moduleOptions={},this.domElements=[],this.popupDiv={},this.popupLimit=5,this.popupHistory={},this.colorPicker=new p.default(n),this.wrapper=void 0}return(0,u.default)(t,[{key:"setOptions",value:function(t){if(void 0!==t){this.popupHistory={},this._removePopup();var e=!0;"string"==typeof t?this.options.filter=t:t instanceof Array?this.options.filter=t.join():"object"===("undefined"==typeof t?"undefined":(0,a.default)(t))?(void 0!==t.container&&(this.options.container=t.container),void 0!==t.filter&&(this.options.filter=t.filter),void 0!==t.showButton&&(this.options.showButton=t.showButton),void 0!==t.enabled&&(e=t.enabled)):"boolean"==typeof t?(this.options.filter=!0,e=t):"function"==typeof t&&(this.options.filter=t,e=!0),this.options.filter===!1&&(e=!1),this.options.enabled=e}this._clean()}},{key:"setModuleOptions",value:function(t){this.moduleOptions=t,this.options.enabled===!0&&(this._clean(),void 0!==this.options.container&&(this.container=this.options.container),this._create())}},{key:"_create",value:function(){var t=this;this._clean(),this.changedOptions=[];var e=this.options.filter,i=0,o=!1;for(var n in this.configureOptions)this.configureOptions.hasOwnProperty(n)&&(this.allowCreation=!1,o=!1,"function"==typeof e?(o=e(n,[]),o=o||this._handleObject(this.configureOptions[n],[n],!0)):e!==!0&&e.indexOf(n)===-1||(o=!0),o!==!1&&(this.allowCreation=!0,i>0&&this._makeItem([]),this._makeHeader(n),this._handleObject(this.configureOptions[n],[n])),i++);this.options.showButton===!0&&!function(){var e=document.createElement("div");e.className="vis-configuration vis-config-button",e.innerHTML="generate options",e.onclick=function(){t._printOptions()},e.onmouseover=function(){e.className="vis-configuration vis-config-button hover"},e.onmouseout=function(){e.className="vis-configuration vis-config-button"},t.optionsContainer=document.createElement("div"),t.optionsContainer.className="vis-configuration vis-config-option-container",t.domElements.push(t.optionsContainer),t.domElements.push(e)}(),this._push()}},{key:"_push",value:function(){this.wrapper=document.createElement("div"),this.wrapper.className="vis-configuration-wrapper",this.container.appendChild(this.wrapper);for(var t=0;t1?o-1:0),s=1;s2&&void 0!==arguments[2]&&arguments[2],o=document.createElement("div");return o.className="vis-configuration vis-config-label vis-config-s"+e.length,i===!0?o.innerHTML=""+t+":":o.innerHTML=t+":",o}},{key:"_makeDropdown",value:function(t,e,i){var o=document.createElement("select");o.className="vis-configuration vis-config-select";var n=0;void 0!==e&&t.indexOf(e)!==-1&&(n=t.indexOf(e));for(var s=0;ss&&1!==s&&(a.max=Math.ceil(e*l),d=a.max,h="range increased"),a.value=e}else a.value=o;var u=document.createElement("input");u.className="vis-configuration vis-config-rangeinput",u.value=a.value;var c=this;a.onchange=function(){u.value=this.value,c._update(Number(this.value),i)},a.oninput=function(){u.value=this.value};var p=this._makeLabel(i[i.length-1],i),f=this._makeItem(i,p,a,u);""!==h&&this.popupHistory[f]!==d&&(this.popupHistory[f]=d,this._setupPopup(h,f))}},{key:"_setupPopup",value:function(t,e){var i=this;if(this.initialized===!0&&this.allowCreation===!0&&this.popupCounter1&&void 0!==arguments[1]?arguments[1]:[],i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=!1,n=this.options.filter,s=!1;for(var r in t)if(t.hasOwnProperty(r)){o=!0;var a=t[r],h=f.copyAndExtendArray(e,r);if("function"==typeof n&&(o=n(r,e),o===!1&&!(a instanceof Array)&&"string"!=typeof a&&"boolean"!=typeof a&&a instanceof Object&&(this.allowCreation=!1,o=this._handleObject(a,h,!0),this.allowCreation=i===!1)),o!==!1){s=!0;var d=this._getValue(h);if(a instanceof Array)this._handleArray(a,d,h);else if("string"==typeof a)this._makeTextInput(a,d,h);else if("boolean"==typeof a)this._makeCheckbox(a,d,h);else if(a instanceof Object){var l=!0;if(e.indexOf("physics")!==-1&&this.moduleOptions.physics.solver!==r&&(l=!1),l===!0)if(void 0!==a.enabled){var u=f.copyAndExtendArray(h,"enabled"),c=this._getValue(u);if(c===!0){var p=this._makeLabel(r,h,!0);this._makeItem(h,p),s=this._handleObject(a,h)||s}else this._makeCheckbox(a,c,h)}else{var m=this._makeLabel(r,h,!0);this._makeItem(h,m),s=this._handleObject(a,h)||s}}else console.error("dont know how to handle",a,r,h)}}return s}},{key:"_handleArray",value:function(t,e,i){"string"==typeof t[0]&&"color"===t[0]?(this._makeColorField(t,e,i),t[1]!==e&&this.changedOptions.push({path:i,value:e})):"string"==typeof t[0]?(this._makeDropdown(t,e,i),t[0]!==e&&this.changedOptions.push({path:i,value:e})):"number"==typeof t[0]&&(this._makeRange(t,e,i),t[0]!==e&&this.changedOptions.push({path:i,value:Number(e)}))}},{key:"_update",value:function(t,e){var i=this._constructOptions(t,e);this.parent.body&&this.parent.body.emitter&&this.parent.body.emitter.emit&&this.parent.body.emitter.emit("configChange",i),this.initialized=!0,this.parent.setOptions(i)}},{key:"_constructOptions",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=i;t="true"===t||t,t="false"!==t&&t;for(var n=0;nvar options = "+(0,s.default)(t,null,2)+""}},{key:"getOptions",value:function(){for(var t={},e=0;e0&&void 0!==arguments[0]?arguments[0]:1;(0,a.default)(this,t),this.pixelRatio=e,this.generated=!1,this.centerCoordinates={x:144.5,y:144.5},this.r=289*.49,this.color={r:255,g:255,b:255,a:1},this.hueCircle=void 0,this.initialColor={r:255,g:255,b:255,a:1},this.previousColor=void 0,this.applied=!1,this.updateCallback=function(){},this.closeCallback=function(){},this._create()}return(0,d.default)(t,[{key:"insertTo",value:function(t){void 0!==this.hammer&&(this.hammer.destroy(),this.hammer=void 0),this.container=t,this.container.appendChild(this.frame),this._bindHammer(),this._setSize()}},{key:"setUpdateCallback",value:function(t){if("function"!=typeof t)throw new Error("Function attempted to set as colorPicker update callback is not a function.");this.updateCallback=t}},{key:"setCloseCallback",value:function(t){if("function"!=typeof t)throw new Error("Function attempted to set as colorPicker closing callback is not a function.");this.closeCallback=t}},{key:"_isColorString",value:function(t){var e={black:"#000000",navy:"#000080",darkblue:"#00008B",mediumblue:"#0000CD",blue:"#0000FF",darkgreen:"#006400",green:"#008000",teal:"#008080",darkcyan:"#008B8B",deepskyblue:"#00BFFF",darkturquoise:"#00CED1",mediumspringgreen:"#00FA9A",lime:"#00FF00",springgreen:"#00FF7F",aqua:"#00FFFF",cyan:"#00FFFF",midnightblue:"#191970",dodgerblue:"#1E90FF",lightseagreen:"#20B2AA",forestgreen:"#228B22",seagreen:"#2E8B57",darkslategray:"#2F4F4F",limegreen:"#32CD32",mediumseagreen:"#3CB371",turquoise:"#40E0D0",royalblue:"#4169E1",steelblue:"#4682B4",darkslateblue:"#483D8B",mediumturquoise:"#48D1CC",indigo:"#4B0082",darkolivegreen:"#556B2F",cadetblue:"#5F9EA0",cornflowerblue:"#6495ED",mediumaquamarine:"#66CDAA",dimgray:"#696969",slateblue:"#6A5ACD",olivedrab:"#6B8E23",slategray:"#708090",lightslategray:"#778899",mediumslateblue:"#7B68EE",lawngreen:"#7CFC00",chartreuse:"#7FFF00",aquamarine:"#7FFFD4",maroon:"#800000",purple:"#800080",olive:"#808000",gray:"#808080",skyblue:"#87CEEB",lightskyblue:"#87CEFA",blueviolet:"#8A2BE2",darkred:"#8B0000",darkmagenta:"#8B008B",saddlebrown:"#8B4513",darkseagreen:"#8FBC8F",lightgreen:"#90EE90",mediumpurple:"#9370D8",darkviolet:"#9400D3",palegreen:"#98FB98",darkorchid:"#9932CC",yellowgreen:"#9ACD32",sienna:"#A0522D",brown:"#A52A2A",darkgray:"#A9A9A9",lightblue:"#ADD8E6",greenyellow:"#ADFF2F",paleturquoise:"#AFEEEE",lightsteelblue:"#B0C4DE",powderblue:"#B0E0E6",firebrick:"#B22222",darkgoldenrod:"#B8860B",mediumorchid:"#BA55D3",rosybrown:"#BC8F8F",darkkhaki:"#BDB76B",silver:"#C0C0C0",mediumvioletred:"#C71585",indianred:"#CD5C5C",peru:"#CD853F",chocolate:"#D2691E",tan:"#D2B48C",lightgrey:"#D3D3D3",palevioletred:"#D87093",thistle:"#D8BFD8",orchid:"#DA70D6",goldenrod:"#DAA520",crimson:"#DC143C",gainsboro:"#DCDCDC",plum:"#DDA0DD",burlywood:"#DEB887",lightcyan:"#E0FFFF",lavender:"#E6E6FA",darksalmon:"#E9967A",violet:"#EE82EE",palegoldenrod:"#EEE8AA",lightcoral:"#F08080",khaki:"#F0E68C",aliceblue:"#F0F8FF",honeydew:"#F0FFF0",azure:"#F0FFFF",sandybrown:"#F4A460",wheat:"#F5DEB3",beige:"#F5F5DC",whitesmoke:"#F5F5F5",mintcream:"#F5FFFA",ghostwhite:"#F8F8FF",salmon:"#FA8072",antiquewhite:"#FAEBD7",linen:"#FAF0E6",lightgoldenrodyellow:"#FAFAD2",oldlace:"#FDF5E6",red:"#FF0000",fuchsia:"#FF00FF",magenta:"#FF00FF",deeppink:"#FF1493",orangered:"#FF4500",tomato:"#FF6347",hotpink:"#FF69B4",coral:"#FF7F50",darkorange:"#FF8C00",lightsalmon:"#FFA07A",orange:"#FFA500",lightpink:"#FFB6C1",pink:"#FFC0CB",gold:"#FFD700",peachpuff:"#FFDAB9",navajowhite:"#FFDEAD",moccasin:"#FFE4B5",bisque:"#FFE4C4",mistyrose:"#FFE4E1",blanchedalmond:"#FFEBCD",papayawhip:"#FFEFD5",lavenderblush:"#FFF0F5",seashell:"#FFF5EE",cornsilk:"#FFF8DC",lemonchiffon:"#FFFACD",floralwhite:"#FFFAF0",snow:"#FFFAFA",yellow:"#FFFF00",lightyellow:"#FFFFE0",ivory:"#FFFFF0",white:"#FFFFFF"};if("string"==typeof t)return e[t]}},{key:"setColor",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if("none"!==t){var i=void 0,o=this._isColorString(t);if(void 0!==o&&(t=o),c.isString(t)===!0){if(c.isValidRGB(t)===!0){var n=t.substr(4).substr(0,t.length-5).split(",");i={r:n[0],g:n[1],b:n[2],a:1}}else if(c.isValidRGBA(t)===!0){var r=t.substr(5).substr(0,t.length-6).split(",");i={r:r[0],g:r[1],b:r[2],a:r[3]}}else if(c.isValidHex(t)===!0){var a=c.hexToRGB(t);i={r:a.r,g:a.g,b:a.b,a:1}}}else if(t instanceof Object&&void 0!==t.r&&void 0!==t.g&&void 0!==t.b){var h=void 0!==t.a?t.a:"1.0";i={r:t.r,g:t.g,b:t.b,a:h}}if(void 0===i)throw new Error("Unknown color passed to the colorPicker. Supported are strings: rgb, hex, rgba. Object: rgb ({r:r,g:g,b:b,[a:a]}). Supplied: "+(0, +s.default)(t));this._setColor(i,e)}}},{key:"show",value:function(){void 0!==this.closeCallback&&(this.closeCallback(),this.closeCallback=void 0),this.applied=!1,this.frame.style.display="block",this._generateHueCircle()}},{key:"_hide",value:function(){var t=this,e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];e===!0&&(this.previousColor=c.extend({},this.color)),this.applied===!0&&this.updateCallback(this.initialColor),this.frame.style.display="none",setTimeout(function(){void 0!==t.closeCallback&&(t.closeCallback(),t.closeCallback=void 0)},0)}},{key:"_save",value:function(){this.updateCallback(this.color),this.applied=!1,this._hide()}},{key:"_apply",value:function(){this.applied=!0,this.updateCallback(this.color),this._updatePicker(this.color)}},{key:"_loadLast",value:function(){void 0!==this.previousColor?this.setColor(this.previousColor,!1):alert("There is no last color to load...")}},{key:"_setColor",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e===!0&&(this.initialColor=c.extend({},t)),this.color=t;var i=c.RGBToHSV(t.r,t.g,t.b),o=2*Math.PI,n=this.r*i.s,s=this.centerCoordinates.x+n*Math.sin(o*i.h),r=this.centerCoordinates.y+n*Math.cos(o*i.h);this.colorPickerSelector.style.left=s-.5*this.colorPickerSelector.clientWidth+"px",this.colorPickerSelector.style.top=r-.5*this.colorPickerSelector.clientHeight+"px",this._updatePicker(t)}},{key:"_setOpacity",value:function(t){this.color.a=t/100,this._updatePicker(this.color)}},{key:"_setBrightness",value:function(t){var e=c.RGBToHSV(this.color.r,this.color.g,this.color.b);e.v=t/100;var i=c.HSVToRGB(e.h,e.s,e.v);i.a=this.color.a,this.color=i,this._updatePicker()}},{key:"_updatePicker",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.color,e=c.RGBToHSV(t.r,t.g,t.b),i=this.colorPickerCanvas.getContext("2d");void 0===this.pixelRation&&(this.pixelRatio=(window.devicePixelRatio||1)/(i.webkitBackingStorePixelRatio||i.mozBackingStorePixelRatio||i.msBackingStorePixelRatio||i.oBackingStorePixelRatio||i.backingStorePixelRatio||1)),i.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var o=this.colorPickerCanvas.clientWidth,n=this.colorPickerCanvas.clientHeight;i.clearRect(0,0,o,n),i.putImageData(this.hueCircle,0,0),i.fillStyle="rgba(0,0,0,"+(1-e.v)+")",i.circle(this.centerCoordinates.x,this.centerCoordinates.y,this.r),i.fill(),this.brightnessRange.value=100*e.v,this.opacityRange.value=100*t.a,this.initialColorDiv.style.backgroundColor="rgba("+this.initialColor.r+","+this.initialColor.g+","+this.initialColor.b+","+this.initialColor.a+")",this.newColorDiv.style.backgroundColor="rgba("+this.color.r+","+this.color.g+","+this.color.b+","+this.color.a+")"}},{key:"_setSize",value:function(){this.colorPickerCanvas.style.width="100%",this.colorPickerCanvas.style.height="100%",this.colorPickerCanvas.width=289*this.pixelRatio,this.colorPickerCanvas.height=289*this.pixelRatio}},{key:"_create",value:function(){if(this.frame=document.createElement("div"),this.frame.className="vis-color-picker",this.colorPickerDiv=document.createElement("div"),this.colorPickerSelector=document.createElement("div"),this.colorPickerSelector.className="vis-selector",this.colorPickerDiv.appendChild(this.colorPickerSelector),this.colorPickerCanvas=document.createElement("canvas"),this.colorPickerDiv.appendChild(this.colorPickerCanvas),this.colorPickerCanvas.getContext){var t=this.colorPickerCanvas.getContext("2d");this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1),this.colorPickerCanvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{var e=document.createElement("DIV");e.style.color="red",e.style.fontWeight="bold",e.style.padding="10px",e.innerHTML="Error: your browser does not support HTML canvas",this.colorPickerCanvas.appendChild(e)}this.colorPickerDiv.className="vis-color",this.opacityDiv=document.createElement("div"),this.opacityDiv.className="vis-opacity",this.brightnessDiv=document.createElement("div"),this.brightnessDiv.className="vis-brightness",this.arrowDiv=document.createElement("div"),this.arrowDiv.className="vis-arrow",this.opacityRange=document.createElement("input");try{this.opacityRange.type="range",this.opacityRange.min="0",this.opacityRange.max="100"}catch(t){}this.opacityRange.value="100",this.opacityRange.className="vis-range",this.brightnessRange=document.createElement("input");try{this.brightnessRange.type="range",this.brightnessRange.min="0",this.brightnessRange.max="100"}catch(t){}this.brightnessRange.value="100",this.brightnessRange.className="vis-range",this.opacityDiv.appendChild(this.opacityRange),this.brightnessDiv.appendChild(this.brightnessRange);var i=this;this.opacityRange.onchange=function(){i._setOpacity(this.value)},this.opacityRange.oninput=function(){i._setOpacity(this.value)},this.brightnessRange.onchange=function(){i._setBrightness(this.value)},this.brightnessRange.oninput=function(){i._setBrightness(this.value)},this.brightnessLabel=document.createElement("div"),this.brightnessLabel.className="vis-label vis-brightness",this.brightnessLabel.innerHTML="brightness:",this.opacityLabel=document.createElement("div"),this.opacityLabel.className="vis-label vis-opacity",this.opacityLabel.innerHTML="opacity:",this.newColorDiv=document.createElement("div"),this.newColorDiv.className="vis-new-color",this.newColorDiv.innerHTML="new",this.initialColorDiv=document.createElement("div"),this.initialColorDiv.className="vis-initial-color",this.initialColorDiv.innerHTML="initial",this.cancelButton=document.createElement("div"),this.cancelButton.className="vis-button vis-cancel",this.cancelButton.innerHTML="cancel",this.cancelButton.onclick=this._hide.bind(this,!1),this.applyButton=document.createElement("div"),this.applyButton.className="vis-button vis-apply",this.applyButton.innerHTML="apply",this.applyButton.onclick=this._apply.bind(this),this.saveButton=document.createElement("div"),this.saveButton.className="vis-button vis-save",this.saveButton.innerHTML="save",this.saveButton.onclick=this._save.bind(this),this.loadButton=document.createElement("div"),this.loadButton.className="vis-button vis-load",this.loadButton.innerHTML="load last",this.loadButton.onclick=this._loadLast.bind(this),this.frame.appendChild(this.colorPickerDiv),this.frame.appendChild(this.arrowDiv),this.frame.appendChild(this.brightnessLabel),this.frame.appendChild(this.brightnessDiv),this.frame.appendChild(this.opacityLabel),this.frame.appendChild(this.opacityDiv),this.frame.appendChild(this.newColorDiv),this.frame.appendChild(this.initialColorDiv),this.frame.appendChild(this.cancelButton),this.frame.appendChild(this.applyButton),this.frame.appendChild(this.saveButton),this.frame.appendChild(this.loadButton)}},{key:"_bindHammer",value:function(){var t=this;this.drag={},this.pinch={},this.hammer=new l(this.colorPickerCanvas),this.hammer.get("pinch").set({enable:!0}),u.onTouch(this.hammer,function(e){t._moveSelector(e)}),this.hammer.on("tap",function(e){t._moveSelector(e)}),this.hammer.on("panstart",function(e){t._moveSelector(e)}),this.hammer.on("panmove",function(e){t._moveSelector(e)}),this.hammer.on("panend",function(e){t._moveSelector(e)})}},{key:"_generateHueCircle",value:function(){if(this.generated===!1){var t=this.colorPickerCanvas.getContext("2d");void 0===this.pixelRation&&(this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1)),t.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var e=this.colorPickerCanvas.clientWidth,i=this.colorPickerCanvas.clientHeight;t.clearRect(0,0,e,i);var o=void 0,n=void 0,s=void 0,r=void 0;this.centerCoordinates={x:.5*e,y:.5*i},this.r=.49*e;var a=2*Math.PI/360,h=1/360,d=1/this.r,l=void 0;for(s=0;s<360;s++)for(r=0;rs.distance?console.log('%cUnknown option detected: "'+e+'" in '+t.printLocation(n.path,e,"")+"Perhaps it was misplaced? Matching option found at: "+t.printLocation(s.path,s.closestMatch,""),g):n.distance<=r?console.log('%cUnknown option detected: "'+e+'". Did you mean "'+n.closestMatch+'"?'+t.printLocation(n.path,e),g):console.log('%cUnknown option detected: "'+e+'". Did you mean one of these: '+t.print((0,d.default)(i))+t.printLocation(o,e),g),m=!0}},{key:"findInOptions",value:function(e,i,o){var n=arguments.length>3&&void 0!==arguments[3]&&arguments[3],s=1e9,r="",a=[],h=e.toLowerCase(),d=void 0;for(var l in i){var u=void 0;if(void 0!==i[l].__type__&&n===!0){var c=t.findInOptions(e,i[l],f.copyAndExtendArray(o,l));s>c.distance&&(r=c.closestMatch,a=c.path,s=c.distance,d=c.indexMatch)}else l.toLowerCase().indexOf(h)!==-1&&(d=l),u=t.levenshteinDistance(e,l),s>u&&(r=l,a=f.copyArray(o),s=u)}return{closestMatch:r,path:a,distance:s,indexMatch:d}}},{key:"printLocation",value:function(t,e){for(var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"Problem value found at: \n",o="\n\n"+i+"options = {\n",n=0;n1e3&&(i=1e3),e.body.dom.rollingModeBtn.style.visibility="hidden",e.currentTimeTimer=setTimeout(t,i)}var e=this;t()},n.prototype.stopRolling=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),this.rolling=!1,this.body.dom.rollingModeBtn.style.visibility="visible")},n.prototype.setRange=function(t,e,i,o,n){o!==!0&&(o=!1);var s=void 0!=t?c.convert(t,"Date").valueOf():null,r=void 0!=e?c.convert(e,"Date").valueOf():null;if(this._cancelAnimation(),i){var h=this,l=this.start,p=this.end,f="object"===("undefined"==typeof i?"undefined":(0,u.default)(i))&&"duration"in i?i.duration:500,v="object"===("undefined"==typeof i?"undefined":(0,u.default)(i))&&"easingFunction"in i?i.easingFunction:"easeInOutQuad",g=c.easingFunctions[v];if(!g)throw new Error("Unknown easing function "+(0,d.default)(v)+". Choose from: "+(0,a.default)(c.easingFunctions).join(", "));var y=(new Date).valueOf(),b=!1,_=function t(){if(!h.props.touch.dragging){var e=(new Date).valueOf(),i=e-y,a=g(i/f),d=i>f,u=d||null===s?s:l+(s-l)*a,v=d||null===r?r:p+(r-p)*a;w=h._applyRange(u,v),m.updateHiddenDates(h.options.moment,h.body,h.options.hiddenDates),b=b||w;var _={start:new Date(h.start),end:new Date(h.end),byUser:o,event:c.elementsCensor(n)};w&&h.body.emitter.emit("rangechange",_),d?b&&h.body.emitter.emit("rangechanged",_):h.animationTimer=setTimeout(t,20)}};return _()}var w=this._applyRange(s,r);if(m.updateHiddenDates(this.options.moment,this.body,this.options.hiddenDates),w){var x={start:new Date(this.start),end:new Date(this.end),byUser:o,event:c.elementsCensor(n)};this.body.emitter.emit("rangechange",x),this.body.emitter.emit("rangechanged",x)}},n.prototype.getMillisecondsPerPixel=function(){return(this.end-this.start)/this.body.dom.center.clientWidth},n.prototype._cancelAnimation=function(){this.animationTimer&&(clearTimeout(this.animationTimer),this.animationTimer=null)},n.prototype._applyRange=function(t,e){var i,o=null!=t?c.convert(t,"Date").valueOf():this.start,n=null!=e?c.convert(e,"Date").valueOf():this.end,s=null!=this.options.max?c.convert(this.options.max,"Date").valueOf():null,r=null!=this.options.min?c.convert(this.options.min,"Date").valueOf():null;if(isNaN(o)||null===o)throw new Error('Invalid start "'+t+'"');if(isNaN(n)||null===n)throw new Error('Invalid end "'+e+'"');if(ns&&(n=s)),null!==s&&n>s&&(i=n-s,o-=i,n-=i,null!=r&&o=this.start-h&&n<=this.end?(o=this.start,n=this.end):(i=a-(n-o),o-=i/2,n+=i/2)}}if(null!==this.options.zoomMax){var d=parseFloat(this.options.zoomMax);d<0&&(d=0),n-o>d&&(this.end-this.start===d&&othis.end?(o=this.start,n=this.end):(i=n-o-d,o+=i/2,n-=i/2))}var l=this.start!=o||this.end!=n;return o>=this.start&&o<=this.end||n>=this.start&&n<=this.end||this.start>=o&&this.start<=n||this.end>=o&&this.end<=n||this.body.emitter.emit("checkRangedItems"),this.start=o,this.end=n,l},n.prototype.getRange=function(){return{start:this.start,end:this.end}},n.prototype.conversion=function(t,e){return n.conversion(this.start,this.end,t,e)},n.conversion=function(t,e,i,o){return void 0===o&&(o=0),0!=i&&e-t!=0?{offset:t,scale:i/(e-t-o)}:{offset:0,scale:1}},n.prototype._onDragStart=function(t){this.deltaDifference=0,this.previousDelta=0,this.options.moveable&&this._isInsideRange(t)&&this.props.touch.allowDragging&&(this.stopRolling(),this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.dragging=!0,this.body.dom.root&&(this.body.dom.root.style.cursor="move"))},n.prototype._onDrag=function(t){if(t&&this.props.touch.dragging&&this.options.moveable&&this.props.touch.allowDragging){var e=this.options.direction;s(e);var i="horizontal"==e?t.deltaX:t.deltaY;i-=this.deltaDifference;var o=this.props.touch.end-this.props.touch.start,n=m.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end);o-=n;var r="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height;if(this.options.rtl)var a=i/r*o;else var a=-i/r*o;var h=this.props.touch.start+a,d=this.props.touch.end+a,l=m.snapAwayFromHidden(this.body.hiddenDates,h,this.previousDelta-i,!0),u=m.snapAwayFromHidden(this.body.hiddenDates,d,this.previousDelta-i,!0);if(l!=h||u!=d)return this.deltaDifference+=i,this.props.touch.start=l,this.props.touch.end=u,void this._onDrag(t);this.previousDelta=i,this._applyRange(h,d);var p=new Date(this.start),f=new Date(this.end);this.body.emitter.emit("rangechange",{start:p,end:f,byUser:!0,event:c.elementsCensor(t)}),this.body.emitter.emit("panmove")}},n.prototype._onDragEnd=function(t){this.props.touch.dragging&&this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.dragging=!1,this.body.dom.root&&(this.body.dom.root.style.cursor="auto"),this.body.emitter.emit("rangechanged",{start:new Date(this.start),end:new Date(this.end),byUser:!0,event:c.elementsCensor(t)}))},n.prototype._onMouseWheel=function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),this.options.zoomKey&&!t[this.options.zoomKey]&&this.options.zoomable||!this.options.zoomable&&this.options.moveable){if(this.options.horizontalScroll){t.preventDefault();var i=e*(this.end-this.start)/20,o=this.start-i,n=this.end-i;this.setRange(o,n,!1,!0,t)}}else if(this.options.zoomable&&this.options.moveable&&this._isInsideRange(t)&&e){var s;s=e<0?1-e/5:1/(1+e/5);var r;if(this.rolling)r=(this.start+this.end)/2;else{var a=this.getPointer({x:t.clientX,y:t.clientY},this.body.dom.center);r=this._pointerToDate(a)}this.zoom(s,r,e,t),t.preventDefault()}},n.prototype._onTouch=function(t){this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.allowDragging=!0,this.props.touch.center=null,this.scaleOffset=0,this.deltaDifference=0},n.prototype._onPinch=function(t){if(this.options.zoomable&&this.options.moveable){this.props.touch.allowDragging=!1,this.props.touch.center||(this.props.touch.center=this.getPointer(t.center,this.body.dom.center)),this.stopRolling();var e=1/(t.scale+this.scaleOffset),i=this._pointerToDate(this.props.touch.center),o=m.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),n=m.getHiddenDurationBefore(this.options.moment,this.body.hiddenDates,this,i),s=o-n,r=i-n+(this.props.touch.start-(i-n))*e,a=i+s+(this.props.touch.end-(i+s))*e;this.startToFront=1-e<=0,this.endToFront=e-1<=0;var h=m.snapAwayFromHidden(this.body.hiddenDates,r,1-e,!0),d=m.snapAwayFromHidden(this.body.hiddenDates,a,e-1,!0);h==r&&d==a||(this.props.touch.start=h,this.props.touch.end=d,this.scaleOffset=1-t.scale,r=h,a=d),this.setRange(r,a,!1,!0,t),this.startToFront=!1,this.endToFront=!0}},n.prototype._isInsideRange=function(t){var e=t.center?t.center.x:t.clientX;if(this.options.rtl)var i=e-c.getAbsoluteLeft(this.body.dom.centerContainer);else var i=c.getAbsoluteRight(this.body.dom.centerContainer)-e;var o=this.body.util.toTime(i);return o>=this.start&&o<=this.end},n.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(s(i),"horizontal"==i)return this.body.util.toTime(t.x).valueOf();var o=this.body.domProps.center.height;return e=this.conversion(o),t.y/e.scale+e.offset},n.prototype.getPointer=function(t,e){return this.options.rtl?{x:c.getAbsoluteRight(e)-t.x,y:t.y-c.getAbsoluteTop(e)}:{x:t.x-c.getAbsoluteLeft(e),y:t.y-c.getAbsoluteTop(e)}},n.prototype.zoom=function(t,e,i,o){null==e&&(e=(this.start+this.end)/2);var n=m.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),s=m.getHiddenDurationBefore(this.options.moment,this.body.hiddenDates,this,e),r=n-s,a=e-s+(this.start-(e-s))*t,h=e+r+(this.end-(e+r))*t;this.startToFront=!(i>0),this.endToFront=!(-i>0);var d=m.snapAwayFromHidden(this.body.hiddenDates,a,i,!0),l=m.snapAwayFromHidden(this.body.hiddenDates,h,-i,!0);d==a&&l==h||(a=d,h=l),this.setRange(a,h,!1,!0,o),this.startToFront=!1,this.endToFront=!0},n.prototype.move=function(t){var e=this.end-this.start,i=this.start+e*t,o=this.end+e*t;this.start=i,this.end=o},n.prototype.moveTo=function(t){var e=(this.start+this.end)/2,i=e-t,o=this.start-i,n=this.end-i;this.setRange(o,n,!1,!0,event)},t.exports=n},function(t,e,i){function o(t,e){this.options=null,this.props=null}var n=i(1);o.prototype.setOptions=function(t){t&&n.extend(this.options,t)},o.prototype.redraw=function(){return!1},o.prototype.destroy=function(){},o.prototype._isResized=function(){var t=this.props._previousWidth!==this.props.width||this.props._previousHeight!==this.props.height;return this.props._previousWidth=this.props.width,this.props._previousHeight=this.props.height,t},t.exports=o},function(t,e){e.convertHiddenOptions=function(t,i,o){if(o&&!Array.isArray(o))return e.convertHiddenOptions(t,i,[o]);if(i.hiddenDates=[],o&&1==Array.isArray(o)){for(var n=0;n=4*a){var c=0,p=s.clone();switch(o[h].repeat){case"daily":d.day()!=l.day()&&(c=1),d.dayOfYear(n.dayOfYear()),d.year(n.year()),d.subtract(7,"days"),l.dayOfYear(n.dayOfYear()),l.year(n.year()),l.subtract(7-c,"days"),p.add(1,"weeks");break;case"weekly":var f=l.diff(d,"days"),m=d.day();d.date(n.date()),d.month(n.month()),d.year(n.year()),l=d.clone(),d.day(m),l.day(m),l.add(f,"days"),d.subtract(1,"weeks"),l.subtract(1,"weeks"),p.add(1,"weeks");break;case"monthly":d.month()!=l.month()&&(c=1),d.month(n.month()),d.year(n.year()),d.subtract(1,"months"),l.month(n.month()),l.year(n.year()),l.subtract(1,"months"),l.add(c,"months"),p.add(1,"months");break;case"yearly":d.year()!=l.year()&&(c=1),d.year(n.year()),d.subtract(1,"years"),l.year(n.year()),l.subtract(1,"years"),l.add(c,"years"),p.add(1,"years");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",o[h].repeat)}for(;d=e[o].start&&e[n].end<=e[o].end?e[n].remove=!0:e[n].start>=e[o].start&&e[n].start<=e[o].end?(e[o].end=e[n].end,e[n].remove=!0):e[n].end>=e[o].start&&e[n].end<=e[o].end&&(e[o].start=e[n].start,e[n].remove=!0));for(var o=0;o=r&&nt.range.end){var h={start:t.range.start,end:i};i=e.correctTimeForHidden(t.options.moment,t.body.hiddenDates,h,i);var n=t.range.conversion(o,r);return(i.valueOf()-n.offset)*n.scale}i=e.correctTimeForHidden(t.options.moment,t.body.hiddenDates,t.range,i);var n=t.range.conversion(o,r);return(i.valueOf()-n.offset)*n.scale},e.toTime=function(t,i,o){if(0==t.body.hiddenDates.length){var n=t.range.conversion(o);return new Date(i/n.scale+n.offset)}var s=e.getHiddenDurationBetween(t.body.hiddenDates,t.range.start,t.range.end),r=t.range.end-t.range.start-s,a=r*i/o,h=e.getAccumulatedHiddenDuration(t.body.hiddenDates,t.range,a),d=new Date(h+a+t.range.start);return d},e.getHiddenDurationBetween=function(t,e,i){for(var o=0,n=0;n=e&&r=e&&r<=i&&(o+=r-s)}return o},e.correctTimeForHidden=function(t,i,o,n){return n=t(n).toDate().valueOf(),n-=e.getHiddenDurationBefore(t,i,o,n)},e.getHiddenDurationBefore=function(t,e,i,o){var n=0;o=t(o).toDate().valueOf();for(var s=0;s=i.start&&a=a&&(n+=a-r)}return n},e.getAccumulatedHiddenDuration=function(t,e,i){for(var o=0,n=0,s=e.start,r=0;r=e.start&&h=i)break;o+=h-a}}return o},e.snapAwayFromHidden=function(t,i,o,n){var s=e.isHidden(i,t);return 1==s.hidden?o<0?1==n?s.startDate-(s.endDate-i)-1:s.startDate-1:1==n?s.endDate+(i-s.startDate)+1:s.endDate+1:i},e.isHidden=function(t,e){for(var i=0;i=o&&t-1||h))return t.dataTransfer.dropEffect="move",h=!0,!1}function n(t){try{var e=JSON.parse(t.dataTransfer.getData("text"));if(!e.content)return}catch(t){return!1}return h=!1,t.center={x:t.clientX,y:t.clientY},s.itemSet._onAddItem(t),!1}this.dom={},this.dom.container=t,this.dom.root=document.createElement("div"),this.dom.background=document.createElement("div"),this.dom.backgroundVertical=document.createElement("div"),this.dom.backgroundHorizontal=document.createElement("div"),this.dom.centerContainer=document.createElement("div"),this.dom.leftContainer=document.createElement("div"),this.dom.rightContainer=document.createElement("div"),this.dom.center=document.createElement("div"),this.dom.left=document.createElement("div"),this.dom.right=document.createElement("div"),this.dom.top=document.createElement("div"), +this.dom.bottom=document.createElement("div"),this.dom.shadowTop=document.createElement("div"),this.dom.shadowBottom=document.createElement("div"),this.dom.shadowTopLeft=document.createElement("div"),this.dom.shadowBottomLeft=document.createElement("div"),this.dom.shadowTopRight=document.createElement("div"),this.dom.shadowBottomRight=document.createElement("div"),this.dom.rollingModeBtn=document.createElement("div"),this.dom.root.className="vis-timeline",this.dom.background.className="vis-panel vis-background",this.dom.backgroundVertical.className="vis-panel vis-background vis-vertical",this.dom.backgroundHorizontal.className="vis-panel vis-background vis-horizontal",this.dom.centerContainer.className="vis-panel vis-center",this.dom.leftContainer.className="vis-panel vis-left",this.dom.rightContainer.className="vis-panel vis-right",this.dom.top.className="vis-panel vis-top",this.dom.bottom.className="vis-panel vis-bottom",this.dom.left.className="vis-content",this.dom.center.className="vis-content",this.dom.right.className="vis-content",this.dom.shadowTop.className="vis-shadow vis-top",this.dom.shadowBottom.className="vis-shadow vis-bottom",this.dom.shadowTopLeft.className="vis-shadow vis-top",this.dom.shadowBottomLeft.className="vis-shadow vis-bottom",this.dom.shadowTopRight.className="vis-shadow vis-top",this.dom.shadowBottomRight.className="vis-shadow vis-bottom",this.dom.rollingModeBtn.className="vis-rolling-mode-btn",this.dom.root.appendChild(this.dom.background),this.dom.root.appendChild(this.dom.backgroundVertical),this.dom.root.appendChild(this.dom.backgroundHorizontal),this.dom.root.appendChild(this.dom.centerContainer),this.dom.root.appendChild(this.dom.leftContainer),this.dom.root.appendChild(this.dom.rightContainer),this.dom.root.appendChild(this.dom.top),this.dom.root.appendChild(this.dom.bottom),this.dom.root.appendChild(this.dom.bottom),this.dom.root.appendChild(this.dom.rollingModeBtn),this.dom.centerContainer.appendChild(this.dom.center),this.dom.leftContainer.appendChild(this.dom.left),this.dom.rightContainer.appendChild(this.dom.right),this.dom.centerContainer.appendChild(this.dom.shadowTop),this.dom.centerContainer.appendChild(this.dom.shadowBottom),this.dom.leftContainer.appendChild(this.dom.shadowTopLeft),this.dom.leftContainer.appendChild(this.dom.shadowBottomLeft),this.dom.rightContainer.appendChild(this.dom.shadowTopRight),this.dom.rightContainer.appendChild(this.dom.shadowBottomRight),this.props={root:{},background:{},centerContainer:{},leftContainer:{},rightContainer:{},center:{},left:{},right:{},top:{},bottom:{},border:{},scrollTop:0,scrollTopMin:0},this.on("rangechange",function(){this.initialDrawDone===!0&&this._redraw()}.bind(this)),this.on("touch",this._onTouch.bind(this)),this.on("panmove",this._onDrag.bind(this));var s=this;this._origRedraw=this._redraw.bind(this),this._redraw=c.throttle(this._origRedraw),this.on("_change",function(t){s.itemSet&&s.itemSet.initialItemSetDrawn&&t&&1==t.queue?s._redraw():s._origRedraw()}),this.hammer=new l(this.dom.root);var r=this.hammer.get("pinch").set({enable:!0});u.disablePreventDefaultVertically(r),this.hammer.get("pan").set({threshold:5,direction:l.DIRECTION_HORIZONTAL}),this.listeners={};var a=["tap","doubletap","press","pinch","pan","panstart","panmove","panend"];a.forEach(function(t){var e=function(e){s.isActive()&&s.emit(t,e)};s.hammer.on(t,e),s.listeners[t]=e}),u.onTouch(this.hammer,function(t){s.emit("touch",t)}.bind(this)),u.onRelease(this.hammer,function(t){s.emit("release",t)}.bind(this)),this.dom.centerContainer.addEventListener?(this.dom.centerContainer.addEventListener("mousewheel",e.bind(this),!1),this.dom.centerContainer.addEventListener("DOMMouseScroll",e.bind(this),!1)):this.dom.centerContainer.attachEvent("onmousewheel",e.bind(this)),this.dom.left.parentNode.addEventListener("scroll",i.bind(this)),this.dom.right.parentNode.addEventListener("scroll",i.bind(this));var h=!1;if(this.dom.center.addEventListener("dragover",o.bind(this),!1),this.dom.center.addEventListener("drop",n.bind(this),!1),this.customTimes=[],this.touch={},this.redrawCount=0,this.initialDrawDone=!1,!t)throw new Error("No container provided");t.appendChild(this.dom.root)},n.prototype.setOptions=function(t){if(t){var e=["width","height","minHeight","maxHeight","autoResize","start","end","clickToUse","dataAttributes","hiddenDates","locale","locales","moment","rtl","zoomKey","horizontalScroll","verticalScroll"];if(c.selectiveExtend(e,this.options,t),this.dom.rollingModeBtn.style.visibility="hidden",this.options.rtl&&(this.dom.container.style.direction="rtl",this.dom.backgroundVertical.className="vis-panel vis-background vis-vertical-rtl"),this.options.verticalScroll&&(this.options.rtl?this.dom.rightContainer.className="vis-panel vis-right vis-vertical-scroll":this.dom.leftContainer.className="vis-panel vis-left vis-vertical-scroll"),this.options.orientation={item:void 0,axis:void 0},"orientation"in t&&("string"==typeof t.orientation?this.options.orientation={item:t.orientation,axis:t.orientation}:"object"===(0,h.default)(t.orientation)&&("item"in t.orientation&&(this.options.orientation.item=t.orientation.item),"axis"in t.orientation&&(this.options.orientation.axis=t.orientation.axis))),"both"===this.options.orientation.axis){if(!this.timeAxis2){var i=this.timeAxis2=new p(this.body);i.setOptions=function(t){var e=t?c.extend({},t):{};e.orientation="top",p.prototype.setOptions.call(i,e)},this.components.push(i)}}else if(this.timeAxis2){var o=this.components.indexOf(this.timeAxis2);o!==-1&&this.components.splice(o,1),this.timeAxis2.destroy(),this.timeAxis2=null}if("function"==typeof t.drawPoints&&(t.drawPoints={onRender:t.drawPoints}),"hiddenDates"in this.options&&m.convertHiddenOptions(this.options.moment,this.body,this.options.hiddenDates),"clickToUse"in t&&(t.clickToUse?this.activator||(this.activator=new f(this.dom.root)):this.activator&&(this.activator.destroy(),delete this.activator)),"showCustomTime"in t)throw new Error("Option `showCustomTime` is deprecated. Create a custom time bar via timeline.addCustomTime(time [, id])");this._initAutoResize()}if(this.components.forEach(function(e){return e.setOptions(t)}),"configure"in t){this.configurator||(this.configurator=this._createConfigurator()),this.configurator.setOptions(t.configure);var n=c.deepExtend({},this.options);this.components.forEach(function(t){c.deepExtend(n,t.options)}),this.configurator.setModuleOptions({global:n})}this._redraw()},n.prototype.isActive=function(){return!this.activator||this.activator.active},n.prototype.destroy=function(){this.setItems(null),this.setGroups(null),this.off(),this._stopAutoResize(),this.dom.root.parentNode&&this.dom.root.parentNode.removeChild(this.dom.root),this.dom=null,this.activator&&(this.activator.destroy(),delete this.activator);for(var t in this.listeners)this.listeners.hasOwnProperty(t)&&delete this.listeners[t];this.listeners=null,this.hammer=null,this.components.forEach(function(t){return t.destroy()}),this.body=null},n.prototype.setCustomTime=function(t,e){var i=this.customTimes.filter(function(t){return e===t.options.id});if(0===i.length)throw new Error("No custom time bar found with id "+(0,r.default)(e));i.length>0&&i[0].setCustomTime(t)},n.prototype.getCustomTime=function(t){var e=this.customTimes.filter(function(e){return e.options.id===t});if(0===e.length)throw new Error("No custom time bar found with id "+(0,r.default)(t));return e[0].getCustomTime()},n.prototype.setCustomTimeTitle=function(t,e){var i=this.customTimes.filter(function(t){return t.options.id===e});if(0===i.length)throw new Error("No custom time bar found with id "+(0,r.default)(e));if(i.length>0)return i[0].setCustomTitle(t)},n.prototype.getEventProperties=function(t){return{event:t}},n.prototype.addCustomTime=function(t,e){var i=void 0!==t?c.convert(t,"Date").valueOf():new Date,o=this.customTimes.some(function(t){return t.options.id===e});if(o)throw new Error("A custom time with id "+(0,r.default)(e)+" already exists");var n=new v(this.body,c.extend({},this.options,{time:i,id:e}));return this.customTimes.push(n),this.components.push(n),this._redraw(),e},n.prototype.removeCustomTime=function(t){var e=this.customTimes.filter(function(e){return e.options.id===t});if(0===e.length)throw new Error("No custom time bar found with id "+(0,r.default)(t));e.forEach(function(t){this.customTimes.splice(this.customTimes.indexOf(t),1),this.components.splice(this.components.indexOf(t),1),t.destroy()}.bind(this))},n.prototype.getVisibleItems=function(){return this.itemSet&&this.itemSet.getVisibleItems()||[]},n.prototype.fit=function(t){var e=this.getDataRange();if(null!==e.min||null!==e.max){var i=e.max-e.min,o=new Date(e.min.valueOf()-.01*i),n=new Date(e.max.valueOf()+.01*i),s=!t||void 0===t.animation||t.animation;this.range.setRange(o,n,s)}},n.prototype.getDataRange=function(){throw new Error("Cannot invoke abstract method getDataRange")},n.prototype.setWindow=function(t,e,i){var o;if(1==arguments.length){var n=arguments[0];o=void 0===n.animation||n.animation,this.range.setRange(n.start,n.end,o)}else o=!i||void 0===i.animation||i.animation,this.range.setRange(t,e,o)},n.prototype.moveTo=function(t,e){var i=this.range.end-this.range.start,o=c.convert(t,"Date").valueOf(),n=o-i/2,s=o+i/2,r=!e||void 0===e.animation||e.animation;this.range.setRange(n,s,r)},n.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},n.prototype.zoomIn=function(t){if(!(!t||t<0||t>1)){var e=this.getWindow(),i=e.start.valueOf(),o=e.end.valueOf(),n=o-i,s=n/(1+t),r=(n-s)/2,a=i+r,h=o-r;this.setWindow({start:a,end:h})}},n.prototype.zoomOut=function(t){if(!(!t||t<0||t>1)){var e=this.getWindow(),i=e.start.valueOf(),o=e.end.valueOf(),n=o-i,s=i-n*t/2,r=o+n*t/2;this.setWindow({start:s,end:r})}},n.prototype.redraw=function(){this._redraw()},n.prototype._redraw=function(){this.redrawCount++;var t=!1,e=this.options,i=this.props,o=this.dom;if(o&&o.container&&0!=o.root.offsetWidth){m.updateHiddenDates(this.options.moment,this.body,this.options.hiddenDates),"top"==e.orientation?(c.addClassName(o.root,"vis-top"),c.removeClassName(o.root,"vis-bottom")):(c.removeClassName(o.root,"vis-top"),c.addClassName(o.root,"vis-bottom")),o.root.style.maxHeight=c.option.asSize(e.maxHeight,""),o.root.style.minHeight=c.option.asSize(e.minHeight,""),o.root.style.width=c.option.asSize(e.width,""),i.border.left=(o.centerContainer.offsetWidth-o.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(o.centerContainer.offsetHeight-o.centerContainer.clientHeight)/2,i.border.bottom=i.border.top,i.borderRootHeight=o.root.offsetHeight-o.root.clientHeight,i.borderRootWidth=o.root.offsetWidth-o.root.clientWidth,0===o.centerContainer.clientHeight&&(i.border.left=i.border.top,i.border.right=i.border.left),0===o.root.clientHeight&&(i.borderRootWidth=i.borderRootHeight),i.center.height=o.center.offsetHeight,i.left.height=o.left.offsetHeight,i.right.height=o.right.offsetHeight,i.top.height=o.top.clientHeight||-i.border.top,i.bottom.height=o.bottom.clientHeight||-i.border.bottom;var n=Math.max(i.left.height,i.center.height,i.right.height),s=i.top.height+n+i.bottom.height+i.borderRootHeight+i.border.top+i.border.bottom;o.root.style.height=c.option.asSize(e.height,s+"px"),i.root.height=o.root.offsetHeight,i.background.height=i.root.height-i.borderRootHeight;var r=i.root.height-i.top.height-i.bottom.height-i.borderRootHeight;i.centerContainer.height=r,i.leftContainer.height=r,i.rightContainer.height=i.leftContainer.height,i.root.width=o.root.offsetWidth,i.background.width=i.root.width-i.borderRootWidth,this.initialDrawDone||(i.scrollbarWidth=c.getScrollBarWidth()),e.verticalScroll?e.rtl?(i.left.width=o.leftContainer.clientWidth||-i.border.left,i.right.width=o.rightContainer.clientWidth+i.scrollbarWidth||-i.border.right):(i.left.width=o.leftContainer.clientWidth+i.scrollbarWidth||-i.border.left,i.right.width=o.rightContainer.clientWidth||-i.border.right):(i.left.width=o.leftContainer.clientWidth||-i.border.left,i.right.width=o.rightContainer.clientWidth||-i.border.right),this._setDOM();var a=this._updateScrollTop();"top"!=e.orientation.item&&(a+=Math.max(i.centerContainer.height-i.center.height-i.border.top-i.border.bottom,0)),o.center.style.top=a+"px";var h=0==i.scrollTop?"hidden":"",d=i.scrollTop==i.scrollTopMin?"hidden":"";o.shadowTop.style.visibility=h,o.shadowBottom.style.visibility=d,o.shadowTopLeft.style.visibility=h,o.shadowBottomLeft.style.visibility=d,o.shadowTopRight.style.visibility=h,o.shadowBottomRight.style.visibility=d,e.verticalScroll&&(o.rightContainer.className="vis-panel vis-right vis-vertical-scroll",o.leftContainer.className="vis-panel vis-left vis-vertical-scroll",o.shadowTopRight.style.visibility="hidden",o.shadowBottomRight.style.visibility="hidden",o.shadowTopLeft.style.visibility="hidden",o.shadowBottomLeft.style.visibility="hidden",o.left.style.top="0px",o.right.style.top="0px"),(!e.verticalScroll||i.center.heighti.centerContainer.height;this.hammer.get("pan").set({direction:u?l.DIRECTION_ALL:l.DIRECTION_HORIZONTAL}),this.components.forEach(function(e){t=e.redraw()||t});var p=5;if(t){if(this.redrawCount0&&(this.props.scrollTop=0),this.props.scrollTope&&o.push(h.id):h.lefti&&o.push(h.id)}return o},n.prototype._deselect=function(t){for(var e=this.selection,i=0,o=e.length;in)return}}if(i&&i!=this.groupTouchParams.group){var h=e.get(i.groupId),d=e.get(this.groupTouchParams.group.groupId);d&&h&&(this.options.groupOrderSwap(d,h,e),e.update(d),e.update(h));var l=e.getIds({order:this.options.groupOrder});if(!c.equalArray(l,this.groupTouchParams.originalOrder))for(var u=this.groupTouchParams.originalOrder,p=this.groupTouchParams.group.groupId,m=Math.min(u.length,l.length),v=0,g=0,y=0;v=m)break;if(l[v+g]!=p)if(u[v+y]!=p){var b=l.indexOf(u[v+y]),_=e.get(l[v+g]),w=e.get(u[v+y]);this.options.groupOrderSwap(_,w,e),e.update(_),e.update(w);var x=l[v+g];l[v+g]=u[v+y],l[b]=x,v++}else y=1;else g=1}}}},n.prototype._onGroupDragEnd=function(t){if(this.options.groupEditable.order&&this.groupTouchParams.group){t.stopPropagation();var e=this,i=e.groupTouchParams.group.groupId,o=e.groupsData.getDataSet(),n=c.extend({},o.get(i));e.options.onMoveGroup(n,function(t){if(t)t[o._fieldId]=i,o.update(t);else{var n=o.getIds({order:e.options.groupOrder});if(!c.equalArray(n,e.groupTouchParams.originalOrder))for(var s=e.groupTouchParams.originalOrder,r=Math.min(s.length,n.length),a=0;a=r)break;var h=n.indexOf(s[a]),d=o.get(n[a]),l=o.get(s[a]);e.options.groupOrderSwap(d,l,o),groupsData.update(d),groupsData.update(l);var u=n[a];n[a]=s[a],n[h]=u,a++}}}),e.body.emitter.emit("groupDragged",{groupId:i})}},n.prototype._onSelectItem=function(t){if(this.options.selectable){var e=t.srcEvent&&(t.srcEvent.ctrlKey||t.srcEvent.metaKey),i=t.srcEvent&&t.srcEvent.shiftKey;if(e||i)return void this._onMultiSelectItem(t);var o=this.getSelection(),n=this.itemFromTarget(t),s=n?[n.id]:[];this.setSelection(s);var r=this.getSelection();(r.length>0||o.length>0)&&this.body.emitter.emit("select",{items:r,event:c.elementsCensor(t)})}},n.prototype._onMouseOver=function(t){var e=this.itemFromTarget(t);if(e){var i=this.itemFromRelatedTarget(t);if(e!==i){if(e.getTitle()){null==e.popup&&e.setPopup(new l.default(this.body.dom.root,this.options.tooltip.overflowMethod||"flip"));var o=this.body.dom.centerContainer;e.popup.setPosition(t.clientX-c.getAbsoluteLeft(o)+o.offsetLeft,t.clientY-c.getAbsoluteTop(o)+o.offsetTop),e.popup.show()}this.body.emitter.emit("itemover",{item:e.id,event:c.elementsCensor(t)})}}},n.prototype._onMouseOut=function(t){var e=this.itemFromTarget(t);if(e){var i=this.itemFromRelatedTarget(t);e!==i&&(null!=e.popup&&e.popup.hide(),this.body.emitter.emit("itemout",{item:e.id,event:c.elementsCensor(t)}))}},n.prototype._onMouseMove=function(t){var e=this.itemFromTarget(t);if(e&&this.options.tooltip.followMouse&&e.popup&&!e.popup.hidden){var i=this.body.dom.centerContainer;e.popup.setPosition(t.clientX-c.getAbsoluteLeft(i)+i.offsetLeft,t.clientY-c.getAbsoluteTop(i)+i.offsetTop),e.popup.show()}},n.prototype._onMouseWheel=function(t){this.touchParams.itemIsDragging&&this._onDragEnd(t)},n.prototype._onUpdateItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this;if(t){var i=e.itemsData.get(t.id);this.options.onUpdate(i,function(t){t&&e.itemsData.getDataSet().update(t)})}}},n.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.options.snap||null,o=this.itemFromTarget(t);if(!o){if(this.options.rtl)var n=c.getAbsoluteRight(this.dom.frame),s=n-t.center.x;else var n=c.getAbsoluteLeft(this.dom.frame),s=t.center.x-n;var r=this.body.util.toTime(s),a=this.body.util.getScale(),h=this.body.util.getStep(),d={start:i?i(r,a,h):r,content:"new item"};if("drop"==t.type){var l=JSON.parse(t.dataTransfer.getData("text"));if(d.content=l.content,d.type=l.type||"box",d[this.itemsData._fieldId]=l.id||c.randomUUID(),"range"==l.type||l.end&&l.start)if(l.end)d.end=l.end,d.start=l.start;else{var u=this.body.util.toTime(s+this.props.width/5);d.end=i?i(u,a,h):u}}else if(d[this.itemsData._fieldId]=c.randomUUID(),"range"===this.options.type){var u=this.body.util.toTime(s+this.props.width/5);d.end=i?i(u,a,h):u}var p=this.groupFromTarget(t);p&&(d.group=p.groupId),d=this._cloneItemData(d),this.options.onAdd(d,function(i){i&&(e.itemsData.getDataSet().add(i),"drop"==t.type&&e.setSelection([i.id]))})}}},n.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e=this.itemFromTarget(t);if(e){var i=this.options.multiselect?this.getSelection():[],o=t.srcEvent&&t.srcEvent.shiftKey||!1;if(o&&this.options.multiselect){var s=this.itemsData.get(e.id).group,r=void 0;this.options.multiselectPerGroup&&i.length>0&&(r=this.itemsData.get(i[0]).group),this.options.multiselectPerGroup&&void 0!=r&&r!=s||i.push(e.id);var a=n._getItemRange(this.itemsData.get(i,this.itemOptions));if(!this.options.multiselectPerGroup||r==s){i=[];for(var h in this.items)if(this.items.hasOwnProperty(h)){var d=this.items[h],l=d.data.start,u=void 0!==d.data.end?d.data.end:l;!(l>=a.min&&u<=a.max)||this.options.multiselectPerGroup&&r!=this.itemsData.get(d.id).group||d instanceof x||i.push(d.id)}}}else{var p=i.indexOf(e.id);p==-1?i.push(e.id):i.splice(p,1)}this.setSelection(i),this.body.emitter.emit("select",{items:this.getSelection(),event:c.elementsCensor(t)})}}},n._getItemRange=function(t){var e=null,i=null;return t.forEach(function(t){(null==i||t.starte)&&(e=t.end):(null==e||t.start>e)&&(e=t.start)}),{min:i,max:e}},n.prototype.itemFromElement=function(t){for(var e=t;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},n.prototype.itemFromTarget=function(t){return this.itemFromElement(t.target)},n.prototype.itemFromRelatedTarget=function(t){return this.itemFromElement(t.relatedTarget)},n.prototype.groupFromTarget=function(t){for(var e=t.center?t.center.y:t.clientY,i=0;ir&&er)return n}else if(0===i&&en-this.padding&&(a=!0),s=a?this.x-i:this.x,r=h?this.y-e:this.y}else r=this.y-e,r+e+this.padding>o&&(r=o-e-this.padding),rn&&(s=n-i-this.padding),s0&&this.current.milliseconds()0&&this.current.seconds()0&&this.current.minutes()0&&this.current.hours()0?t.step:1,this.autoScale=!1)},o.prototype.setAutoScale=function(t){this.autoScale=t},o.prototype.setMinimumStep=function(t){if(void 0!=t){var e=31104e6,i=2592e6,o=864e5,n=36e5,s=6e4,r=1e3,a=1;1e3*e>t&&(this.scale="year",this.step=1e3),500*e>t&&(this.scale="year",this.step=500),100*e>t&&(this.scale="year",this.step=100),50*e>t&&(this.scale="year",this.step=50),10*e>t&&(this.scale="year",this.step=10),5*e>t&&(this.scale="year",this.step=5),e>t&&(this.scale="year",this.step=1),3*i>t&&(this.scale="month",this.step=3),i>t&&(this.scale="month",this.step=1),5*o>t&&(this.scale="day",this.step=5),2*o>t&&(this.scale="day",this.step=2),o>t&&(this.scale="day",this.step=1),o/2>t&&(this.scale="weekday",this.step=1),4*n>t&&(this.scale="hour",this.step=4),n>t&&(this.scale="hour",this.step=1),15*s>t&&(this.scale="minute",this.step=15),10*s>t&&(this.scale="minute",this.step=10),5*s>t&&(this.scale="minute",this.step=5),s>t&&(this.scale="minute",this.step=1),15*r>t&&(this.scale="second",this.step=15),10*r>t&&(this.scale="second",this.step=10),5*r>t&&(this.scale="second",this.step=5),r>t&&(this.scale="second",this.step=1),200*a>t&&(this.scale="millisecond",this.step=200),100*a>t&&(this.scale="millisecond",this.step=100),50*a>t&&(this.scale="millisecond",this.step=50),10*a>t&&(this.scale="millisecond",this.step=10),5*a>t&&(this.scale="millisecond",this.step=5),a>t&&(this.scale="millisecond",this.step=1)}},o.snap=function(t,e,i){var o=n(t);if("year"==e){var s=o.year()+Math.round(o.month()/12);o.year(Math.round(s/i)*i),o.month(0),o.date(0),o.hours(0),o.minutes(0),o.seconds(0),o.milliseconds(0)}else if("month"==e)o.date()>15?(o.date(1),o.add(1,"month")):o.date(1),o.hours(0),o.minutes(0),o.seconds(0),o.milliseconds(0);else if("day"==e){switch(i){case 5:case 2:o.hours(24*Math.round(o.hours()/24));break;default:o.hours(12*Math.round(o.hours()/12))}o.minutes(0),o.seconds(0),o.milliseconds(0)}else if("weekday"==e){switch(i){case 5:case 2:o.hours(12*Math.round(o.hours()/12));break;default:o.hours(6*Math.round(o.hours()/6))}o.minutes(0),o.seconds(0),o.milliseconds(0)}else if("hour"==e){switch(i){case 4:o.minutes(60*Math.round(o.minutes()/60));break;default:o.minutes(30*Math.round(o.minutes()/30))}o.seconds(0),o.milliseconds(0)}else if("minute"==e){switch(i){case 15:case 10:o.minutes(5*Math.round(o.minutes()/5)),o.seconds(0);break;case 5:o.seconds(60*Math.round(o.seconds()/60));break;default:o.seconds(30*Math.round(o.seconds()/30))}o.milliseconds(0)}else if("second"==e)switch(i){case 15:case 10:o.seconds(5*Math.round(o.seconds()/5)),o.milliseconds(0);break;case 5:o.milliseconds(1e3*Math.round(o.milliseconds()/1e3));break;default:o.milliseconds(500*Math.round(o.milliseconds()/500))}else if("millisecond"==e){var r=i>5?i/2:1;o.milliseconds(Math.round(o.milliseconds()/r)*r)}return o},o.prototype.isMajor=function(){if(1==this.switchedYear)switch(this.scale){case"year":case"month":case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedMonth)switch(this.scale){case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedDay)switch(this.scale){case"millisecond":case"second":case"minute":case"hour":return!0;default:return!1}var t=this.moment(this.current);switch(this.scale){case"millisecond":return 0==t.milliseconds();case"second":return 0==t.seconds();case"minute":return 0==t.hours()&&0==t.minutes();case"hour":return 0==t.hours();case"weekday":case"day":return 1==t.date();case"month":return 0==t.month();case"year":return!1;default:return!1}},o.prototype.getLabelMinor=function(t){if(void 0==t&&(t=this.current),"function"==typeof this.format.minorLabels)return this.format.minorLabels(t,this.scale,this.step);var e=this.format.minorLabels[this.scale];return e&&e.length>0?this.moment(t).format(e):""},o.prototype.getLabelMajor=function(t){if(void 0==t&&(t=this.current),"function"==typeof this.format.majorLabels)return this.format.majorLabels(t,this.scale,this.step);var e=this.format.majorLabels[this.scale];return e&&e.length>0?this.moment(t).format(e):""},o.prototype.getClassName=function(){function t(t){return t/h%2==0?" vis-even":" vis-odd"}function e(t){return t.isSame(new Date,"day")?" vis-today":t.isSame(s().add(1,"day"),"day")?" vis-tomorrow":t.isSame(s().add(-1,"day"),"day")?" vis-yesterday":""}function i(t){return t.isSame(new Date,"week")?" vis-current-week":""}function o(t){return t.isSame(new Date,"month")?" vis-current-month":""}function n(t){return t.isSame(new Date,"year")?" vis-current-year":""}var s=this.moment,r=this.moment(this.current),a=r.locale?r.locale("en"):r.lang("en"),h=this.step;switch(this.scale){case"millisecond":return e(a)+t(a.milliseconds()).trim();case"second":return e(a)+t(a.seconds()).trim();case"minute":return e(a)+t(a.minutes()).trim();case"hour":return"vis-h"+a.hours()+(4==this.step?"-h"+(a.hours()+4):"")+e(a)+t(a.hours());case"weekday":return"vis-"+a.format("dddd").toLowerCase()+e(a)+i(a)+t(a.date());case"day":return"vis-day"+a.date()+" vis-"+a.format("MMMM").toLowerCase()+e(a)+o(a)+(this.step<=2?e(a):"")+(this.step<=2?" vis-"+a.format("dddd").toLowerCase():""+t(a.date()-1));case"month":return"vis-"+a.format("MMMM").toLowerCase()+o(a)+t(a.month());case"year":var d=a.year();return"vis-year"+d+n(a)+t(d);default:return""}},t.exports=o},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}function n(t,e,i){this.groupId=t,this.subgroups={},this.subgroupIndex=0,this.subgroupOrderer=e&&e.subgroupOrder,this.itemSet=i,this.isVisible=null,e&&e.nestedGroups&&(this.nestedGroups=e.nestedGroups,0==e.showNested?this.showNested=!1:this.showNested=!0),this.nestedInGroup=null,this.dom={},this.props={label:{width:0,height:0}},this.className=null,this.items={},this.visibleItems=[],this.itemsInRange=[],this.orderedItems={byStart:[],byEnd:[]},this.checkRangedItems=!1;var o=this;this.itemSet.body.emitter.on("checkRangedItems",function(){o.checkRangedItems=!0}),this._create(),this.setData(e)}var s=i(58),r=o(s),a=i(1),h=i(131);i(132);n.prototype._create=function(){var t=document.createElement("div");this.itemSet.options.groupEditable.order?t.className="vis-label draggable":t.className="vis-label",this.dom.label=t;var e=document.createElement("div");e.className="vis-inner",t.appendChild(e),this.dom.inner=e;var i=document.createElement("div");i.className="vis-group",i["timeline-group"]=this,this.dom.foreground=i,this.dom.background=document.createElement("div"),this.dom.background.className="vis-group",this.dom.axis=document.createElement("div"),this.dom.axis.className="vis-group",this.dom.marker=document.createElement("div"),this.dom.marker.style.visibility="hidden",this.dom.marker.style.position="absolute",this.dom.marker.innerHTML="",this.dom.background.appendChild(this.dom.marker)},n.prototype.setData=function(t){var e,i;if(this.itemSet.options&&this.itemSet.options.groupTemplate?(i=this.itemSet.options.groupTemplate.bind(this),e=i(t,this.dom.inner)):e=t&&t.content,e instanceof Element){for(this.dom.inner.appendChild(e);this.dom.inner.firstChild;)this.dom.inner.removeChild(this.dom.inner.firstChild);this.dom.inner.appendChild(e)}else e instanceof Object?i(t,this.dom.inner):void 0!==e&&null!==e?this.dom.inner.innerHTML=e:this.dom.inner.innerHTML=this.groupId||"";if(this.dom.label.title=t&&t.title||"",this.dom.inner.firstChild?a.removeClassName(this.dom.inner,"vis-hidden"):a.addClassName(this.dom.inner,"vis-hidden"),t&&t.nestedGroups)if(0==t.showNested?this.showNested=!1:this.showNested=!0,a.addClassName(this.dom.label,"vis-nesting-group"),this.showNested)a.removeClassName(this.dom.label,"collapsed"),a.addClassName(this.dom.label,"expanded");else{a.removeClassName(this.dom.label,"expanded");var o=this.itemSet.options.rtl?"collapsed-rtl":"collapsed";a.addClassName(this.dom.label,o)}t&&t.nestedInGroup&&(a.addClassName(this.dom.label,"vis-nested-group"),this.itemSet.options&&this.itemSet.options.rtl?this.dom.inner.style.paddingRight="30px":this.dom.inner.style.paddingLeft="30px");var n=t&&t.className||null;n!=this.className&&(this.className&&(a.removeClassName(this.dom.label,this.className),a.removeClassName(this.dom.foreground,this.className),a.removeClassName(this.dom.background,this.className),a.removeClassName(this.dom.axis,this.className)),a.addClassName(this.dom.label,n),a.addClassName(this.dom.foreground,n),a.addClassName(this.dom.background,n),a.addClassName(this.dom.axis,n),this.className=n),this.style&&(a.removeCssText(this.dom.label,this.style),this.style=null),t&&t.style&&(a.addCssText(this.dom.label,t.style),this.style=t.style)},n.prototype.getLabelWidth=function(){return this.props.label.width},n.prototype.redraw=function(t,e,i){var o=!1,n=this.dom.marker.clientHeight;n!=this.lastMarkerHeight&&(this.lastMarkerHeight=n,a.forEach(this.items,function(t){t.dirty=!0,t.displayed&&t.redraw()}),i=!0),this._calculateSubGroupHeights(e);var s=this.dom.foreground;if(this.top=s.offsetTop,this.right=s.offsetLeft,this.width=s.offsetWidth,this.isVisible=this._isGroupVisible(t,e),"function"==typeof this.itemSet.options.order){if(i){var r=this,d=!1;a.forEach(this.items,function(t){t.displayed||(t.redraw(),r.visibleItems.push(t)),t.repositionX(d)});var l=this.orderedItems.byStart.slice().sort(function(t,e){return r.itemSet.options.order(t.data,e.data)});h.stack(l,e,!0)}this.visibleItems=this._updateItemsInRange(this.orderedItems,this.visibleItems,t)}else this.visibleItems=this._updateItemsInRange(this.orderedItems,this.visibleItems,t),this.itemSet.options.stack?h.stack(this.visibleItems,e,i):h.nostack(this.visibleItems,e,this.subgroups,this.itemSet.options.stackSubgroups);this._updateSubgroupsSizes();var u=this._calculateHeight(e),s=this.dom.foreground;this.top=s.offsetTop,this.right=s.offsetLeft,this.width=s.offsetWidth,o=a.updateProperty(this,"height",u)||o,o=a.updateProperty(this.props.label,"width",this.dom.inner.clientWidth)||o,o=a.updateProperty(this.props.label,"height",this.dom.inner.clientHeight)||o,this.dom.background.style.height=u+"px",this.dom.foreground.style.height=u+"px",this.dom.label.style.height=u+"px";for(var c=0,p=this.visibleItems.length;c0){var e=this;this.resetSubgroups(),a.forEach(this.visibleItems,function(i){void 0!==i.data.subgroup&&(e.subgroups[i.data.subgroup].height=Math.max(e.subgroups[i.data.subgroup].height,i.height+t.item.vertical),e.subgroups[i.data.subgroup].visible=!0)})}},n.prototype._isGroupVisible=function(t,e){var i=this.top<=t.body.domProps.centerContainer.height-t.body.domProps.scrollTop+e.axis&&this.top+this.height+e.axis>=-t.body.domProps.scrollTop;return i},n.prototype._calculateHeight=function(t){var e,i=this.visibleItems;if(i.length>0){var o=i[0].top,n=i[0].top+i[0].height;if(a.forEach(i,function(t){o=Math.min(o,t.top),n=Math.max(n,t.top+t.height)}),o>t.axis){var s=o-t.axis;n-=s,a.forEach(i,function(t){t.top-=s})}e=n+t.item.vertical/2}else e=0;return e=Math.max(e,this.props.label.height)},n.prototype.show=function(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)},n.prototype.hide=function(){var t=this.dom.label; +t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var o=this.dom.axis;o.parentNode&&o.parentNode.removeChild(o)},n.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),void 0!==t.data.subgroup&&(void 0===this.subgroups[t.data.subgroup]&&(this.subgroups[t.data.subgroup]={height:0,top:0,start:t.data.start,end:t.data.end,visible:!1,index:this.subgroupIndex,items:[]},this.subgroupIndex++),new Date(t.data.start)new Date(this.subgroups[t.data.subgroup].end)&&(this.subgroups[t.data.subgroup].end=t.data.end),this.subgroups[t.data.subgroup].items.push(t)),this.orderSubgroups(),this.visibleItems.indexOf(t)==-1){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},n.prototype._updateSubgroupsSizes=function(){var t=this;if(t.subgroups)for(var e in t.subgroups){var i=t.subgroups[e].items[0].data.start,o=t.subgroups[e].items[0].data.end;t.subgroups[e].items.forEach(function(t){new Date(t.data.start)new Date(o)&&(o=t.data.end)}),t.subgroups[e].start=i,t.subgroups[e].end=o}},n.prototype.orderSubgroups=function(){if(void 0!==this.subgroupOrderer){var t=[];if("string"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push({subgroup:e,sortField:this.subgroups[e].items[0].data[this.subgroupOrderer]});t.sort(function(t,e){return t.sortField-e.sortField})}else if("function"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push(this.subgroups[e].items[0].data);t.sort(this.subgroupOrderer)}if(t.length>0)for(var i=0;i0)for(var l=0;lh}),1==this.checkRangedItems)for(this.checkRangedItems=!1,l=0;lh})}for(var l=0;l=0;s--){var r=e[s];if(n(r))break;void 0===o[r.id]&&(o[r.id]=!0,i.push(r))}for(var s=t+1;so[r].index&&e.collisionByTimes(o[n],o[r])){s=o[r];break}null!=s&&(o[n].top=s.top+s.height)}while(s)}for(var a=0;ae.right&&t.top-o.vertical+ie.top:t.left-o.horizontal+ie.left&&t.top-o.vertical+ie.top},e.collisionByTimes=function(t,e){return t.start<=e.start&&t.end>=e.start&&t.tope.top||e.start<=t.start&&e.end>=t.start&&e.topt.top}},function(t,e,i){function o(t,e,i){if(this.props={content:{width:0}},this.overflow=!1,this.options=i,t){if(void 0==t.start)throw new Error('Property "start" missing in item '+t.id);if(void 0==t.end)throw new Error('Property "end" missing in item '+t.id)}n.call(this,t,e,i)}var n=(i(108),i(133));o.prototype=new n(null,null,null),o.prototype.baseClassName="vis-item vis-range",o.prototype.isVisible=function(t){return this.data.startt.start},o.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.frame=document.createElement("div"),t.frame.className="vis-item-overflow",t.box.appendChild(t.frame),t.visibleFrame=document.createElement("div"),t.visibleFrame.className="vis-item-visible-frame",t.box.appendChild(t.visibleFrame),t.content=document.createElement("div"),t.content.className="vis-item-content",t.frame.appendChild(t.content),t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw item: parent has no foreground container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(),this._updateDataAttributes(this.dom.box),this._updateStyle(this.dom.box);var i=(this.options.editable.updateTime||this.options.editable.updateGroup||this.editable===!0)&&this.editable!==!1,o=(this.data.className?" "+this.data.className:"")+(this.selected?" vis-selected":"")+(i?" vis-editable":" vis-readonly");t.box.className=this.baseClassName+o,this.overflow="hidden"!==window.getComputedStyle(t.frame).overflow,this.dom.content.style.maxWidth="none",this.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,this.dom.content.style.maxWidth="",this.dirty=!1}this._repaintOnItemUpdateTimeTooltip(t.box),this._repaintDeleteButton(t.box),this._repaintDragCenter(),this._repaintDragLeft(),this._repaintDragRight()},o.prototype.show=function(){this.displayed||this.redraw()},o.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.displayed=!1}},o.prototype.repositionX=function(t){var e,i,o=this.parent.width,n=this.conversion.toScreen(this.data.start),s=this.conversion.toScreen(this.data.end);void 0!==t&&t!==!0||(n<-o&&(n=-o),s>2*o&&(s=2*o));var r=Math.max(s-n+.5,1);switch(this.overflow?(this.options.rtl?this.right=n:this.left=n,this.width=r+this.props.content.width,i=this.props.content.width):(this.options.rtl?this.right=n:this.left=n,this.width=r,i=Math.min(s-n,this.props.content.width)),this.options.rtl?this.dom.box.style.right=this.right+"px":this.dom.box.style.left=this.left+"px",this.dom.box.style.width=r+"px",this.options.align){case"left":this.options.rtl?this.dom.content.style.right="0":this.dom.content.style.left="0";break;case"right":this.options.rtl?this.dom.content.style.right=Math.max(r-i,0)+"px":this.dom.content.style.left=Math.max(r-i,0)+"px";break;case"center":this.options.rtl?this.dom.content.style.right=Math.max((r-i)/2,0)+"px":this.dom.content.style.left=Math.max((r-i)/2,0)+"px";break;default:e=this.overflow?s>0?Math.max(-n,0):-i:n<0?-n:0,this.options.rtl?this.dom.content.style.right=e+"px":(this.dom.content.style.left=e+"px",this.dom.content.style.width="calc(100% - "+e+"px)")}},o.prototype.repositionY=function(){var t=this.options.orientation.item,e=this.dom.box;"top"==t?e.style.top=this.top+"px":e.style.top=this.parent.height-this.top-this.height+"px"},o.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="vis-drag-left",t.dragLeftItem=this,this.dom.box.appendChild(t),this.dom.dragLeft=t}else!this.selected&&this.dom.dragLeft&&(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},o.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="vis-drag-right",t.dragRightItem=this,this.dom.box.appendChild(t),this.dom.dragRight=t}else!this.selected&&this.dom.dragRight&&(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=o},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}function n(t,e,i){this.id=null,this.parent=null,this.data=t,this.dom=null,this.conversion=e||{},this.options=i||{},this.selected=!1,this.displayed=!1,this.groupShowing=!0,this.dirty=!0,this.popup=null,this.top=null,this.right=null,this.left=null,this.width=null,this.height=null,this.editable=null,this.data&&this.data.hasOwnProperty("editable")&&("boolean"==typeof this.data.editable?this.editable={updateTime:this.data.editable,updateGroup:this.data.editable,remove:this.data.editable}:"object"===(0,h.default)(i.editable)&&(this.editable={},l.selectiveExtend(["updateTime","updateGroup","remove"],this.editable,t.editable)))}var s=i(58),r=o(s),a=i(62),h=o(a),d=i(108),l=i(1),u=i(84);n.prototype.stack=!0,n.prototype.select=function(){this.selected=!0,this.dirty=!0,this.displayed&&this.redraw()},n.prototype.unselect=function(){this.selected=!1,this.dirty=!0,this.displayed&&this.redraw()},n.prototype.setData=function(t){var e=void 0!=t.group&&this.data.group!=t.group;e&&this.parent.itemSet._moveToGroup(this,t.group),t.hasOwnProperty("editable")&&("boolean"==typeof t.editable?this.editable={updateTime:this.data.editable,updateGroup:this.data.editable,remove:this.data.editable}:"object"===(0,h.default)(options.editable)&&(this.editable={},l.selectiveExtend(["updateTime","updateGroup","remove"],this.editable,t.editable))),this.data=t,this.dirty=!0,this.displayed&&this.redraw()},n.prototype.setParent=function(t){this.displayed?(this.hide(),this.parent=t,this.parent&&this.show()):this.parent=t},n.prototype.isVisible=function(t){return!1},n.prototype.show=function(){return!1},n.prototype.hide=function(){return!1},n.prototype.redraw=function(){},n.prototype.repositionX=function(){},n.prototype.repositionY=function(){},n.prototype._repaintDragCenter=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragCenter){var t=this,e=document.createElement("div");e.className="vis-drag-center",e.dragCenterItem=this,new d(e).on("doubletap",function(e){e.stopPropagation(),t.parent.itemSet._onUpdateItem(t)}),this.dom.box?this.dom.box.appendChild(e):this.dom.point&&this.dom.point.appendChild(e),this.dom.dragCenter=e}else!this.selected&&this.dom.dragCenter&&(this.dom.dragCenter.parentNode&&this.dom.dragCenter.parentNode.removeChild(this.dom.dragCenter),this.dom.dragCenter=null)},n.prototype._repaintDeleteButton=function(t){var e=(this.options.editable.overrideItems||null==this.editable)&&this.options.editable.remove||!this.options.editable.overrideItems&&null!=this.editable&&this.editable.remove;if(this.selected&&e&&!this.dom.deleteButton){var i=this,o=document.createElement("div");this.options.rtl?o.className="vis-delete-rtl":o.className="vis-delete",o.title="Delete this item",new d(o).on("tap",function(t){t.stopPropagation(),i.parent.removeFromDataSet(i)}),t.appendChild(o),this.dom.deleteButton=o}else!this.selected&&this.dom.deleteButton&&(this.dom.deleteButton.parentNode&&this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton),this.dom.deleteButton=null)},n.prototype._repaintOnItemUpdateTimeTooltip=function(t){if(this.options.tooltipOnItemUpdateTime){var e=(this.options.editable.updateTime||this.data.editable===!0)&&this.data.editable!==!1;if(this.selected&&e&&!this.dom.onItemUpdateTimeTooltip){var i=document.createElement("div");i.className="vis-onUpdateTime-tooltip",t.appendChild(i),this.dom.onItemUpdateTimeTooltip=i}else!this.selected&&this.dom.onItemUpdateTimeTooltip&&(this.dom.onItemUpdateTimeTooltip.parentNode&&this.dom.onItemUpdateTimeTooltip.parentNode.removeChild(this.dom.onItemUpdateTimeTooltip),this.dom.onItemUpdateTimeTooltip=null);if(this.dom.onItemUpdateTimeTooltip){this.dom.onItemUpdateTimeTooltip.style.visibility=this.parent.itemSet.touchParams.itemIsDragging?"visible":"hidden",this.options.rtl?this.dom.onItemUpdateTimeTooltip.style.right=this.dom.content.style.right:this.dom.onItemUpdateTimeTooltip.style.left=this.dom.content.style.left;var o,n=50,s=this.parent.itemSet.body.domProps.scrollTop;o="top"==this.options.orientation.item?this.top:this.parent.height-this.top-this.height;var r=o+this.parent.top-n<-s;r?(this.dom.onItemUpdateTimeTooltip.style.bottom="",this.dom.onItemUpdateTimeTooltip.style.top=this.height+2+"px"):(this.dom.onItemUpdateTimeTooltip.style.top="",this.dom.onItemUpdateTimeTooltip.style.bottom=this.height+2+"px");var a,h;this.options.tooltipOnItemUpdateTime&&this.options.tooltipOnItemUpdateTime.template?(h=this.options.tooltipOnItemUpdateTime.template.bind(this),a=h(this.data)):(a="start: "+u(this.data.start).format("MM/DD/YYYY hh:mm"),this.data.end&&(a+="
                                                      end: "+u(this.data.end).format("MM/DD/YYYY hh:mm"))),this.dom.onItemUpdateTimeTooltip.innerHTML=a}}},n.prototype._updateContents=function(t){var e,i,o,n,s=this.parent.itemSet.itemsData.get(this.id),r=this.dom.box||this.dom.point,a=r.getElementsByClassName("vis-item-visible-frame")[0];if(this.options.visibleFrameTemplate?(n=this.options.visibleFrameTemplate.bind(this),o=n(s,r)):o="",a)if(o instanceof Object&&!(o instanceof Element))n(s,a);else{var h=this._contentToString(this.itemVisibleFrameContent)!==this._contentToString(o);if(h){if(o instanceof Element)a.innerHTML="",a.appendChild(o);else if(void 0!=o)a.innerHTML=o;else if("background"!=this.data.type||void 0!==this.data.content)throw new Error('Property "content" missing in item '+this.id);this.itemVisibleFrameContent=o}}if(this.options.template?(i=this.options.template.bind(this),e=i(s,t)):e=this.data.content,e instanceof Object&&!(e instanceof Element))i(s,t);else{var h=this._contentToString(this.content)!==this._contentToString(e);if(h){if(e instanceof Element)t.innerHTML="",t.appendChild(e);else if(void 0!=e)t.innerHTML=e;else if("background"!=this.data.type||void 0!==this.data.content)throw new Error('Property "content" missing in item '+this.id);this.content=e}}},n.prototype._updateTitle=function(){null!=this.data.title&&null!=this.popup&&this.popup.setText(this.data.title||"")},n.prototype._updateDataAttributes=function(t){if(this.options.dataAttributes&&this.options.dataAttributes.length>0){var e=[];if(Array.isArray(this.options.dataAttributes))e=this.options.dataAttributes;else{if("all"!=this.options.dataAttributes)return;e=(0,r.default)(this.data)}for(var i=0;it.start&&this.data.start.getTime()-ot.start&&this.data.start.getTime()t.start&&this.data.start.getTime()-o/2t.start&&this.data.startt.start},o.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.frame=document.createElement("div"),t.frame.className="vis-item-overflow",t.box.appendChild(t.frame),t.content=document.createElement("div"),t.content.className="vis-item-content",t.frame.appendChild(t.content),this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.background;if(!e)throw new Error("Cannot redraw item: parent has no background container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(),this._updateDataAttributes(this.dom.content),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" vis-selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=0,this.dirty=!1}},o.prototype.show=r.prototype.show,o.prototype.hide=r.prototype.hide,o.prototype.repositionX=r.prototype.repositionX,o.prototype.repositionY=function(t){var e;if(void 0!==this.data.subgroup){var i=this.data.subgroup,o=this.parent.subgroups;o[i].index;this.dom.box.style.height=this.parent.subgroups[i].height+"px";var n=this.options.orientation.item;"top"==n?this.dom.box.style.top=this.parent.top+this.parent.subgroups[i].top+"px":this.dom.box.style.top=this.parent.top+this.parent.height-this.parent.subgroups[i].top-this.parent.subgroups[i].height+"px",this.dom.box.style.bottom=""}else this.parent instanceof s?(e=Math.max(this.parent.height,this.parent.itemSet.body.domProps.center.height,this.parent.itemSet.body.domProps.centerContainer.height),this.dom.box.style.top="top"==n?"0":"",this.dom.box.style.bottom="top"==n?"":"0"):(e=this.parent.height,this.dom.box.style.top=this.parent.top+"px",this.dom.box.style.bottom="");this.dom.box.style.height=e+"px"},t.exports=o},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}function n(t,e){this.dom={foreground:null,lines:[],majorTexts:[],minorTexts:[],redundant:{lines:[],majorTexts:[],minorTexts:[]}},this.props={range:{start:0,end:0,minimumStep:0},lineTop:0},this.defaultOptions={orientation:{axis:"bottom"},showMinorLabels:!0,showMajorLabels:!0,maxMinorChars:7,format:d.FORMAT,moment:u,timeAxis:null},this.options=a.extend({},this.defaultOptions),this.body=t,this._create(),this.setOptions(e)}var s=i(62),r=o(s),a=i(1),h=i(124),d=i(129),l=i(125),u=i(84);n.prototype=new h,n.prototype.setOptions=function(t){t&&(a.selectiveExtend(["showMinorLabels","showMajorLabels","maxMinorChars","hiddenDates","timeAxis","moment","rtl"],this.options,t),a.selectiveDeepExtend(["format"],this.options,t),"orientation"in t&&("string"==typeof t.orientation?this.options.orientation.axis=t.orientation:"object"===(0,r.default)(t.orientation)&&"axis"in t.orientation&&(this.options.orientation.axis=t.orientation.axis)),"locale"in t&&("function"==typeof u.locale?u.locale(t.locale):u.lang(t.locale)))},n.prototype._create=function(){this.dom.foreground=document.createElement("div"),this.dom.background=document.createElement("div"),this.dom.foreground.className="vis-time-axis vis-foreground",this.dom.background.className="vis-time-axis vis-background"},n.prototype.destroy=function(){this.dom.foreground.parentNode&&this.dom.foreground.parentNode.removeChild(this.dom.foreground),this.dom.background.parentNode&&this.dom.background.parentNode.removeChild(this.dom.background),this.body=null},n.prototype.redraw=function(){var t=this.props,e=this.dom.foreground,i=this.dom.background,o="top"==this.options.orientation.axis?this.body.dom.top:this.body.dom.bottom,n=e.parentNode!==o;this._calculateCharSize();var s=this.options.showMinorLabels&&"none"!==this.options.orientation.axis,r=this.options.showMajorLabels&&"none"!==this.options.orientation.axis;t.minorLabelHeight=s?t.minorCharHeight:0,t.majorLabelHeight=r?t.majorCharHeight:0,t.height=t.minorLabelHeight+t.majorLabelHeight,t.width=e.offsetWidth,t.minorLineHeight=this.body.domProps.root.height-t.majorLabelHeight-("top"==this.options.orientation.axis?this.body.domProps.bottom.height:this.body.domProps.top.height),t.minorLineWidth=1,t.majorLineHeight=t.minorLineHeight+t.majorLabelHeight,t.majorLineWidth=1;var a=e.nextSibling,h=i.nextSibling;return e.parentNode&&e.parentNode.removeChild(e),i.parentNode&&i.parentNode.removeChild(i),e.style.height=this.props.height+"px",this._repaintLabels(),a?o.insertBefore(e,a):o.appendChild(e),h?this.body.dom.backgroundVertical.insertBefore(i,h):this.body.dom.backgroundVertical.appendChild(i),this._isResized()||n},n.prototype._repaintLabels=function(){var t=this.options.orientation.axis,e=a.convert(this.body.range.start,"Number"),i=a.convert(this.body.range.end,"Number"),o=this.body.util.toTime((this.props.minorCharWidth||10)*this.options.maxMinorChars).valueOf(),n=o-l.getHiddenDurationBefore(this.options.moment,this.body.hiddenDates,this.body.range,o);n-=this.body.util.toTime(0).valueOf();var s=new d(new Date(e),new Date(i),n,this.body.hiddenDates);s.setMoment(this.options.moment),this.options.format&&s.setFormat(this.options.format),this.options.timeAxis&&s.setScale(this.options.timeAxis),this.step=s;var r=this.dom;r.redundant.lines=r.lines,r.redundant.majorTexts=r.majorTexts,r.redundant.minorTexts=r.minorTexts,r.lines=[],r.majorTexts=[],r.minorTexts=[];var h,u,p,f,m,v,g,y,b,_,w=0,x=void 0,k=0,O=1e3;for(s.start(),u=s.getCurrent(),f=this.body.util.toScreen(u);s.hasNext()&&k=.4*g;if(this.options.showMinorLabels&&D){var M=this._repaintMinorText(p,b,t,_);M.style.width=w+"px"}m&&this.options.showMajorLabels?(p>0&&(void 0==x&&(x=p),M=this._repaintMajorText(p,s.getLabelMajor(),t,_)),y=this._repaintMajorLine(p,w,t,_)):D?y=this._repaintMinorLine(p,w,t,_):y&&(y.style.width=parseInt(y.style.width)+w+"px")}if(k!==O||c||(console.warn("Something is wrong with the Timeline scale. Limited drawing of grid lines to "+O+" lines."), +c=!0),this.options.showMajorLabels){var S=this.body.util.toTime(0),C=s.getLabelMajor(S),T=C.length*(this.props.majorCharWidth||10)+10;(void 0==x||T1e3&&(o=1e3),e.redraw(),e.body.emitter.emit("currentTimeTick"),e.currentTimeTimer=setTimeout(t,o)}var e=this;t()},o.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},o.prototype.setCurrentTime=function(t){var e=n.convert(t,"Date").valueOf(),i=(new Date).valueOf();this.offset=e-i,this.redraw()},o.prototype.getCurrentTime=function(){return new Date((new Date).valueOf()+this.offset)},t.exports=o},function(t,e){Object.defineProperty(e,"__esModule",{value:!0});var i="string",o="boolean",n="number",s="array",r="date",a="object",h="dom",d="moment",l="any",u={configure:{enabled:{boolean:o},filter:{boolean:o,function:"function"},container:{dom:h},__type__:{object:a,boolean:o,function:"function"}},align:{string:i},rtl:{boolean:o,undefined:"undefined"},rollingMode:{boolean:o,undefined:"undefined"},verticalScroll:{boolean:o,undefined:"undefined"},horizontalScroll:{boolean:o,undefined:"undefined"},autoResize:{boolean:o},throttleRedraw:{number:n},clickToUse:{boolean:o},dataAttributes:{string:i,array:s},editable:{add:{boolean:o,undefined:"undefined"},remove:{boolean:o,undefined:"undefined"},updateGroup:{boolean:o,undefined:"undefined"},updateTime:{boolean:o,undefined:"undefined"},overrideItems:{boolean:o,undefined:"undefined"},__type__:{boolean:o,object:a}},end:{number:n,date:r,string:i,moment:d},format:{minorLabels:{millisecond:{string:i,undefined:"undefined"},second:{string:i,undefined:"undefined"},minute:{string:i,undefined:"undefined"},hour:{string:i,undefined:"undefined"},weekday:{string:i,undefined:"undefined"},day:{string:i,undefined:"undefined"},month:{string:i,undefined:"undefined"},year:{string:i,undefined:"undefined"},__type__:{object:a,function:"function"}},majorLabels:{millisecond:{string:i,undefined:"undefined"},second:{string:i,undefined:"undefined"},minute:{string:i,undefined:"undefined"},hour:{string:i,undefined:"undefined"},weekday:{string:i,undefined:"undefined"},day:{string:i,undefined:"undefined"},month:{string:i,undefined:"undefined"},year:{string:i,undefined:"undefined"},__type__:{object:a,function:"function"}},__type__:{object:a}},moment:{function:"function"},groupOrder:{string:i,function:"function"},groupEditable:{add:{boolean:o,undefined:"undefined"},remove:{boolean:o,undefined:"undefined"},order:{boolean:o,undefined:"undefined"},__type__:{boolean:o,object:a}},groupOrderSwap:{function:"function"},height:{string:i,number:n},hiddenDates:{start:{date:r,number:n,string:i,moment:d},end:{date:r,number:n,string:i,moment:d},repeat:{string:i},__type__:{object:a,array:s}},itemsAlwaysDraggable:{boolean:o},locale:{string:i},locales:{__any__:{any:l},__type__:{object:a}},margin:{axis:{number:n},item:{horizontal:{number:n,undefined:"undefined"},vertical:{number:n,undefined:"undefined"},__type__:{object:a,number:n}},__type__:{object:a,number:n}},max:{date:r,number:n,string:i,moment:d},maxHeight:{number:n,string:i},maxMinorChars:{number:n},min:{date:r,number:n,string:i,moment:d},minHeight:{number:n,string:i},moveable:{boolean:o},multiselect:{boolean:o},multiselectPerGroup:{boolean:o},onAdd:{function:"function"},onUpdate:{function:"function"},onMove:{function:"function"},onMoving:{function:"function"},onRemove:{function:"function"},onAddGroup:{function:"function"},onMoveGroup:{function:"function"},onRemoveGroup:{function:"function"},order:{function:"function"},orientation:{axis:{string:i,undefined:"undefined"},item:{string:i,undefined:"undefined"},__type__:{string:i,object:a}},selectable:{boolean:o},showCurrentTime:{boolean:o},showMajorLabels:{boolean:o},showMinorLabels:{boolean:o},stack:{boolean:o},stackSubgroups:{boolean:o},snap:{function:"function",null:"null"},start:{date:r,number:n,string:i,moment:d},template:{function:"function"},groupTemplate:{function:"function"},visibleFrameTemplate:{string:i,function:"function"},tooltip:{followMouse:{boolean:o},overflowMethod:{string:["cap","flip"]},__type__:{object:a}},tooltipOnItemUpdateTime:{template:{function:"function"},__type__:{boolean:o,object:a}},timeAxis:{scale:{string:i,undefined:"undefined"},step:{number:n,undefined:"undefined"},__type__:{object:a}},type:{string:i},width:{string:i,number:n},zoomable:{boolean:o},zoomKey:{string:["ctrlKey","altKey","metaKey",""]},zoomMax:{number:n},zoomMin:{number:n},__type__:{object:a}},c={global:{align:["center","left","right"],direction:!1,autoResize:!0,clickToUse:!1,editable:{add:!1,remove:!1,updateGroup:!1,updateTime:!1},end:"",format:{minorLabels:{millisecond:"SSS",second:"s",minute:"HH:mm",hour:"HH:mm",weekday:"ddd D",day:"D",month:"MMM",year:"YYYY"},majorLabels:{millisecond:"HH:mm:ss",second:"D MMMM HH:mm",minute:"ddd D MMMM",hour:"ddd D MMMM",weekday:"MMMM YYYY",day:"MMMM YYYY",month:"YYYY",year:""}},groupsDraggable:!1,height:"",locale:"",margin:{axis:[20,0,100,1],item:{horizontal:[10,0,100,1],vertical:[10,0,100,1]}},max:"",maxHeight:"",maxMinorChars:[7,0,20,1],min:"",minHeight:"",moveable:!1,multiselect:!1,multiselectPerGroup:!1,orientation:{axis:["both","bottom","top"],item:["bottom","top"]},selectable:!0,showCurrentTime:!1,showMajorLabels:!0,showMinorLabels:!0,stack:!0,stackSubgroups:!0,start:"",tooltip:{followMouse:!1,overflowMethod:"flip"},tooltipOnItemUpdateTime:!1,type:["box","point","range","background"],width:"100%",zoomable:!0,zoomKey:["ctrlKey","altKey","metaKey",""],zoomMax:[31536e10,10,31536e10,1],zoomMin:[10,10,31536e10,1]}};e.allOptions=u,e.configureOptions=c},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}function n(t,e,i,o){if(!(Array.isArray(i)||i instanceof u||i instanceof c)&&i instanceof Object){var n=o;o=i,i=n}o&&o.throttleRedraw&&console.warn('Graph2d option "throttleRedraw" is DEPRICATED and no longer supported. It will be removed in the next MAJOR release.');var s=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:{axis:"bottom",item:"bottom"},moment:d,width:null,height:null,maxHeight:null,minHeight:null},this.options=l.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{toScreen:s._toScreen.bind(s),toGlobalScreen:s._toGlobalScreen.bind(s),toTime:s._toTime.bind(s),toGlobalTime:s._toGlobalTime.bind(s)}},this.range=new p(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new m(this.body),this.components.push(this.timeAxis),this.currentTime=new v(this.body),this.components.push(this.currentTime),this.linegraph=new y(this.body),this.components.push(this.linegraph),this.itemsData=null,this.groupsData=null,this.on("tap",function(t){s.emit("click",s.getEventProperties(t))}),this.on("doubletap",function(t){s.emit("doubleClick",s.getEventProperties(t))}),this.dom.root.oncontextmenu=function(t){s.emit("contextmenu",s.getEventProperties(t))},o&&this.setOptions(o),i&&this.setGroups(i),e&&this.setItems(e),this._redraw()}var s=i(114),r=o(s),a=i(122),h=o(a),d=(i(95),i(108),i(84)),l=i(1),u=i(91),c=i(93),p=i(123),f=i(126),m=i(138),v=i(142),g=i(140),y=i(145),b=i(122).printStyle,_=i(153).allOptions,w=i(153).configureOptions;n.prototype=new f,n.prototype.setOptions=function(t){var e=h.default.validate(t,_);e===!0&&console.log("%cErrors have been found in the supplied options object.",b),f.prototype.setOptions.call(this,t)},n.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof u||t instanceof c?t:new u(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.linegraph&&this.linegraph.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){var o=void 0!=this.options.start?this.options.start:null,n=void 0!=this.options.end?this.options.end:null;this.setWindow(o,n,{animation:!1})}else this.fit({animation:!1})},n.prototype.setGroups=function(t){var e;e=t?t instanceof u||t instanceof c?t:new u(t):null,this.groupsData=e,this.linegraph.setGroups(e)},n.prototype.getLegend=function(t,e,i){return void 0===e&&(e=15),void 0===i&&(i=15),void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].getLegend(e,i):"cannot find group:'"+t+"'"},n.prototype.isGroupVisible=function(t){return void 0!==this.linegraph.groups[t]&&(this.linegraph.groups[t].visible&&(void 0===this.linegraph.options.groups.visibility[t]||1==this.linegraph.options.groups.visibility[t]))},n.prototype.getDataRange=function(){var t=null,e=null;for(var i in this.linegraph.groups)if(this.linegraph.groups.hasOwnProperty(i)&&1==this.linegraph.groups[i].visible)for(var o=0;os?s:t,e=null==e?s:e0&&d.push(u.screenToValue(n)),!c.hidden&&this.itemsData.length>0&&d.push(c.screenToValue(n)),{event:t,what:h,pageX:t.srcEvent?t.srcEvent.pageX:t.pageX,pageY:t.srcEvent?t.srcEvent.pageY:t.pageY,x:o,y:n,time:s,value:d}},n.prototype._createConfigurator=function(){return new r.default(this,this.dom.container,w)},t.exports=n},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}function n(t,e){this.id=a.randomUUID(),this.body=t,this.defaultOptions={yAxisOrientation:"left",defaultGroup:"default",sort:!0,sampling:!0,stack:!1,graphHeight:"400px",shaded:{enabled:!1,orientation:"bottom"},style:"line",barChart:{width:50,sideBySide:!1,align:"center"},interpolation:{enabled:!0,parametrization:"centripetal",alpha:.5},drawPoints:{enabled:!0,size:6,style:"square"},dataAxis:{},legend:{},groups:{visibility:{}}},this.options=a.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={},this.abortedGraphUpdate=!1,this.updateSVGheight=!1,this.updateSVGheightOnResize=!1,this.forceGraphUpdate=!0;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e,o){i._onAdd(e.items)},update:function(t,e,o){i._onUpdate(e.items)},remove:function(t,e,o){i._onRemove(e.items)}},this.groupListeners={add:function(t,e,o){i._onAddGroups(e.items)},update:function(t,e,o){i._onUpdateGroups(e.items)},remove:function(t,e,o){i._onRemoveGroups(e.items)}},this.items={},this.selection=[],this.lastStart=this.body.range.start,this.touchParams={},this.svgElements={},this.setOptions(e),this.groupsUsingDefaultStyles=[0],this.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=a.option.asSize(-i.props.width),i.forceGraphUpdate=!0,i.redraw.call(i)}),this._create(),this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups}}var s=i(62),r=o(s),a=i(1),h=i(90),d=i(91),l=i(93),u=i(124),c=i(146),p=i(148),f=i(152),m=i(149),v=i(151),g=i(150),y="__ungrouped__";n.prototype=new u,n.prototype._create=function(){var t=document.createElement("div");t.className="vis-line-graph",this.dom.frame=t,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="relative",this.svg.style.height=(""+this.options.graphHeight).replace("px","")+"px",this.svg.style.display="block",t.appendChild(this.svg),this.options.dataAxis.orientation="left",this.yAxisLeft=new c(this.body,this.options.dataAxis,this.svg,this.options.groups),this.options.dataAxis.orientation="right",this.yAxisRight=new c(this.body,this.options.dataAxis,this.svg,this.options.groups),delete this.options.dataAxis.orientation,this.legendLeft=new f(this.body,this.options.legend,"left",this.options.groups),this.legendRight=new f(this.body,this.options.legend,"right",this.options.groups),this.show()},n.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","stack","height","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort","groups"];void 0===t.graphHeight&&void 0!==t.height?(this.updateSVGheight=!0,this.updateSVGheightOnResize=!0):void 0!==this.body.domProps.centerContainer.height&&void 0!==t.graphHeight&&parseInt((t.graphHeight+"").replace("px",""))0){var a={};for(this._getRelevantData(r,a,n,s),this._applySampling(r,a),e=0;e0)switch(t.options.style){case"line":l.hasOwnProperty(r[e])||(l[r[e]]=v.calcPath(a[r[e]],t)),v.draw(l[r[e]],t,this.framework);case"point":case"points":"point"!=t.options.style&&"points"!=t.options.style&&1!=t.options.drawPoints.enabled||g.draw(a[r[e]],t,this.framework);break;case"bar":}}}return h.cleanupElements(this.svgElements),!1},n.prototype._stack=function(t,e){var i,o,n,s,r;i=0;for(var a=0;at[a].x){r=e[h],s=0==h?r:e[h-1],i=h;break} +}void 0===r&&(s=e[e.length-1],r=e[e.length-1]),o=r.x-s.x,n=r.y-s.y,0==o?t[a].y=t[a].orginalY+r.y:t[a].y=t[a].orginalY+n/o*(t[a].x-s.x)+s.y}},n.prototype._getRelevantData=function(t,e,i,o){var n,s,r,h;if(t.length>0)for(s=0;s0)for(var o=0;o0){var s=1,r=n.length,a=this.body.util.toGlobalScreen(n[n.length-1].x)-this.body.util.toGlobalScreen(n[0].x),h=r/a;s=Math.min(Math.ceil(.2*r),Math.max(1,Math.round(h)));for(var d=new Array(r),l=0;l0){for(s=0;s0&&(n=this.groups[t[s]],r.stack===!0&&"bar"===r.style?"left"===r.yAxisOrientation?a=a.concat(n.getItems()):h=h.concat(n.getItems()):i[t[s]]=n.getYRange(o,t[s]));m.getStackedYRange(a,i,t,"__barStackLeft","left"),m.getStackedYRange(h,i,t,"__barStackRight","right")}},n.prototype._updateYAxis=function(t,e){var i,o,n=!1,s=!1,r=!1,a=1e9,h=1e9,d=-1e9,l=-1e9;if(t.length>0){for(var u=0;ui?i:a,d=di?i:h,l=l=0&&t._redrawLabel(o-2,e.val,i,"vis-y-axis vis-major",t.props.majorCharHeight),t.master===!0&&(n?t._redrawLine(o,i,"vis-grid vis-horizontal vis-major",t.options.majorLinesOffset,t.props.majorLineWidth):t._redrawLine(o,i,"vis-grid vis-horizontal vis-minor",t.options.minorLinesOffset,t.props.minorLineWidth))});var a=0;void 0!==this.options[i].title&&void 0!==this.options[i].title.text&&(a=this.props.titleCharHeight);var d=this.options.icons===!0?Math.max(this.options.iconWidth,a)+this.options.labelOffsetX+15:a+this.options.labelOffsetX+15;return this.maxLabelSize>this.width-d&&this.options.visible===!0?(this.width=this.maxLabelSize+d,this.options.width=this.width+"px",h.cleanupElements(this.DOMelements.lines),h.cleanupElements(this.DOMelements.labels),this.redraw(),e=!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+d),this.options.width=this.width+"px",h.cleanupElements(this.DOMelements.lines),h.cleanupElements(this.DOMelements.labels),this.redraw(),e=!0):(h.cleanupElements(this.DOMelements.lines),h.cleanupElements(this.DOMelements.labels),e=!1),e},n.prototype.convertValue=function(t){return this.scale.convertValue(t)},n.prototype.screenToValue=function(t){return this.scale.screenToValue(t)},n.prototype._redrawLabel=function(t,e,i,o,n){var s=h.getDOMElement("div",this.DOMelements.labels,this.dom.frame);s.className=o,s.innerHTML=e,"left"===i?(s.style.left="-"+this.options.labelOffsetX+"px",s.style.textAlign="right"):(s.style.right="-"+this.options.labelOffsetX+"px",s.style.textAlign="left"),s.style.top=t-.5*n+this.options.labelOffsetY+"px",e+="";var r=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSize6&&void 0!==arguments[6]&&arguments[6],a=arguments.length>7&&void 0!==arguments[7]&&arguments[7];if(this.majorSteps=[1,2,5,10],this.minorSteps=[.25,.5,1,2],this.customLines=null,this.containerHeight=n,this.majorCharHeight=s,this._start=t,this._end=e,this.scale=1,this.minorStepIdx=-1,this.magnitudefactor=1,this.determineScale(),this.zeroAlign=r,this.autoScaleStart=i,this.autoScaleEnd=o,this.formattingFunction=a,i||o){var h=this,d=function(t){var e=t-t%(h.magnitudefactor*h.minorSteps[h.minorStepIdx]);return t%(h.magnitudefactor*h.minorSteps[h.minorStepIdx])>.5*(h.magnitudefactor*h.minorSteps[h.minorStepIdx])?e+h.magnitudefactor*h.minorSteps[h.minorStepIdx]:e};i&&(this._start-=2*this.magnitudefactor*this.minorSteps[this.minorStepIdx],this._start=d(this._start)),o&&(this._end+=this.magnitudefactor*this.minorSteps[this.minorStepIdx],this._end=d(this._end)),this.determineScale()}}i.prototype.setCharHeight=function(t){this.majorCharHeight=t},i.prototype.setHeight=function(t){this.containerHeight=t},i.prototype.determineScale=function(){var t=this._end-this._start;this.scale=this.containerHeight/t;var e=this.majorCharHeight/this.scale,i=t>0?Math.round(Math.log(t)/Math.LN10):0;this.minorStepIdx=-1,this.magnitudefactor=Math.pow(10,i);var o=0;i<0&&(o=i);for(var n=!1,s=o;Math.abs(s)<=Math.abs(i);s++){this.magnitudefactor=Math.pow(10,s);for(var r=0;r=e){n=!0,this.minorStepIdx=r;break}}if(n===!0)break}},i.prototype.is_major=function(t){return t%(this.magnitudefactor*this.majorSteps[this.minorStepIdx])===0},i.prototype.getStep=function(){return this.magnitudefactor*this.minorSteps[this.minorStepIdx]},i.prototype.getFirstMajor=function(){var t=this.magnitudefactor*this.majorSteps[this.minorStepIdx];return this.convertValue(this._start+(t-this._start%t)%t)},i.prototype.formatValue=function(t){var e=t.toPrecision(5);return"function"==typeof this.formattingFunction&&(e=this.formattingFunction(t)),"number"==typeof e?""+e:"string"==typeof e?e:t.toPrecision(5)},i.prototype.getLines=function(){for(var t=[],e=this.getStep(),i=(e-this._start%e)%e,o=this._start+i;this._end-o>1e-5;o+=e)o!=this._start&&t.push({major:this.is_major(o),y:this.convertValue(o),val:this.formatValue(o)});return t},i.prototype.followScale=function(t){var e=this.minorStepIdx,i=this._start,o=this._end,n=this,s=function(){n.magnitudefactor*=2},r=function(){n.magnitudefactor/=2};t.minorStepIdx<=1&&this.minorStepIdx<=1||t.minorStepIdx>1&&this.minorStepIdx>1||(t.minorStepIdxo+1e-5)r(),d=!1;else{if(!this.autoScaleStart&&this._start=0)){r(),d=!1;continue}console.warn("Can't adhere to given 'min' range, due to zeroalign")}this.autoScaleStart&&this.autoScaleEnd&&ue.x?1:-1})):this.itemsData=[]},n.prototype.getItems=function(){return this.itemsData},n.prototype.setZeroPosition=function(t){this.zeroPosition=t},n.prototype.setOptions=function(t){if(void 0!==t){var e=["sampling","style","sort","yAxisOrientation","barChart","zIndex","excludeFromStacking","excludeFromLegend"];a.selectiveDeepExtend(e,this.options,t),"function"==typeof t.drawPoints&&(t.drawPoints={onRender:t.drawPoints}),a.mergeOptions(this.options,t,"interpolation"),a.mergeOptions(this.options,t,"drawPoints"),a.mergeOptions(this.options,t,"shaded"),t.interpolation&&"object"==(0,r.default)(t.interpolation)&&t.interpolation.parametrization&&("uniform"==t.interpolation.parametrization?this.options.interpolation.alpha=0:"chordal"==t.interpolation.parametrization?this.options.interpolation.alpha=1:(this.options.interpolation.parametrization="centripetal",this.options.interpolation.alpha=.5))}},n.prototype.update=function(t){this.group=t,this.content=t.content||"graph",this.className=t.className||this.className||"vis-graph-group"+this.groupsUsingDefaultStyles[0]%10,this.visible=void 0===t.visible||t.visible,this.style=t.style,this.setOptions(t.options)},n.prototype.getLegend=function(t,e,i,o,n){if(void 0==i||null==i){var s=document.createElementNS("http://www.w3.org/2000/svg","svg");i={svg:s,svgElements:{},options:this.options,groups:[this]}}switch(void 0!=o&&null!=o||(o=0),void 0!=n&&null!=n||(n=.5*e),this.options.style){case"line":d.drawIcon(this,o,n,t,e,i);break;case"points":case"point":l.drawIcon(this,o,n,t,e,i);break;case"bar":h.drawIcon(this,o,n,t,e,i)}return{icon:i.svg,label:this.content,orientation:this.options.yAxisOrientation}},n.prototype.getYRange=function(t){for(var e=t[0].y,i=t[0].y,o=0;ot[o].y?t[o].y:e,i=i0&&(i=Math.min(i,Math.abs(e[o-1].screen_x-e[o].screen_x))),0===i&&(void 0===t[e[o].screen_x]&&(t[e[o].screen_x]={amount:0,resolved:0,accumulatedPositive:0,accumulatedNegative:0}),t[e[o].screen_x].amount+=1)},o._getSafeDrawData=function(t,e,i){var o,n;return t0?(o=t0){t.sort(function(t,e){return t.screen_x===e.screen_x?t.groupIde[s].screen_y?e[s].screen_y:o,n=nt[r].accumulatedNegative?t[r].accumulatedNegative:o,o=o>t[r].accumulatedPositive?t[r].accumulatedPositive:o,n=n0){var i=[];return i=1==e.options.interpolation.enabled?o._catmullRom(t,e):o._linear(t)}},o.drawIcon=function(t,e,i,o,s,r){var a,h,d=.5*s,l=n.getSVGElement("rect",r.svgElements,r.svg);if(l.setAttributeNS(null,"x",e),l.setAttributeNS(null,"y",i-d),l.setAttributeNS(null,"width",o),l.setAttributeNS(null,"height",2*d),l.setAttributeNS(null,"class","vis-outline"),a=n.getSVGElement("path",r.svgElements,r.svg),a.setAttributeNS(null,"class",t.className),void 0!==t.style&&a.setAttributeNS(null,"style",t.style),a.setAttributeNS(null,"d","M"+e+","+i+" L"+(e+o)+","+i),1==t.options.shaded.enabled&&(h=n.getSVGElement("path",r.svgElements,r.svg),"top"==t.options.shaded.orientation?h.setAttributeNS(null,"d","M"+e+", "+(i-d)+"L"+e+","+i+" L"+(e+o)+","+i+" L"+(e+o)+","+(i-d)):h.setAttributeNS(null,"d","M"+e+","+i+" L"+e+","+(i+d)+" L"+(e+o)+","+(i+d)+"L"+(e+o)+","+i),h.setAttributeNS(null,"class",t.className+" vis-icon-fill"),void 0!==t.options.shaded.style&&""!==t.options.shaded.style&&h.setAttributeNS(null,"style",t.options.shaded.style)),1==t.options.drawPoints.enabled){var u={style:t.options.drawPoints.style,styles:t.options.drawPoints.styles,size:t.options.drawPoints.size,className:t.className};n.drawPoint(e+.5*o,i,u,r.svgElements,r.svg)}},o.drawShading=function(t,e,i,o){if(1==e.options.shaded.enabled){var s=Number(o.svg.style.height.replace("px","")),r=n.getSVGElement("path",o.svgElements,o.svg),a="L";1==e.options.interpolation.enabled&&(a="C");var h,d=0;d="top"==e.options.shaded.orientation?0:"bottom"==e.options.shaded.orientation?s:Math.min(Math.max(0,e.zeroPosition),s),h="group"==e.options.shaded.orientation&&null!=i&&void 0!=i?"M"+t[0][0]+","+t[0][1]+" "+this.serializePath(t,a,!1)+" L"+i[i.length-1][0]+","+i[i.length-1][1]+" "+this.serializePath(i,a,!0)+i[0][0]+","+i[0][1]+" Z":"M"+t[0][0]+","+t[0][1]+" "+this.serializePath(t,a,!1)+" V"+d+" H"+t[0][0]+" Z",r.setAttributeNS(null,"class",e.className+" vis-fill"),void 0!==e.options.shaded.style&&r.setAttributeNS(null,"style",e.options.shaded.style),r.setAttributeNS(null,"d",h)}},o.draw=function(t,e,i){if(null!=t&&void 0!=t){var o=n.getSVGElement("path",i.svgElements,i.svg);o.setAttributeNS(null,"class",e.className),void 0!==e.style&&o.setAttributeNS(null,"style",e.style);var s="L";1==e.options.interpolation.enabled&&(s="C"),o.setAttributeNS(null,"d","M"+t[0][0]+","+t[0][1]+" "+this.serializePath(t,s,!1))}},o.serializePath=function(t,e,i){if(t.length<2)return"";var o=e;if(i)for(var n=t.length-2;n>0;n--)o+=t[n][0]+","+t[n][1]+" ";else for(var n=1;n0&&(f=1/f),m=3*v*(v+g),m>0&&(m=1/m),a={screen_x:(-b*o.screen_x+c*n.screen_x+_*s.screen_x)*f,screen_y:(-b*o.screen_y+c*n.screen_y+_*s.screen_y)*f},h={screen_x:(y*n.screen_x+p*s.screen_x-b*r.screen_x)*m,screen_y:(y*n.screen_y+p*s.screen_y-b*r.screen_y)*m},0==a.screen_x&&0==a.screen_y&&(a=n),0==h.screen_x&&0==h.screen_y&&(h=s),x.push([a.screen_x,a.screen_y]),x.push([h.screen_x,h.screen_y]),x.push([s.screen_x,s.screen_y]);return x},o._linear=function(t){for(var e=[],i=0;i")}this.dom.textArea.innerHTML=s,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},n.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){var t=(0,r.default)(this.groups);t.sort(function(t,e){return t0){var i=this.groupIndex%this.groupsArray.length;this.groupIndex++,e={},e.color=this.groups[this.groupsArray[i]],this.groups[t]=e}else{var o=this.defaultIndex%this.defaultGroups.length;this.defaultIndex++,e={},e.color=this.defaultGroups[o],this.groups[t]=e}return e}},{key:"add",value:function(t,e){return this.groups[t]=e,this.groupsArray.push(t),e}}]),t}();e.default=d},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(115),s=o(n),r=i(116),a=o(r),h=i(159),d=o(h),l=i(160),u=o(l),c=i(1),p=i(91),f=i(93),m=function(){function t(e,i,o,n){var r=this;(0,s.default)(this,t),this.body=e,this.images=i,this.groups=o,this.layoutEngine=n,this.body.functions.createNode=this.create.bind(this),this.nodesListeners={add:function(t,e){r.add(e.items)},update:function(t,e){r.update(e.items,e.data)},remove:function(t,e){r.remove(e.items)}},this.options={},this.defaultOptions={borderWidth:1,borderWidthSelected:2,brokenImage:void 0,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},fixed:{x:!1,y:!1},font:{color:"#343434",size:14,face:"arial",background:"none",strokeWidth:0,strokeColor:"#ffffff",align:"center",vadjust:0,multi:!1,bold:{mod:"bold"},boldital:{mod:"bold italic"},ital:{mod:"italic"},mono:{mod:"",size:15,face:"courier new",vadjust:2}},group:void 0,hidden:!1,icon:{face:"FontAwesome",code:void 0,size:50,color:"#2B7CE9"},image:void 0,label:void 0,labelHighlightBold:!0,level:void 0,margin:{top:5,right:5,bottom:5,left:5},mass:1,physics:!0,scaling:{min:10,max:30,label:{enabled:!1,min:14,max:30,maxVisible:30,drawThreshold:5},customScalingFunction:function(t,e,i,o){if(e===t)return.5;var n=1/(e-t);return Math.max(0,(o-t)*n)}},shadow:{enabled:!1,color:"rgba(0,0,0,0.5)",size:10,x:5,y:5},shape:"ellipse",shapeProperties:{borderDashes:!1,borderRadius:6,interpolation:!0,useImageSize:!1,useBorderWithImage:!1},size:25,title:void 0,value:void 0,x:void 0,y:void 0},c.extend(this.options,this.defaultOptions),this.bindEventListeners()}return(0,a.default)(t,[{key:"bindEventListeners",value:function(){var t=this;this.body.emitter.on("refreshNodes",this.refresh.bind(this)),this.body.emitter.on("refresh",this.refresh.bind(this)),this.body.emitter.on("destroy",function(){c.forEach(t.nodesListeners,function(e,i){t.body.data.nodes&&t.body.data.nodes.off(i,e)}),delete t.body.functions.createNode,delete t.nodesListeners.add,delete t.nodesListeners.update,delete t.nodesListeners.remove,delete t.nodesListeners})}},{key:"setOptions",value:function(t){if(this.nodeOptions=t,void 0!==t){if(d.default.parseOptions(this.options,t),void 0!==t.shape)for(var e in this.body.nodes)this.body.nodes.hasOwnProperty(e)&&this.body.nodes[e].updateShape();if(void 0!==t.font){u.default.parseOptions(this.options.font,t);for(var i in this.body.nodes)this.body.nodes.hasOwnProperty(i)&&(this.body.nodes[i].updateLabelModule(),this.body.nodes[i]._reset())}if(void 0!==t.size)for(var o in this.body.nodes)this.body.nodes.hasOwnProperty(o)&&this.body.nodes[o]._reset();void 0===t.hidden&&void 0===t.physics||this.body.emitter.emit("_dataChanged")}}},{key:"setData",value:function(t){var e=this,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1],o=this.body.data.nodes;if(t instanceof p||t instanceof f)this.body.data.nodes=t;else if(Array.isArray(t))this.body.data.nodes=new p,this.body.data.nodes.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.body.data.nodes=new p}o&&c.forEach(this.nodesListeners,function(t,e){o.off(e,t)}),this.body.nodes={},this.body.data.nodes&&!function(){var t=e;c.forEach(e.nodesListeners,function(e,i){t.body.data.nodes.on(i,e)});var i=e.body.data.nodes.getIds();e.add(i,!0)}(),i===!1&&this.body.emitter.emit("_dataChanged")}},{key:"add",value:function(t){for(var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=void 0,o=[],n=0;n1&&void 0!==arguments[1]?arguments[1]:d.default;return new e(t,this.body,this.images,this.groups,this.options,this.defaultOptions,this.nodeOptions)}},{key:"refresh",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=this.body.nodes;for(var i in e){var o=void 0;e.hasOwnProperty(i)&&(o=e[i]);var n=this.body.data.nodes._data[i];void 0!==o&&void 0!==n&&(t===!0&&o.setOptions({x:null,y:null}),o.setOptions({fixed:!1}),o.setOptions(n))}}},{key:"getPositions",value:function(t){var e={};if(void 0!==t){if(Array.isArray(t)===!0){for(var i=0;it.left&&this.shape.topt.top}},{key:"isBoundingBoxOverlappingWith",value:function(t){return this.shape.boundingBox.leftt.left&&this.shape.boundingBox.topt.top}}],[{key:"parseOptions",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},n=["color","font","fixed","shadow"];if(j.selectiveNotDeepExtend(n,t,e,i),j.mergeOptions(t,e,"shadow",i,o),void 0!==e.color&&null!==e.color){var s=j.parseColor(e.color);j.fillIfDefined(t.color,s)}else i===!0&&null===e.color&&(t.color=j.bridgeObject(o.color));void 0!==e.fixed&&null!==e.fixed&&("boolean"==typeof e.fixed?(t.fixed.x=e.fixed,t.fixed.y=e.fixed):(void 0!==e.fixed.x&&"boolean"==typeof e.fixed.x&&(t.fixed.x=e.fixed.x),void 0!==e.fixed.y&&"boolean"==typeof e.fixed.y&&(t.fixed.y=e.fixed.y))),void 0!==e.font&&null!==e.font?u.default.parseOptions(t.font,e):i===!0&&null===e.font&&(t.font=j.bridgeObject(o.font)),void 0!==e.scaling&&j.mergeOptions(t.scaling,e.scaling,"label",i,o.scaling)}}]),t}();e.default=W},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(161),s=o(n),r=i(2),a=o(r),h=i(62),d=o(h),l=i(115),u=o(l),c=i(116),p=o(c),f=i(1),m=function(){function t(e,i){var o=arguments.length>2&&void 0!==arguments[2]&&arguments[2];(0,u.default)(this,t),this.body=e,this.pointToSelf=!1,this.baseSize=void 0,this.fontOptions={},this.setOptions(i),this.size={top:0,left:0,width:0,height:0,yLine:0},this.isEdgeLabel=o}return(0,p.default)(t,[{key:"setOptions",value:function(e){var i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.elementOptions=e,this.fontOptions=f.deepExtend({},e.font,!0),void 0!==e.label&&(this.labelDirty=!0),void 0!==e.font&&(t.parseOptions(this.fontOptions,e,i),"string"==typeof e.font?this.baseSize=this.fontOptions.size:"object"===(0,d.default)(e.font)&&void 0!==e.font.size&&(this.baseSize=e.font.size))}},{key:"constrain",value:function(t,e,i){this.fontOptions.constrainWidth=!1,this.fontOptions.maxWdt=-1,this.fontOptions.minWdt=-1;var o=[e,t,i],n=f.topMost(o,"widthConstraint");if("number"==typeof n)this.fontOptions.maxWdt=Number(n),this.fontOptions.minWdt=Number(n);else if("object"===("undefined"==typeof n?"undefined":(0,d.default)(n))){var s=f.topMost(o,["widthConstraint","maximum"]);"number"==typeof s&&(this.fontOptions.maxWdt=Number(s));var r=f.topMost(o,["widthConstraint","minimum"]);"number"==typeof r&&(this.fontOptions.minWdt=Number(r))}this.fontOptions.constrainHeight=!1,this.fontOptions.minHgt=-1,this.fontOptions.valign="middle";var a=f.topMost(o,"heightConstraint");if("number"==typeof a)this.fontOptions.minHgt=Number(a);else if("object"===("undefined"==typeof a?"undefined":(0,d.default)(a))){var h=f.topMost(o,["heightConstraint","minimum"]);"number"==typeof h&&(this.fontOptions.minHgt=Number(h));var l=f.topMost(o,["heightConstraint","valign"]);"string"==typeof l&&("top"!==l&&"bottom"!==l||(this.fontOptions.valign=l))}}},{key:"choosify",value:function(t,e,i){this.fontOptions.chooser=!0;var o=[e,t,i],n=f.topMost(o,"chosen");if("boolean"==typeof n)this.fontOptions.chooser=n;else if("object"===("undefined"==typeof n?"undefined":(0,d.default)(n))){var s=f.topMost(o,["chosen","label"]);"boolean"!=typeof s&&"function"!=typeof s||(this.fontOptions.chooser=s)}}},{key:"adjustSizes",value:function(t){var e=t?t.right+t.left:0;this.fontOptions.constrainWidth&&(this.fontOptions.maxWdt-=e,this.fontOptions.minWdt-=e);var i=t?t.top+t.bottom:0;this.fontOptions.constrainHeight&&(this.fontOptions.minHgt-=i)}},{key:"propagateFonts",value:function(t,e,i){if(this.fontOptions.multi){var o=["bold","ital","boldital","mono"],n=!0,s=!1,r=void 0;try{for(var h,d=(0,a.default)(o);!(n=(h=d.next()).done);n=!0){var l=h.value,u=void 0;if(t.font&&(u=t.font[l]),"string"==typeof u){var c=u.split(" ");this.fontOptions[l].size=c[0].replace("px",""),this.fontOptions[l].face=c[1],this.fontOptions[l].color=c[2],this.fontOptions[l].vadjust=this.fontOptions.vadjust,this.fontOptions[l].mod=i.font[l].mod}else{if(u&&u.hasOwnProperty("face")?this.fontOptions[l].face=u.face:e.font&&e.font[l]&&e.font[l].hasOwnProperty("face")?this.fontOptions[l].face=e.font[l].face:"mono"===l?this.fontOptions[l].face=i.font[l].face:e.font&&e.font.hasOwnProperty("face")?this.fontOptions[l].face=e.font.face:this.fontOptions[l].face=this.fontOptions.face,u&&u.hasOwnProperty("color")?this.fontOptions[l].color=u.color:e.font&&e.font[l]&&e.font[l].hasOwnProperty("color")?this.fontOptions[l].color=e.font[l].color:e.font&&e.font.hasOwnProperty("color")?this.fontOptions[l].color=e.font.color:this.fontOptions[l].color=this.fontOptions.color,u&&u.hasOwnProperty("mod")?this.fontOptions[l].mod=u.mod:e.font&&e.font[l]&&e.font[l].hasOwnProperty("mod")?this.fontOptions[l].mod=e.font[l].mod:e.font&&e.font.hasOwnProperty("mod")?this.fontOptions[l].mod=e.font.mod:this.fontOptions[l].mod=i.font[l].mod,u&&u.hasOwnProperty("size"))this.fontOptions[l].size=u.size;else if(e.font&&e.font[l]&&e.font[l].hasOwnProperty("size"))this.fontOptions[l].size=e.font[l].size;else if(this.fontOptions[l].face===i.font[l].face&&this.fontOptions.face===i.font.face){var p=this.fontOptions.size/Number(i.font.size);this.fontOptions[l].size=i.font[l].size*p}else e.font&&e.font.hasOwnProperty("size")?this.fontOptions[l].size=e.font.size:this.fontOptions[l].size=this.fontOptions.size;if(u&&u.hasOwnProperty("vadjust"))this.fontOptions[l].vadjust=u.vadjust;else if(e.font&&e.font[l]&&e.font[l].hasOwnProperty("vadjust"))this.fontOptions[l].vadjust=e.font[l].vadjust;else if(this.fontOptions[l].face===i.font[l].face&&this.fontOptions.face===i.font.face){var f=this.fontOptions.size/Number(i.font.size);this.fontOptions[l].vadjust=i.font[l].vadjust*Math.round(f)}else e.font&&e.font.hasOwnProperty("vadjust")?this.fontOptions[l].vadjust=e.font.vadjust:this.fontOptions[l].vadjust=this.fontOptions.vadjust}this.fontOptions[l].size=Number(this.fontOptions[l].size),this.fontOptions[l].vadjust=Number(this.fontOptions[l].vadjust)}}catch(t){s=!0,r=t}finally{try{!n&&d.return&&d.return()}finally{if(s)throw r}}}}},{key:"draw",value:function(t,e,i,o,n){var s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"middle";if(void 0!==this.elementOptions.label){var r=this.fontOptions.size*this.body.view.scale;this.elementOptions.label&&r5&&void 0!==arguments[5]?arguments[5]:"middle",a=this.fontOptions.size,h=a*this.body.view.scale;h>=this.elementOptions.scaling.label.maxVisible&&(a=Number(this.elementOptions.scaling.label.maxVisible)/this.body.view.scale);var d=this.size.yLine,l=this._setAlignment(t,o,d,r),u=(0,s.default)(l,2);o=u[0],d=u[1],t.textAlign="left",o-=this.size.width/2,this.fontOptions.valign&&this.size.height>this.size.labelHeight&&("top"===this.fontOptions.valign&&(d-=(this.size.height-this.size.labelHeight)/2),"bottom"===this.fontOptions.valign&&(d+=(this.size.height-this.size.labelHeight)/2));for(var c=0;c0&&(t.lineWidth=m.strokeWidth,t.strokeStyle=b,t.lineJoin="round"),t.fillStyle=y,m.strokeWidth>0&&t.strokeText(m.text,o+p,d+m.vadjust),t.fillText(m.text,o+p,d+m.vadjust),p+=m.width}d+=this.lines[c].height}}},{key:"_setAlignment",value:function(t,e,i,o){if(this.isEdgeLabel&&"horizontal"!==this.fontOptions.align&&this.pointToSelf===!1){e=0,i=0;var n=2;"top"===this.fontOptions.align?(t.textBaseline="alphabetic",i-=2*n):"bottom"===this.fontOptions.align?(t.textBaseline="hanging",i+=2*n):t.textBaseline="middle"}else t.textBaseline=o;return[e,i]}},{key:"_getColor",value:function(t,e,i){var o=t||"#000000",n=i||"#ffffff";if(e<=this.elementOptions.scaling.label.drawThreshold){var s=Math.max(0,Math.min(1,1-(this.elementOptions.scaling.label.drawThreshold-e)));o=f.overrideOpacity(o,s),n=f.overrideOpacity(n,s)}return[o,n]}},{key:"getTextSize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return this._processLabel(t,e,i),{width:this.size.width,height:this.size.height,lineCount:this.lineCount}}},{key:"calculateLabelSize",value:function(t,e,i){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,n=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"middle";this.labelDirty===!0&&this._processLabel(t,e,i),this.size.left=o-.5*this.size.width,this.size.top=n-.5*this.size.height,this.size.yLine=n+.5*(1-this.lineCount)*this.fontOptions.size,"hanging"===s&&(this.size.top+=.5*this.fontOptions.size,this.size.top+=4,this.size.yLine+=4),this.labelDirty=!1}},{key:"decodeMarkupSystem",value:function(t){var e="none";return"markdown"===t||"md"===t?e="markdown":t!==!0&&"html"!==t||(e="html"),e}},{key:"splitBlocks",value:function(t,e){var i=this.decodeMarkupSystem(e);return"none"===i?[{text:t,mod:"normal"}]:"markdown"===i?this.splitMarkdownBlocks(t):"html"===i?this.splitHtmlBlocks(t):void 0}},{key:"splitMarkdownBlocks",value:function(t){var e=[],i={bold:!1,ital:!1,mono:!1,beginable:!0,spacing:!1,position:0,buffer:"",modStack:[]};for(i.mod=function(){return 0===this.modStack.length?"normal":this.modStack[0]},i.modName=function(){return 0===this.modStack.length?"normal":"mono"===this.modStack[0]?"mono":i.bold&&i.ital?"boldital":i.bold?"bold":i.ital?"ital":void 0},i.emitBlock=function(){arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.spacing&&(this.add(" "),this.spacing=!1),this.buffer.length>0&&(e.push({text:this.buffer,mod:this.modName()}),this.buffer="")},i.add=function(t){" "===t&&(i.spacing=!0),i.spacing&&(this.buffer+=" ",this.spacing=!1)," "!=t&&(this.buffer+=t)};i.position0&&void 0!==arguments[0]&&arguments[0];this.spacing&&(this.add(" "),this.spacing=!1),this.buffer.length>0&&(e.push({text:this.buffer,mod:this.modName()}),this.buffer="")},i.add=function(t){" "===t&&(i.spacing=!0),i.spacing&&(this.buffer+=" ",this.spacing=!1)," "!=t&&(this.buffer+=t)};i.position/.test(t.substr(i.position,3))?i.mono||i.ital||!//.test(t.substr(i.position,3))?!i.mono&&//.test(t.substr(i.position,6))?(i.emitBlock(),i.mono=!0,i.modStack.unshift("mono"),i.position+=5):!i.mono&&"bold"===i.mod()&&/<\/b>/.test(t.substr(i.position,4))?(i.emitBlock(),i.bold=!1,i.modStack.shift(),i.position+=3):!i.mono&&"ital"===i.mod()&&/<\/i>/.test(t.substr(i.position,4))?(i.emitBlock(),i.ital=!1,i.modStack.shift(),i.position+=3):"mono"===i.mod()&&/<\/code>/.test(t.substr(i.position,7))?(i.emitBlock(),i.mono=!1,i.modStack.shift(),i.position+=6):i.add(o):(i.emitBlock(),i.ital=!0,i.modStack.unshift("ital"),i.position+=2):(i.emitBlock(),i.bold=!0,i.modStack.unshift("bold"),i.position+=2):/&/.test(o)?/</.test(t.substr(i.position,4))?(i.add("<"),i.position+=3):/&/.test(t.substr(i.position,5))?(i.add("&"),i.position+=4):i.add("&"):i.add(o),i.position++}return i.emitBlock(),e}},{key:"getFormattingValues",value:function(t,e,i,o){var n={color:"normal"===o?this.fontOptions.color:this.fontOptions[o].color,size:"normal"===o?this.fontOptions.size:this.fontOptions[o].size,face:"normal"===o?this.fontOptions.face:this.fontOptions[o].face,mod:"normal"===o?"":this.fontOptions[o].mod,vadjust:"normal"===o?this.fontOptions.vadjust:this.fontOptions[o].vadjust,strokeWidth:this.fontOptions.strokeWidth,strokeColor:this.fontOptions.strokeColor};return"normal"===o?(e||i)&&(this.fontOptions.chooser===!0&&this.elementOptions.labelHighlightBold?n.mod="bold":"function"==typeof this.fontOptions.chooser&&this.fontOptions.chooser(t,n,this.elementOptions.id,e,i)):(e||i)&&"function"==typeof this.fontOptions.chooser&&this.fontOptions.chooser(t,n,this.elementOptions.id,e,i),t.font=(n.mod+" "+n.size+"px "+n.face).replace(/"/g,""),n.font=t.font,n.height=n.size,n}},{key:"differentState",value:function(t,e){return t!==this.fontOptions.selectedState&&e!==this.fontOptions.hoverState}},{key:"_processLabel",value:function(t,e,i){var o=0,n=0,s=[],r=0;if(s.add=function(t,e,i,o,n,s,r,a,h,d){this.length==t&&(this[t]={width:0,height:0,blocks:[]}),this[t].blocks.push({text:e,font:i,color:o,width:n,height:s,vadjust:r,mod:a,strokeWidth:h,strokeColor:d})},s.accumulate=function(t,e,i){this[t].width+=e,this[t].height=i>this[t].height?i:this[t].height},s.addAndAccumulate=function(t,e,i,o,n,s,r,a,h,d){this.add(t,e,i,o,n,s,r,a,h,d),this.accumulate(t,n,s)},void 0!==this.elementOptions.label){var a=String(this.elementOptions.label).split("\n"),h=a.length;if(this.elementOptions.font.multi)for(var d=0;d0)for(var m=this.getFormattingValues(t,e,i,l[f].mod),v=l[f].text.split(" "),g=!0,y="",b={width:0},_=void 0,w=0;wthis.fontOptions.maxWdt&&0!=_.width?(c=m.height>c?m.height:c,s.add(r,y,m.font,m.color,_.width,m.height,m.vadjust,l[f].mod,m.strokeWidth,m.strokeColor),s.accumulate(r,_.width,c),y="",g=!0,u=0,o=s[r].width>o?s[r].width:o,n+=s[r].height,r++):(y=y+x+v[w],w===v.length-1&&(c=m.height>c?m.height:c,u+=b.width,s.add(r,y,m.font,m.color,b.width,m.height,m.vadjust,l[f].mod,m.strokeWidth,m.strokeColor),s.accumulate(r,b.width,c),f===l.length-1&&(o=s[r].width>o?s[r].width:o,n+=s[r].height,r++)),w++,g=!1)}else{var k=this.getFormattingValues(t,e,i,l[f].mod),O=t.measureText(l[f].text);s.addAndAccumulate(r,l[f].text,k.font,k.color,O.width,k.height,k.vadjust,l[f].mod,k.strokeWidth,k.strokeColor),o=s[r].width>o?s[r].width:o,l.length-1===f&&(n+=s[r].height,r++)}}}else for(var D=0;D0)for(var S=a[D].split(" "),C="",T={width:0},E=void 0,P=0;Pthis.fontOptions.maxWdt&&0!=E.width?(s.addAndAccumulate(r,C,M.font,M.color,E.width,M.size,M.vadjust,"normal",M.strokeWidth,M.strokeColor),o=s[r].width>o?s[r].width:o,n+=s[r].height,C="",r++):(C=C+I+S[P],P===S.length-1&&(s.addAndAccumulate(r,C,M.font,M.color,T.width,M.size,M.vadjust,"normal",M.strokeWidth,M.strokeColor),o=s[r].width>o?s[r].width:o,n+=s[r].height,r++),P++)}else{var N=a[D],z=t.measureText(N);s.addAndAccumulate(r,N,M.font,M.color,z.width,M.size,M.vadjust,"normal",M.strokeWidth,M.strokeColor),o=s[r].width>o?s[r].width:o,n+=s[r].height,r++}}}this.fontOptions.minWdt>0&&o0&&n2&&void 0!==arguments[2]&&arguments[2];if("string"==typeof e.font){var o=e.font.split(" ");t.size=o[0].replace("px",""),t.face=o[1],t.color=o[2],t.vadjust=0}else"object"===(0,d.default)(e.font)&&f.fillIfDefined(t,e.font,i);t.size=Number(t.size),t.vadjust=Number(t.vadjust)}}]),t}();e.default=m},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}e.__esModule=!0;var n=i(162),s=o(n),r=i(2),a=o(r);e.default=function(){function t(t,e){var i=[],o=!0,n=!1,s=void 0;try{for(var r,h=(0,a.default)(t);!(o=(r=h.next()).done)&&(i.push(r.value),!e||i.length!==e);o=!0);}catch(t){n=!0,s=t}finally{try{!o&&h.return&&h.return()}finally{if(n)throw s}}return i}return function(e,i){if(Array.isArray(e))return e;if((0,s.default)(Object(e)))return t(e,i);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}()},function(t,e,i){t.exports={default:i(163),__esModule:!0}},function(t,e,i){i(4),i(50),t.exports=i(164)},function(t,e,i){var o=i(54),n=i(47)("iterator"),s=i(8);t.exports=i(17).isIterable=function(t){var e=Object(t);return void 0!==e[n]||"@@iterator"in e||s.hasOwnProperty(o(e))}},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(166),s=o(n),r=i(115),a=o(r),h=i(116),d=o(h),l=i(169),u=o(l),c=i(170),p=o(c),f=i(175),m=o(f),v=function(t){function e(t,i,o){(0,a.default)(this,e);var n=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return n._setMargins(o),n}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover;(void 0===this.width||this.labelModule.differentState(e,i))&&(this.textSize=this.labelModule.getTextSize(t,e,i),this.width=this.textSize.width+this.margin.right+this.margin.left,this.height=this.textSize.height+this.margin.top+this.margin.bottom,this.radius=this.width/2)}},{key:"draw",value:function(t,e,i,o,n,s){this.resize(t,o,n),this.left=e-this.width/2,this.top=i-this.height/2,t.strokeStyle=s.borderColor,t.lineWidth=s.borderWidth,t.lineWidth/=this.body.view.scale,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=s.color,t.roundRect(this.left,this.top,this.width,this.height,s.borderRadius),this.enableShadow(t,s),t.fill(),this.disableShadow(t,s),t.save(),s.borderWidth>0&&(this.enableBorderDashes(t,s),t.stroke(),this.disableBorderDashes(t,s)),t.restore(),this.updateBoundingBox(e,i,t,o,n),this.labelModule.draw(t,this.left+this.textSize.width/2+this.margin.left,this.top+this.textSize.height/2+this.margin.top,o,n)}},{key:"updateBoundingBox",value:function(t,e,i,o,n){this.resize(i,o,n),this.left=t-this.width/2,this.top=e-this.height/2;var s=this.options.shapeProperties.borderRadius;this.boundingBox.left=this.left-s,this.boundingBox.top=this.top-s,this.boundingBox.bottom=this.top+this.height+s,this.boundingBox.right=this.left+this.width+s}},{key:"distanceToBorder",value:function(t,e){this.resize(t);var i=this.options.borderWidth;return Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i}}]),e}(m.default);e.default=v},function(t,e,i){t.exports={default:i(167),__esModule:!0}},function(t,e,i){i(168),t.exports=i(17).Object.getPrototypeOf},function(t,e,i){var o=i(49),n=i(48);i(61)("getPrototypeOf",function(){return function(t){return n(o(t))}})},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}e.__esModule=!0;var n=i(62),s=o(n);e.default=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!==("undefined"==typeof e?"undefined":(0,s.default)(e))&&"function"!=typeof e?t:e}},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}e.__esModule=!0;var n=i(171),s=o(n),r=i(55),a=o(r),h=i(62),d=o(h);e.default=function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+("undefined"==typeof e?"undefined":(0,d.default)(e)));t.prototype=(0,a.default)(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(s.default?(0,s.default)(t,e):t.__proto__=e)}},function(t,e,i){t.exports={default:i(172),__esModule:!0}},function(t,e,i){i(173),t.exports=i(17).Object.setPrototypeOf},function(t,e,i){var o=i(15);o(o.S,"Object",{setPrototypeOf:i(174).set})},function(t,e,i){var o=i(23),n=i(22),s=function(t,e){if(n(t),!o(e)&&null!==e)throw TypeError(e+": can't set as prototype!")};t.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(t,e,o){try{o=i(18)(Function.call,i(78).f(Object.prototype,"__proto__").set,2),o(t,[]),e=!(t instanceof Array)}catch(t){e=!0}return function(t,i){return s(t,i),e?t.__proto__=i:o(t,i),t}}({},!1):void 0),check:s}},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(62),s=o(n),r=i(115),a=o(r),h=i(116),d=o(h),l=function(){function t(e,i,o){(0,a.default)(this,t),this.body=i,this.labelModule=o,this.setOptions(e),this.top=void 0,this.left=void 0,this.height=void 0,this.width=void 0,this.radius=void 0,this.margin=void 0,this.boundingBox={top:0,left:0,right:0,bottom:0}}return(0,d.default)(t,[{key:"setOptions",value:function(t){this.options=t}},{key:"_setMargins",value:function(t){this.margin={},this.options.margin&&("object"==(0,s.default)(this.options.margin)?(this.margin.top=this.options.margin.top,this.margin.right=this.options.margin.right,this.margin.bottom=this.options.margin.bottom,this.margin.left=this.options.margin.left):(this.margin.top=this.options.margin,this.margin.right=this.options.margin,this.margin.bottom=this.options.margin,this.margin.left=this.options.margin)),t.adjustSizes(this.margin)}},{key:"_distanceToBorder",value:function(t,e){var i=this.options.borderWidth;return this.resize(t),Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i}},{key:"enableShadow",value:function(t,e){e.shadow&&(t.shadowColor=e.shadowColor,t.shadowBlur=e.shadowSize,t.shadowOffsetX=e.shadowX,t.shadowOffsetY=e.shadowY)}},{key:"disableShadow",value:function(t,e){e.shadow&&(t.shadowColor="rgba(0,0,0,0)",t.shadowBlur=0,t.shadowOffsetX=0,t.shadowOffsetY=0)}},{key:"enableBorderDashes",value:function(t,e){if(e.borderDashes!==!1)if(void 0!==t.setLineDash){var i=e.borderDashes;i===!0&&(i=[5,15]),t.setLineDash(i)}else console.warn("setLineDash is not supported in this browser. The dashed borders cannot be used."),this.options.shapeProperties.borderDashes=!1,e.borderDashes=!1}},{key:"disableBorderDashes",value:function(t,e){e.borderDashes!==!1&&(void 0!==t.setLineDash?t.setLineDash([0]):(console.warn("setLineDash is not supported in this browser. The dashed borders cannot be used."),this.options.shapeProperties.borderDashes=!1,e.borderDashes=!1))}}]),t}();e.default=l},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(166),s=o(n),r=i(115),a=o(r),h=i(116),d=o(h),l=i(169),u=o(l),c=i(170),p=o(c),f=i(177),m=o(f),v=function(t){function e(t,i,o){(0,a.default)(this,e);var n=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return n._setMargins(o),n}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover;arguments.length>3&&void 0!==arguments[3]?arguments[3]:{size:this.options.size};if(void 0===this.width||this.labelModule.differentState(e,i)){ +this.textSize=this.labelModule.getTextSize(t,e,i);var o=Math.max(this.textSize.width+this.margin.right+this.margin.left,this.textSize.height+this.margin.top+this.margin.bottom);this.options.size=o/2,this.width=o,this.height=o,this.radius=this.width/2}}},{key:"draw",value:function(t,e,i,o,n,s){this.resize(t,o,n),this.left=e-this.width/2,this.top=i-this.height/2,this._drawRawCircle(t,e,i,o,n,s),this.boundingBox.top=i-s.size,this.boundingBox.left=e-s.size,this.boundingBox.right=e+s.size,this.boundingBox.bottom=i+s.size,this.updateBoundingBox(e,i),this.labelModule.draw(t,this.left+this.textSize.width/2+this.margin.left,i,o,n)}},{key:"updateBoundingBox",value:function(t,e){this.boundingBox.top=e-this.options.size,this.boundingBox.left=t-this.options.size,this.boundingBox.right=t+this.options.size,this.boundingBox.bottom=e+this.options.size}},{key:"distanceToBorder",value:function(t,e){return this.resize(t),.5*this.width}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(166),s=o(n),r=i(115),a=o(r),h=i(116),d=o(h),l=i(169),u=o(l),c=i(170),p=o(c),f=i(175),m=o(f),v=function(t){function e(t,i,o){(0,a.default)(this,e);var n=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return n.labelOffset=0,n.imageLoaded=!1,n}return(0,p.default)(e,t),(0,d.default)(e,[{key:"setOptions",value:function(t,e){this.options=t,e&&(this.imageObj=e)}},{key:"_resizeImage",value:function(){var t=!1;if(this.imageObj.width&&this.imageObj.height?this.imageLoaded===!1&&(this.imageLoaded=!0,t=!0):this.imageLoaded=!1,!this.width||!this.height||t===!0){var e,i,o;this.imageObj.width&&this.imageObj.height&&(e=0,i=0),this.options.shapeProperties.useImageSize===!1?this.imageObj.width>this.imageObj.height?(o=this.imageObj.width/this.imageObj.height,e=2*this.options.size*o||this.imageObj.width,i=2*this.options.size||this.imageObj.height):(o=this.imageObj.width&&this.imageObj.height?this.imageObj.height/this.imageObj.width:1,e=2*this.options.size,i=2*this.options.size*o):(e=this.imageObj.width,i=this.imageObj.height),this.width=e,this.height=i,this.radius=.5*this.width}}},{key:"_drawRawCircle",value:function(t,e,i,o,n,s){var r=s.borderWidth/this.body.view.scale;t.lineWidth=Math.min(this.width,r),t.strokeStyle=s.borderColor,t.fillStyle=s.color,t.circle(e,i,s.size),this.enableShadow(t,s),t.fill(),this.disableShadow(t,s),t.save(),r>0&&(this.enableBorderDashes(t,s),t.stroke(),this.disableBorderDashes(t,s)),t.restore()}},{key:"_drawImageAtPosition",value:function(t,e){if(0!=this.imageObj.width){t.globalAlpha=1,this.enableShadow(t,e);var i=this.imageObj.width/this.width/this.body.view.scale;if(i>2&&this.options.shapeProperties.interpolation===!0){var o=this.imageObj.width,n=this.imageObj.height,s=document.createElement("canvas");s.width=o,s.height=o;var r=s.getContext("2d");i*=.5,o*=.5,n*=.5,r.drawImage(this.imageObj,0,0,o,n);for(var a=0,h=1;i>2&&h<4;)r.drawImage(s,a,0,o,n,a+o,0,o/2,n/2),a+=o,i*=.5,o*=.5,n*=.5,h+=1;t.drawImage(s,a,0,o,n,this.left,this.top,this.width,this.height)}else t.drawImage(this.imageObj,this.left,this.top,this.width,this.height);this.disableShadow(t,e)}}},{key:"_drawImageLabel",value:function(t,e,i,o,n){var s,r=0;if(void 0!==this.height){r=.5*this.height;var a=this.labelModule.getTextSize(t,o,n);a.lineCount>=1&&(r+=a.height/2)}s=i+r,this.options.label&&(this.labelOffset=r),this.labelModule.draw(t,e,s,o,n,"hanging")}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(166),s=o(n),r=i(115),a=o(r),h=i(116),d=o(h),l=i(169),u=o(l),c=i(170),p=o(c),f=i(177),m=o(f),v=function(t){function e(t,i,o,n){(0,a.default)(this,e);var r=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return r.imageObj=n,r._swapToImageResizeWhenImageLoaded=!0,r}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover;if(void 0===this.imageObj.src||void 0===this.imageObj.width||void 0===this.imageObj.height||this.labelModule.differentState(e,i)){var o=2*this.options.size;this.width=o,this.height=o,this._swapToImageResizeWhenImageLoaded=!0,this.radius=.5*this.width}else this._swapToImageResizeWhenImageLoaded&&(this.width=void 0,this.height=void 0,this._swapToImageResizeWhenImageLoaded=!1),this._resizeImage()}},{key:"draw",value:function(t,e,i,o,n,s){this.resize(),this.left=e-this.width/2,this.top=i-this.height/2;Math.min(.5*this.height,.5*this.width);this._drawRawCircle(t,e,i,o,n,s),t.save(),t.clip(),this._drawImageAtPosition(t,s),t.restore(),this._drawImageLabel(t,e,i,o,n),this.updateBoundingBox(e,i)}},{key:"updateBoundingBox",value:function(t,e){this.boundingBox.top=e-this.options.size,this.boundingBox.left=t-this.options.size,this.boundingBox.right=t+this.options.size,this.boundingBox.bottom=e+this.options.size,this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelOffset)}},{key:"distanceToBorder",value:function(t,e){return this.resize(t),.5*this.width}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(166),s=o(n),r=i(115),a=o(r),h=i(116),d=o(h),l=i(169),u=o(l),c=i(170),p=o(c),f=i(175),m=o(f),v=function(t){function e(t,i,o){(0,a.default)(this,e);var n=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return n._setMargins(o),n}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t,e,i){if(void 0===this.width||this.labelModule.differentState(e,i)){this.textSize=this.labelModule.getTextSize(t,e,i);var o=this.textSize.width+this.margin.right+this.margin.left;this.width=o,this.height=o,this.radius=this.width/2}}},{key:"draw",value:function(t,e,i,o,n,s){this.resize(t,o,n),this.left=e-this.width/2,this.top=i-this.height/2;var r=s.borderWidth/this.body.view.scale;t.lineWidth=Math.min(this.width,r),t.strokeStyle=s.borderColor,t.fillStyle=s.color,t.database(e-this.width/2,i-this.height/2,this.width,this.height),this.enableShadow(t,s),t.fill(),this.disableShadow(t,s),t.save(),r>0&&(this.enableBorderDashes(t,s),t.stroke(),this.disableBorderDashes(t,s)),t.restore(),this.updateBoundingBox(e,i,t,o,n),this.labelModule.draw(t,this.left+this.textSize.width/2+this.margin.left,this.top+this.textSize.height/2+this.margin.top,o,n)}},{key:"updateBoundingBox",value:function(t,e,i,o,n){this.resize(i,o,n),this.left=t-.5*this.width,this.top=e-.5*this.height,this.boundingBox.left=this.left,this.boundingBox.top=this.top,this.boundingBox.bottom=this.top+this.height,this.boundingBox.right=this.left+this.width}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(166),s=o(n),r=i(115),a=o(r),h=i(116),d=o(h),l=i(169),u=o(l),c=i(170),p=o(c),f=i(181),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover,o=arguments[3];this._resizeShape(e,i,o)}},{key:"draw",value:function(t,e,i,o,n,s){this._drawShape(t,"diamond",4,e,i,o,n,s)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(166),s=o(n),r=i(115),a=o(r),h=i(116),d=o(h),l=i(169),u=o(l),c=i(170),p=o(c),f=i(175),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"_resizeShape",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.selected,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.hover,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{size:this.options.size};if(void 0===this.width||this.labelModule.differentState(t,e)){var o=2*i.size;this.width=o,this.height=o,this.radius=.5*this.width}}},{key:"_drawShape",value:function(t,e,i,o,n,s,r,a){this._resizeShape(s,r,a),this.left=o-this.width/2,this.top=n-this.height/2;var h=a.borderWidth/this.body.view.scale;if(t.lineWidth=Math.min(this.width,h),t.strokeStyle=a.borderColor,t.fillStyle=a.color,t[e](o,n,a.size),this.enableShadow(t,a),t.fill(),this.disableShadow(t,a),t.save(),h>0&&(this.enableBorderDashes(t,a),t.stroke(),this.disableBorderDashes(t,a)),t.restore(),void 0!==this.options.label){var d=n+.5*this.height+3;this.labelModule.draw(t,o,d,s,r,"hanging")}this.updateBoundingBox(o,n)}},{key:"updateBoundingBox",value:function(t,e){this.boundingBox.top=e-this.options.size,this.boundingBox.left=t-this.options.size,this.boundingBox.right=t+this.options.size,this.boundingBox.bottom=e+this.options.size,void 0!==this.options.label&&this.labelModule.size.width>0&&(this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelModule.size.height+3))}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(166),s=o(n),r=i(115),a=o(r),h=i(116),d=o(h),l=i(169),u=o(l),c=i(170),p=o(c),f=i(181),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover,o=arguments[3];this._resizeShape(e,i,o)}},{key:"draw",value:function(t,e,i,o,n,s){this._drawShape(t,"circle",2,e,i,o,n,s)}},{key:"distanceToBorder",value:function(t,e){return this.resize(t),this.options.size}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(166),s=o(n),r=i(115),a=o(r),h=i(116),d=o(h),l=i(169),u=o(l),c=i(170),p=o(c),f=i(175),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.selected,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.hover;if(void 0===this.width||this.labelModule.differentState(e,i)){var o=this.labelModule.getTextSize(t,e,i);this.height=2*o.height,this.width=o.width+this.height,this.radius=.5*this.width}}},{key:"draw",value:function(t,e,i,o,n,s){this.resize(t,o,n),this.left=e-.5*this.width,this.top=i-.5*this.height;var r=s.borderWidth/this.body.view.scale;t.lineWidth=Math.min(this.width,r),t.strokeStyle=s.borderColor,t.fillStyle=s.color,t.ellipse(this.left,this.top,this.width,this.height),this.enableShadow(t,s),t.fill(),this.disableShadow(t,s),t.save(),r>0&&(this.enableBorderDashes(t,s),t.stroke(),this.disableBorderDashes(t,s)),t.restore(),this.updateBoundingBox(e,i,t,o,n),this.labelModule.draw(t,e,i,o,n)}},{key:"updateBoundingBox",value:function(t,e,i,o,n){this.resize(i,o,n),this.left=t-.5*this.width,this.top=e-.5*this.height,this.boundingBox.left=this.left,this.boundingBox.top=this.top,this.boundingBox.bottom=this.top+this.height,this.boundingBox.right=this.left+this.width}},{key:"distanceToBorder",value:function(t,e){this.resize(t);var i=.5*this.width,o=.5*this.height,n=Math.sin(e)*i,s=Math.cos(e)*o;return i*o/Math.sqrt(n*n+s*s)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(166),s=o(n),r=i(115),a=o(r),h=i(116),d=o(h),l=i(169),u=o(l),c=i(170),p=o(c),f=i(175),m=o(f),v=function(t){function e(t,i,o){(0,a.default)(this,e);var n=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return n._setMargins(o),n}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t,e,i){(void 0===this.width||this.labelModule.differentState(e,i))&&(this.iconSize={width:Number(this.options.icon.size),height:Number(this.options.icon.size)},this.width=this.iconSize.width+this.margin.right+this.margin.left,this.height=this.iconSize.height+this.margin.top+this.margin.bottom,this.radius=.5*this.width)}},{key:"draw",value:function(t,e,i,o,n,s){if(this.resize(t,o,n),this.options.icon.size=this.options.icon.size||50,this.left=e-this.width/2,this.top=i-this.height/2,this._icon(t,e,i,o,n,s),void 0!==this.options.label){var r=5;this.labelModule.draw(t,this.left+this.iconSize.width/2+this.margin.left,i+this.height/2+r,o)}this.updateBoundingBox(e,i)}},{key:"updateBoundingBox",value:function(t,e){if(this.boundingBox.top=e-.5*this.options.icon.size,this.boundingBox.left=t-.5*this.options.icon.size,this.boundingBox.right=t+.5*this.options.icon.size,this.boundingBox.bottom=e+.5*this.options.icon.size,void 0!==this.options.label&&this.labelModule.size.width>0){var i=5;this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelModule.size.height+i)}}},{key:"_icon",value:function(t,e,i,o,n,s){var r=Number(this.options.icon.size);void 0!==this.options.icon.code?(t.font=(o?"bold ":"")+r+"px "+this.options.icon.face,t.fillStyle=this.options.icon.color||"black",t.textAlign="center",t.textBaseline="middle",this.enableShadow(t,s),t.fillText(this.options.icon.code,e,i),this.disableShadow(t,s)):console.error("When using the icon shape, you need to define the code in the icon options object. This can be done per node or globally.")}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(166),s=o(n),r=i(115),a=o(r),h=i(116),d=o(h),l=i(169),u=o(l),c=i(170),p=o(c),f=i(177),m=o(f),v=function(t){function e(t,i,o,n){(0,a.default)(this,e);var r=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return r.imageObj=n,r}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(){this._resizeImage()}},{key:"draw",value:function(t,e,i,o,n,s){if(this.resize(),this.left=e-this.width/2,this.top=i-this.height/2,this.options.shapeProperties.useBorderWithImage===!0){var r=this.options.borderWidth,a=this.options.borderWidthSelected||2*this.options.borderWidth,h=(o?a:r)/this.body.view.scale;t.lineWidth=Math.min(this.width,h),t.beginPath(),t.strokeStyle=o?this.options.color.highlight.border:n?this.options.color.hover.border:this.options.color.border,t.fillStyle=o?this.options.color.highlight.background:n?this.options.color.hover.background:this.options.color.background,t.rect(this.left-.5*t.lineWidth,this.top-.5*t.lineWidth,this.width+t.lineWidth,this.height+t.lineWidth),t.fill(),t.save(),h>0&&(this.enableBorderDashes(t,s),t.stroke(),this.disableBorderDashes(t,s)),t.restore(),t.closePath()}this._drawImageAtPosition(t,s),this._drawImageLabel(t,e,i,o,n),this.updateBoundingBox(e,i)}},{key:"updateBoundingBox",value:function(t,e){this.resize(),this.left=t-this.width/2,this.top=e-this.height/2,this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,void 0!==this.options.label&&this.labelModule.size.width>0&&(this.boundingBox.left=Math.min(this.boundingBox.left,this.labelModule.size.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelModule.size.left+this.labelModule.size.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelOffset))}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(166),s=o(n),r=i(115),a=o(r),h=i(116),d=o(h),l=i(169),u=o(l),c=i(170),p=o(c),f=i(181),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(){this._resizeShape()}},{key:"draw",value:function(t,e,i,o,n,s){this._drawShape(t,"square",2,e,i,o,n,s)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(166),s=o(n),r=i(115),a=o(r),h=i(116),d=o(h),l=i(169),u=o(l),c=i(170),p=o(c),f=i(181),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t,e,i,o){this._resizeShape(e,i,o)}},{key:"draw",value:function(t,e,i,o,n,s){this._drawShape(t,"star",4,e,i,o,n,s)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(166),s=o(n),r=i(115),a=o(r),h=i(116),d=o(h),l=i(169),u=o(l),c=i(170),p=o(c),f=i(175),m=o(f),v=function(t){function e(t,i,o){(0,a.default)(this,e);var n=(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o));return n._setMargins(o),n}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t,e,i){(void 0===this.width||this.labelModule.differentState(e,i))&&(this.textSize=this.labelModule.getTextSize(t,e,i),this.width=this.textSize.width+this.margin.right+this.margin.left,this.height=this.textSize.height+this.margin.top+this.margin.bottom,this.radius=.5*this.width)}},{key:"draw",value:function(t,e,i,o,n,s){this.resize(t,o,n),this.left=e-this.width/2,this.top=i-this.height/2,this.enableShadow(t,s),this.labelModule.draw(t,this.left+this.textSize.width/2+this.margin.left,this.top+this.textSize.height/2+this.margin.top,o,n),this.disableShadow(t,s),this.updateBoundingBox(e,i,t,o,n)}},{key:"updateBoundingBox",value:function(t,e,i,o,n){this.resize(i,o,n),this.left=t-this.width/2,this.top=e-this.height/2,this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(166),s=o(n),r=i(115),a=o(r),h=i(116),d=o(h),l=i(169),u=o(l),c=i(170),p=o(c),f=i(181),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t){this._resizeShape()}},{key:"draw",value:function(t,e,i,o,n,s){this._drawShape(t,"triangle",3,e,i,o,n,s)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(166),s=o(n),r=i(115),a=o(r),h=i(116),d=o(h),l=i(169),u=o(l),c=i(170),p=o(c),f=i(181),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"resize",value:function(t){this._resizeShape()}},{key:"draw",value:function(t,e,i,o,n,s){this._drawShape(t,"triangleDown",3,e,i,o,n,s)}},{key:"distanceToBorder",value:function(t,e){return this._distanceToBorder(t,e)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(115),s=o(n),r=i(116),a=o(r),h=i(192),d=o(h),l=i(160),u=o(l),c=i(1),p=i(91),f=i(93),m=function(){function t(e,i,o){var n=this;(0,s.default)(this,t),this.body=e,this.images=i,this.groups=o,this.body.functions.createEdge=this.create.bind(this),this.edgesListeners={add:function(t,e){n.add(e.items)},update:function(t,e){n.update(e.items)},remove:function(t,e){n.remove(e.items)}},this.options={},this.defaultOptions={arrows:{to:{enabled:!1,scaleFactor:1,type:"arrow"},middle:{enabled:!1,scaleFactor:1,type:"arrow"},from:{enabled:!1,scaleFactor:1,type:"arrow"}},arrowStrikethrough:!0,color:{color:"#848484",highlight:"#848484",hover:"#848484",inherit:"from",opacity:1},dashes:!1,font:{color:"#343434",size:14,face:"arial",background:"none",strokeWidth:2,strokeColor:"#ffffff",align:"horizontal",multi:!1,vadjust:0,bold:{mod:"bold"},boldital:{mod:"bold italic"},ital:{mod:"italic"},mono:{mod:"",size:15,face:"courier new",vadjust:2}},hidden:!1,hoverWidth:1.5,label:void 0,labelHighlightBold:!0,length:void 0,physics:!0,scaling:{min:1,max:15,label:{enabled:!0,min:14,max:30,maxVisible:30,drawThreshold:5},customScalingFunction:function(t,e,i,o){if(e===t)return.5;var n=1/(e-t);return Math.max(0,(o-t)*n)}},selectionWidth:1.5,selfReferenceSize:20,shadow:{enabled:!1,color:"rgba(0,0,0,0.5)",size:10,x:5,y:5},smooth:{enabled:!0,type:"dynamic",forceDirection:"none",roundness:.5},title:void 0,width:1,value:void 0},c.extend(this.options,this.defaultOptions),this.bindEventListeners()}return(0,a.default)(t,[{key:"bindEventListeners",value:function(){var t=this;this.body.emitter.on("_forceDisableDynamicCurves",function(e){"dynamic"===e&&(e="continuous");var i=!1;for(var o in t.body.edges)if(t.body.edges.hasOwnProperty(o)){var n=t.body.edges[o],s=t.body.data.edges._data[o];if(void 0!==s){var r=s.smooth;void 0!==r&&r.enabled===!0&&"dynamic"===r.type&&(void 0===e?n.setOptions({smooth:!1}):n.setOptions({smooth:{type:e}}),i=!0)}}i===!0&&t.body.emitter.emit("_dataChanged")}),this.body.emitter.on("_dataUpdated",function(){t.reconnectEdges()}),this.body.emitter.on("refreshEdges",this.refresh.bind(this)),this.body.emitter.on("refresh",this.refresh.bind(this)),this.body.emitter.on("destroy",function(){c.forEach(t.edgesListeners,function(e,i){t.body.data.edges&&t.body.data.edges.off(i,e)}),delete t.body.functions.createEdge,delete t.edgesListeners.add,delete t.edgesListeners.update,delete t.edgesListeners.remove,delete t.edgesListeners})}},{key:"setOptions",value:function(t){if(this.edgeOptions=t,void 0!==t){d.default.parseOptions(this.options,t);var e=!1;if(void 0!==t.smooth)for(var i in this.body.edges)this.body.edges.hasOwnProperty(i)&&(e=this.body.edges[i].updateEdgeType()||e);if(void 0!==t.font){u.default.parseOptions(this.options.font,t);for(var o in this.body.edges)this.body.edges.hasOwnProperty(o)&&this.body.edges[o].updateLabelModule()}void 0===t.hidden&&void 0===t.physics&&e!==!0||this.body.emitter.emit("_dataChanged")}}},{key:"setData",value:function(t){var e=this,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1],o=this.body.data.edges;if(t instanceof p||t instanceof f)this.body.data.edges=t;else if(Array.isArray(t))this.body.data.edges=new p,this.body.data.edges.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.body.data.edges=new p}if(o&&c.forEach(this.edgesListeners,function(t,e){o.off(e,t)}),this.body.edges={},this.body.data.edges){c.forEach(this.edgesListeners,function(t,i){e.body.data.edges.on(i,t)});var n=this.body.data.edges.getIds();this.add(n,!0)}i===!1&&this.body.emitter.emit("_dataChanged")}},{key:"add",value:function(t){for(var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=this.body.edges,o=this.body.data.edges,n=0;ni.shape.height?(r=i.x+.5*i.shape.width,a=i.y-h):(r=i.x+h,a=i.y-.5*i.shape.height),s=this._pointOnCircle(r,a,h,.125),this.labelModule.draw(t,s.x,s.y,n,this.hover)}}}},{key:"isOverlappingWith",value:function(t){if(this.connected){var e=10,i=this.from.x,o=this.from.y,n=this.to.x,s=this.to.y,r=t.left,a=t.top,h=this.edgeType.getDistanceToEdge(i,o,n,s,r,a);return h0&&i<0)&&(o+=Math.PI),t.rotate(o)}},{key:"_pointOnCircle",value:function(t,e,i,o){var n=2*o*Math.PI;return{x:t+i*Math.cos(n),y:e-i*Math.sin(n)}}},{key:"select",value:function(){this.selected=!0}},{key:"unselect",value:function(){this.selected=!1}},{key:"cleanup",value:function(){return this.edgeType.cleanup()}}],[{key:"parseOptions",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},n=["arrowStrikethrough","id","from","hidden","hoverWidth","label","labelHighlightBold","length","line","opacity","physics","scaling","selectionWidth","selfReferenceSize","to","title","value","width"];if(O.selectiveDeepExtend(n,t,e,i),O.mergeOptions(t,e,"smooth",i,o),O.mergeOptions(t,e,"shadow",i,o),void 0!==e.dashes&&null!==e.dashes?t.dashes=e.dashes:i===!0&&null===e.dashes&&(t.dashes=(0,a.default)(o.dashes)),void 0!==e.scaling&&null!==e.scaling?(void 0!==e.scaling.min&&(t.scaling.min=e.scaling.min),void 0!==e.scaling.max&&(t.scaling.max=e.scaling.max),O.mergeOptions(t.scaling,e.scaling,"label",i,o.scaling)):i===!0&&null===e.scaling&&(t.scaling=(0,a.default)(o.scaling)),void 0!==e.arrows&&null!==e.arrows)if("string"==typeof e.arrows){var r=e.arrows.toLowerCase();t.arrows.to.enabled=r.indexOf("to")!=-1,t.arrows.middle.enabled=r.indexOf("middle")!=-1,t.arrows.from.enabled=r.indexOf("from")!=-1}else{if("object"!==(0,d.default)(e.arrows))throw new Error("The arrow newOptions can only be an object or a string. Refer to the documentation. You used:"+(0,s.default)(e.arrows));O.mergeOptions(t.arrows,e.arrows,"to",i,o.arrows),O.mergeOptions(t.arrows,e.arrows,"middle",i,o.arrows),O.mergeOptions(t.arrows,e.arrows,"from",i,o.arrows)}else i===!0&&null===e.arrows&&(t.arrows=(0,a.default)(o.arrows));if(void 0!==e.color&&null!==e.color)if(t.color=O.deepExtend({},t.color,!0),O.isString(e.color))t.color.color=e.color,t.color.highlight=e.color,t.color.hover=e.color,t.color.inherit=!1;else{var h=!1;void 0!==e.color.color&&(t.color.color=e.color.color,h=!0),void 0!==e.color.highlight&&(t.color.highlight=e.color.highlight,h=!0),void 0!==e.color.hover&&(t.color.hover=e.color.hover,h=!0),void 0!==e.color.inherit&&(t.color.inherit=e.color.inherit),void 0!==e.color.opacity&&(t.color.opacity=Math.min(1,Math.max(0,e.color.opacity))),void 0===e.color.inherit&&h===!0&&(t.color.inherit=!1)}else i===!0&&null===e.color&&(t.color=O.bridgeObject(o.color));void 0!==e.font&&null!==e.font?m.default.parseOptions(t.font,e):i===!0&&null===e.font&&(t.font=O.bridgeObject(o.font))}}]),t}();e.default=D},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(161),s=o(n),r=i(166),a=o(r),h=i(115),d=o(h),l=i(116),u=o(l),c=i(169),p=o(c),f=i(170),m=o(f),v=i(194),g=o(v),y=function(t){function e(t,i,o){return(0,d.default)(this,e),(0,p.default)(this,(e.__proto__||(0,a.default)(e)).call(this,t,i,o))}return(0,m.default)(e,t),(0,u.default)(e,[{key:"_line",value:function(t,e,i){var o=i[0],n=i[1];t.beginPath(),t.moveTo(this.fromPoint.x,this.fromPoint.y),void 0===i||void 0===o.x?t.lineTo(this.toPoint.x,this.toPoint.y):t.bezierCurveTo(o.x,o.y,n.x,n.y,this.toPoint.x,this.toPoint.y),this.enableShadow(t,e),t.stroke(),this.disableShadow(t,e)}},{key:"_getViaCoordinates",value:function(){var t=this.from.x-this.to.x,e=this.from.y-this.to.y,i=void 0,o=void 0,n=void 0,s=void 0,r=this.options.smooth.roundness;return(Math.abs(t)>Math.abs(e)||this.options.smooth.forceDirection===!0||"horizontal"===this.options.smooth.forceDirection)&&"vertical"!==this.options.smooth.forceDirection?(o=this.from.y,s=this.to.y,i=this.from.x-r*t,n=this.to.x+r*t):(o=this.from.y-r*e,s=this.to.y+r*e,i=this.from.x,n=this.to.x),[{x:i,y:o},{x:n,y:s}]}},{key:"getViaNode",value:function(){return this._getViaCoordinates()}},{key:"_findBorderPosition",value:function(t,e){return this._findBorderPositionBezier(t,e)}},{key:"_getDistanceToEdge",value:function(t,e,i,o,n,r){var a=arguments.length>6&&void 0!==arguments[6]?arguments[6]:this._getViaCoordinates(),h=(0,s.default)(a,2),d=h[0],l=h[1];return this._getDistanceToBezierEdge(t,e,i,o,n,r,d,l)}},{key:"getPoint",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._getViaCoordinates(),i=(0,s.default)(e,2),o=i[0],n=i[1],r=t,a=[];a[0]=Math.pow(1-r,3),a[1]=3*r*Math.pow(1-r,2),a[2]=3*Math.pow(r,2)*(1-r),a[3]=Math.pow(r,3);var h=a[0]*this.fromPoint.x+a[1]*o.x+a[2]*n.x+a[3]*this.toPoint.x,d=a[0]*this.fromPoint.y+a[1]*o.y+a[2]*n.y+a[3]*this.toPoint.y;return{x:h,y:d}}}]),e}(g.default);e.default=y},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(166),s=o(n),r=i(115),a=o(r),h=i(116),d=o(h),l=i(169),u=o(l),c=i(170),p=o(c),f=i(195),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"_getDistanceToBezierEdge",value:function(t,e,i,o,n,s,r,a){var h=1e9,d=void 0,l=void 0,u=void 0,c=void 0,p=void 0,f=t,m=e,v=[0,0,0,0];for(l=1;l<10;l++)u=.1*l,v[0]=Math.pow(1-u,3),v[1]=3*u*Math.pow(1-u,2),v[2]=3*Math.pow(u,2)*(1-u),v[3]=Math.pow(u,3),c=v[0]*t+v[1]*r.x+v[2]*a.x+v[3]*i,p=v[0]*e+v[1]*r.y+v[2]*a.y+v[3]*o,l>0&&(d=this._getDistanceToLine(f,m,c,p,n,s),h=d2&&void 0!==arguments[2]?arguments[2]:this._getViaCoordinates(),h=10,d=0,l=0,u=1,c=.2,p=this.to,f=!1;for(t.id===this.from.id&&(p=this.from,f=!0);l<=u&&d0&&(h=this._getDistanceToLine(p,f,u,c,n,s),a=ho.shape.height?(e=o.x+.5*o.shape.width,i=o.y-n):(e=o.x+n,i=o.y-.5*o.shape.height),[e,i,n]}},{key:"_pointOnCircle",value:function(t,e,i,o){var n=2*o*Math.PI;return{x:t+i*Math.cos(n),y:e-i*Math.sin(n)}}},{key:"_findBorderPositionCircle",value:function(t,e,i){for(var o=i.x,n=i.y,s=i.low,r=i.high,a=i.direction,h=10,d=0,l=this.options.selfReferenceSize,u=void 0,c=void 0,p=void 0,f=void 0,m=void 0,v=.05,g=.5*(s+r);s<=r&&d0?a>0?s=g:r=g:a>0?r=g:s=g,d++;return u.t=g,u}},{key:"getLineWidth",value:function(t,e){return t===!0?Math.max(this.selectionWidth,.3/this.body.view.scale):e===!0?Math.max(this.hoverWidth,.3/this.body.view.scale):Math.max(this.options.width,.3/this.body.view.scale)}},{key:"getColor",value:function(t,e,i,o){if(e.inheritsColor!==!1){if("both"===e.inheritsColor&&this.from.id!==this.to.id){var n=t.createLinearGradient(this.from.x,this.from.y,this.to.x,this.to.y),s=void 0,r=void 0;return s=this.from.options.color.highlight.border,r=this.to.options.color.highlight.border,this.from.selected===!1&&this.to.selected===!1?(s=l.overrideOpacity(this.from.options.color.border,e.opacity),r=l.overrideOpacity(this.to.options.color.border,e.opacity)):this.from.selected===!0&&this.to.selected===!1?r=this.to.options.color.border:this.from.selected===!1&&this.to.selected===!0&&(s=this.from.options.color.border),n.addColorStop(0,s),n.addColorStop(1,r),n}return"to"===e.inheritsColor?l.overrideOpacity(this.to.options.color.border,e.opacity):l.overrideOpacity(this.from.options.color.border,e.opacity)}return l.overrideOpacity(e.color,e.opacity)}},{key:"_circle",value:function(t,e,i,o,n){this.enableShadow(t,e),t.beginPath(),t.arc(i,o,n,0,2*Math.PI,!1),t.stroke(),this.disableShadow(t,e)}},{key:"getDistanceToEdge",value:function(t,e,i,o,n,r,a,h){var d=0;if(this.from!=this.to)d=this._getDistanceToEdge(t,e,i,o,n,r,a);else{var l=this._getCircleData(void 0),u=(0,s.default)(l,3),c=u[0],p=u[1],f=u[2],m=c-n,v=p-r;d=Math.abs(Math.sqrt(m*m+v*v)-f)}return this.labelModule.size.leftn&&this.labelModule.size.topr?0:d}},{key:"_getDistanceToLine",value:function(t,e,i,o,n,s){var r=i-t,a=o-e,h=r*r+a*a,d=((n-t)*r+(s-e)*a)/h;d>1?d=1:d<0&&(d=0);var l=t+d*r,u=e+d*a,c=l-n,p=u-s;return Math.sqrt(c*c+p*p)}},{key:"getArrowData",value:function(t,e,i,o,n,r){var a=void 0,h=void 0,d=void 0,l=void 0,u=void 0,c=void 0,p=void 0,f=r.width;if("from"===e?(d=this.from,l=this.to,u=.1,c=r.fromArrowScale,p=r.fromArrowType):"to"===e?(d=this.to,l=this.from,u=-.1,c=r.toArrowScale,p=r.toArrowType):(d=this.to,l=this.from,c=r.middleArrowScale,p=r.middleArrowType),d!=l)if("middle"!==e)if(this.options.smooth.enabled===!0){h=this.findBorderPosition(d,t,{via:i});var m=this.getPoint(Math.max(0,Math.min(1,h.t+u)),i);a=Math.atan2(h.y-m.y,h.x-m.x)}else a=Math.atan2(d.y-l.y,d.x-l.x),h=this.findBorderPosition(d,t);else a=Math.atan2(d.y-l.y,d.x-l.x),h=this.getPoint(.5,i);else{var v=this._getCircleData(t),g=(0,s.default)(v,3),y=g[0],b=g[1],_=g[2];"from"===e?(h=this.findBorderPosition(this.from,t,{x:y,y:b,low:.25,high:.6,direction:-1}),a=h.t*-2*Math.PI+1.5*Math.PI+.1*Math.PI):"to"===e?(h=this.findBorderPosition(this.from,t,{x:y,y:b,low:.6,high:1,direction:1}),a=h.t*-2*Math.PI+1.5*Math.PI-1.1*Math.PI):(h=this._pointOnCircle(y,b,_,.175),a=3.9269908169872414)}var w=15*c+3*f,x=h.x-.9*w*Math.cos(a),k=h.y-.9*w*Math.sin(a),O={x:x,y:k};return{point:h,core:O,angle:a,length:w,type:p}}},{key:"drawArrowHead",value:function(t,e,i,o,n){t.strokeStyle=this.getColor(t,e,i,o),t.fillStyle=t.strokeStyle,t.lineWidth=e.width,n.type&&"circle"===n.type.toLowerCase()?t.circleEndpoint(n.point.x,n.point.y,n.angle,n.length):t.arrowEndpoint(n.point.x,n.point.y,n.angle,n.length),this.enableShadow(t,e),t.fill(),this.disableShadow(t,e)}},{key:"enableShadow",value:function(t,e){e.shadow===!0&&(t.shadowColor=e.shadowColor,t.shadowBlur=e.shadowSize,t.shadowOffsetX=e.shadowX,t.shadowOffsetY=e.shadowY)}},{key:"disableShadow",value:function(t,e){e.shadow===!0&&(t.shadowColor="rgba(0,0,0,0)",t.shadowBlur=0,t.shadowOffsetX=0,t.shadowOffsetY=0)}}]),t}();e.default=u},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(161),s=o(n),r=i(166),a=o(r),h=i(115),d=o(h),l=i(116),u=o(l),c=i(169),p=o(c),f=i(170),m=o(f),v=i(195),g=o(v),y=function(t){function e(t,i,o){(0,d.default)(this,e);var n=(0,p.default)(this,(e.__proto__||(0,a.default)(e)).call(this,t,i,o));return n._boundFunction=function(){n.positionBezierNode()},n.body.emitter.on("_repositionBezierNodes",n._boundFunction),n}return(0,m.default)(e,t),(0,u.default)(e,[{key:"setOptions",value:function(t){var e=!1;this.options.physics!==t.physics&&(e=!0),this.options=t,this.id=this.options.id,this.from=this.body.nodes[this.options.from],this.to=this.body.nodes[this.options.to],this.setupSupportNode(),this.connect(),e===!0&&(this.via.setOptions({physics:this.options.physics}),this.positionBezierNode())}},{key:"connect",value:function(){this.from=this.body.nodes[this.options.from],this.to=this.body.nodes[this.options.to],void 0===this.from||void 0===this.to||this.options.physics===!1?this.via.setOptions({physics:!1}):this.from.id===this.to.id?this.via.setOptions({physics:!1}):this.via.setOptions({physics:!0})}},{key:"cleanup",value:function(){return this.body.emitter.off("_repositionBezierNodes",this._boundFunction),void 0!==this.via&&(delete this.body.nodes[this.via.id],this.via=void 0,!0)}},{key:"setupSupportNode",value:function(){if(void 0===this.via){var t="edgeId:"+this.id,e=this.body.functions.createNode({id:t,shape:"circle",physics:!0,hidden:!0});this.body.nodes[t]=e,this.via=e,this.via.parentEdgeId=this.id,this.positionBezierNode()}}},{key:"positionBezierNode",value:function(){void 0!==this.via&&void 0!==this.from&&void 0!==this.to?(this.via.x=.5*(this.from.x+this.to.x),this.via.y=.5*(this.from.y+this.to.y)):void 0!==this.via&&(this.via.x=0,this.via.y=0)}},{key:"_line",value:function(t,e,i){t.beginPath(),t.moveTo(this.fromPoint.x,this.fromPoint.y),void 0===i.x?t.lineTo(this.toPoint.x,this.toPoint.y):t.quadraticCurveTo(i.x,i.y,this.toPoint.x,this.toPoint.y),this.enableShadow(t,e),t.stroke(),this.disableShadow(t,e)}},{key:"getViaNode",value:function(){return this.via}},{key:"getPoint",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.via,i=t,o=void 0,n=void 0;if(this.from===this.to){var r=this._getCircleData(this.from),a=(0,s.default)(r,3),h=a[0],d=a[1],l=a[2],u=2*Math.PI*(1-i);o=h+l*Math.sin(u),n=d+l-l*(1-Math.cos(u))}else o=Math.pow(1-i,2)*this.fromPoint.x+2*i*(1-i)*e.x+Math.pow(i,2)*this.toPoint.x,n=Math.pow(1-i,2)*this.fromPoint.y+2*i*(1-i)*e.y+Math.pow(i,2)*this.toPoint.y;return{x:o,y:n}}},{key:"_findBorderPosition",value:function(t,e){return this._findBorderPositionBezier(t,e,this.via)}},{key:"_getDistanceToEdge",value:function(t,e,i,o,n,s){return this._getDistanceToBezierEdge(t,e,i,o,n,s,this.via)}}]),e}(g.default);e.default=y},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(166),s=o(n),r=i(115),a=o(r),h=i(116),d=o(h),l=i(169),u=o(l),c=i(170),p=o(c),f=i(195),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"_line",value:function(t,e,i){t.beginPath(),t.moveTo(this.fromPoint.x,this.fromPoint.y),void 0===i.x?t.lineTo(this.toPoint.x,this.toPoint.y):t.quadraticCurveTo(i.x,i.y,this.toPoint.x,this.toPoint.y),this.enableShadow(t,e),t.stroke(),this.disableShadow(t,e)}},{key:"getViaNode",value:function(){return this._getViaCoordinates()}},{key:"_getViaCoordinates",value:function(){var t=void 0,e=void 0,i=this.options.smooth.roundness,o=this.options.smooth.type,n=Math.abs(this.from.x-this.to.x),s=Math.abs(this.from.y-this.to.y);if("discrete"===o||"diagonalCross"===o)Math.abs(this.from.x-this.to.x)<=Math.abs(this.from.y-this.to.y)?(this.from.y>=this.to.y?this.from.x<=this.to.x?(t=this.from.x+i*s,e=this.from.y-i*s):this.from.x>this.to.x&&(t=this.from.x-i*s,e=this.from.y-i*s):this.from.ythis.to.x&&(t=this.from.x-i*s,e=this.from.y+i*s)),"discrete"===o&&(t=nMath.abs(this.from.y-this.to.y)&&(this.from.y>=this.to.y?this.from.x<=this.to.x?(t=this.from.x+i*n,e=this.from.y-i*n):this.from.x>this.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n)),"discrete"===o&&(e=sMath.abs(this.from.y-this.to.y)&&(t=this.from.x=this.to.y?this.from.x<=this.to.x?(t=this.from.x+i*s,e=this.from.y-i*s,t=this.to.xthis.to.x&&(t=this.from.x-i*s,e=this.from.y-i*s,t=this.to.x>t?this.to.x:t):this.from.ythis.to.x&&(t=this.from.x-i*s,e=this.from.y+i*s,t=this.to.x>t?this.to.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>=this.to.y?this.from.x<=this.to.x?(t=this.from.x+i*n,e=this.from.y-i*n,e=this.to.y>e?this.to.y:e):this.from.x>this.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n,e=this.to.y>e?this.to.y:e):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n,e=this.to.y2&&void 0!==arguments[2]?arguments[2]:{};return this._findBorderPositionBezier(t,e,i.via)}},{key:"_getDistanceToEdge",value:function(t,e,i,o,n,s){var r=arguments.length>6&&void 0!==arguments[6]?arguments[6]:this._getViaCoordinates();return this._getDistanceToBezierEdge(t,e,i,o,n,s,r)}},{key:"getPoint",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._getViaCoordinates(),i=t,o=Math.pow(1-i,2)*this.fromPoint.x+2*i*(1-i)*e.x+Math.pow(i,2)*this.toPoint.x,n=Math.pow(1-i,2)*this.fromPoint.y+2*i*(1-i)*e.y+Math.pow(i,2)*this.toPoint.y;return{x:o,y:n}}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(166),s=o(n),r=i(115),a=o(r),h=i(116),d=o(h),l=i(169),u=o(l),c=i(170),p=o(c),f=i(196),m=o(f),v=function(t){function e(t,i,o){return(0,a.default)(this,e),(0,u.default)(this,(e.__proto__||(0,s.default)(e)).call(this,t,i,o))}return(0,p.default)(e,t),(0,d.default)(e,[{key:"_line",value:function(t,e){t.beginPath(),t.moveTo(this.fromPoint.x,this.fromPoint.y),t.lineTo(this.toPoint.x,this.toPoint.y),this.enableShadow(t,e),t.stroke(),this.disableShadow(t,e)}},{key:"getViaNode",value:function(){}},{key:"getPoint",value:function(t){return{x:(1-t)*this.fromPoint.x+t*this.toPoint.x,y:(1-t)*this.fromPoint.y+t*this.toPoint.y}}},{key:"_findBorderPosition",value:function(t,e){var i=this.to,o=this.from;t.id===this.from.id&&(i=this.from,o=this.to);var n=Math.atan2(i.y-o.y,i.x-o.x),s=i.x-o.x,r=i.y-o.y,a=Math.sqrt(s*s+r*r),h=t.distanceToBorder(e,n),d=(a-h)/a,l={};return l.x=(1-d)*o.x+d*i.x,l.y=(1-d)*o.y+d*i.y,l}},{key:"_getDistanceToEdge",value:function(t,e,i,o,n,s){return this._getDistanceToLine(t,e,i,o,n,s)}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(58),s=o(n),r=i(115),a=o(r),h=i(116),d=o(h),l=i(201),u=o(l),c=i(202),p=o(c),f=i(203),m=o(f),v=i(204),g=o(v),y=i(205),b=o(y),_=i(206),w=o(_),x=i(207),k=o(x),O=i(208),D=o(O),M=i(1),S=function(){function t(e){(0,a.default)(this,t),this.body=e,this.physicsBody={physicsNodeIndices:[],physicsEdgeIndices:[],forces:{},velocities:{}},this.physicsEnabled=!0,this.simulationInterval=1e3/60,this.requiresTimeout=!0,this.previousStates={},this.referenceState={},this.freezeCache={},this.renderTimer=void 0,this.adaptiveTimestep=!1,this.adaptiveTimestepEnabled=!1,this.adaptiveCounter=0,this.adaptiveInterval=3,this.stabilized=!1,this.startedStabilization=!1,this.stabilizationIterations=0,this.ready=!1,this.options={},this.defaultOptions={enabled:!0,barnesHut:{theta:.5,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09,avoidOverlap:0},forceAtlas2Based:{theta:.5,gravitationalConstant:-50,centralGravity:.01,springConstant:.08,springLength:100,damping:.4,avoidOverlap:0},repulsion:{centralGravity:.2,springLength:200,springConstant:.05,nodeDistance:100,damping:.09,avoidOverlap:0},hierarchicalRepulsion:{centralGravity:0,springLength:100,springConstant:.01,nodeDistance:120,damping:.09},maxVelocity:50,minVelocity:.75,solver:"barnesHut",stabilization:{enabled:!0,iterations:1e3,updateInterval:50,onlyDynamicEdges:!1,fit:!0},timestep:.5,adaptiveTimestep:!0},M.extend(this.options,this.defaultOptions),this.timestep=.5,this.layoutFailed=!1,this.bindEventListeners()}return(0,d.default)(t,[{key:"bindEventListeners",value:function(){var t=this;this.body.emitter.on("initPhysics",function(){t.initPhysics()}),this.body.emitter.on("_layoutFailed",function(){t.layoutFailed=!0}),this.body.emitter.on("resetPhysics",function(){t.stopSimulation(),t.ready=!1}),this.body.emitter.on("disablePhysics",function(){t.physicsEnabled=!1,t.stopSimulation()}),this.body.emitter.on("restorePhysics",function(){t.setOptions(t.options),t.ready===!0&&t.startSimulation()}),this.body.emitter.on("startSimulation",function(){t.ready===!0&&t.startSimulation()}),this.body.emitter.on("stopSimulation",function(){t.stopSimulation()}),this.body.emitter.on("destroy",function(){t.stopSimulation(!1),t.body.emitter.off()}),this.body.emitter.on("_dataChanged",function(){t.updatePhysicsData()})}},{key:"setOptions",value:function(t){void 0!==t&&(t===!1?(this.options.enabled=!1,this.physicsEnabled=!1,this.stopSimulation()):(this.physicsEnabled=!0,M.selectiveNotDeepExtend(["stabilization"],this.options,t),M.mergeOptions(this.options,t,"stabilization"),void 0===t.enabled&&(this.options.enabled=!0),this.options.enabled===!1&&(this.physicsEnabled=!1,this.stopSimulation()),this.timestep=this.options.timestep)),this.init()}},{key:"init",value:function(){var t;"forceAtlas2Based"===this.options.solver?(t=this.options.forceAtlas2Based,this.nodesSolver=new k.default(this.body,this.physicsBody,t),this.edgesSolver=new g.default(this.body,this.physicsBody,t),this.gravitySolver=new D.default(this.body,this.physicsBody,t)):"repulsion"===this.options.solver?(t=this.options.repulsion,this.nodesSolver=new p.default(this.body,this.physicsBody,t),this.edgesSolver=new g.default(this.body,this.physicsBody,t),this.gravitySolver=new w.default(this.body,this.physicsBody,t)):"hierarchicalRepulsion"===this.options.solver?(t=this.options.hierarchicalRepulsion,this.nodesSolver=new m.default(this.body,this.physicsBody,t),this.edgesSolver=new b.default(this.body,this.physicsBody,t),this.gravitySolver=new w.default(this.body,this.physicsBody,t)):(t=this.options.barnesHut,this.nodesSolver=new u.default(this.body,this.physicsBody,t),this.edgesSolver=new g.default(this.body,this.physicsBody,t),this.gravitySolver=new w.default(this.body,this.physicsBody,t)),this.modelOptions=t}},{key:"initPhysics",value:function(){this.physicsEnabled===!0&&this.options.enabled===!0?this.options.stabilization.enabled===!0?this.stabilize():(this.stabilized=!1,this.ready=!0,this.body.emitter.emit("fit",{},this.layoutFailed),this.startSimulation()):(this.ready=!0,this.body.emitter.emit("fit"))}},{key:"startSimulation",value:function(){this.physicsEnabled===!0&&this.options.enabled===!0?(this.stabilized=!1,this.adaptiveTimestep=!1,this.body.emitter.emit("_resizeNodes"),void 0===this.viewFunction&&(this.viewFunction=this.simulationStep.bind(this),this.body.emitter.on("initRedraw",this.viewFunction),this.body.emitter.emit("_startRendering"))):this.body.emitter.emit("_redraw")}},{key:"stopSimulation",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this.stabilized=!0,t===!0&&this._emitStabilized(),void 0!==this.viewFunction&&(this.body.emitter.off("initRedraw",this.viewFunction),this.viewFunction=void 0,t===!0&&this.body.emitter.emit("_stopRendering"))}},{key:"simulationStep",value:function(){var t=Date.now();this.physicsTick();var e=Date.now()-t;(e<.4*this.simulationInterval||this.runDoubleSpeed===!0)&&this.stabilized===!1&&(this.physicsTick(),this.runDoubleSpeed=!0),this.stabilized===!0&&this.stopSimulation()}},{key:"_emitStabilized",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.stabilizationIterations;(this.stabilizationIterations>1||this.startedStabilization===!0)&&setTimeout(function(){t.body.emitter.emit("stabilized",{iterations:e}),t.startedStabilization=!1,t.stabilizationIterations=0},0)}},{key:"physicsTick",value:function(){if(this.startedStabilization===!1&&(this.body.emitter.emit("startStabilizing"),this.startedStabilization=!0),this.stabilized===!1){if(this.adaptiveTimestep===!0&&this.adaptiveTimestepEnabled===!0){var t=1.2;this.adaptiveCounter%this.adaptiveInterval===0?(this.timestep=2*this.timestep,this.calculateForces(),this.moveNodes(),this.revert(),this.timestep=.5*this.timestep,this.calculateForces(),this.moveNodes(),this.calculateForces(),this.moveNodes(),this._evaluateStepQuality()===!0?this.timestep=t*this.timestep:this.timestep/ts))return!1;return!0}},{key:"moveNodes",value:function(){for(var t=this.physicsBody.physicsNodeIndices,e=this.options.maxVelocity?this.options.maxVelocity:1e9,i=0,o=0,n=5,s=0;se?s[t].x>0?e:-e:s[t].x,i.x+=s[t].x*o}else n[t].x=0,s[t].x=0;if(i.options.fixed.y===!1){var h=this.modelOptions.damping*s[t].y,d=(n[t].y-h)/i.options.mass;s[t].y+=d*o,s[t].y=Math.abs(s[t].y)>e?s[t].y>0?e:-e:s[t].y,i.y+=s[t].y*o}else n[t].y=0,s[t].y=0;var l=Math.sqrt(Math.pow(s[t].x,2)+Math.pow(s[t].y,2));return l}},{key:"calculateForces",value:function(){this.gravitySolver.solve(),this.nodesSolver.solve(),this.edgesSolver.solve()}},{key:"_freezeNodes",value:function(){var t=this.body.nodes;for(var e in t)t.hasOwnProperty(e)&&t[e].x&&t[e].y&&(this.freezeCache[e]={x:t[e].options.fixed.x,y:t[e].options.fixed.y},t[e].options.fixed.x=!0,t[e].options.fixed.y=!0)}},{key:"_restoreFrozenNodes",value:function(){var t=this.body.nodes;for(var e in t)t.hasOwnProperty(e)&&void 0!==this.freezeCache[e]&&(t[e].options.fixed.x=this.freezeCache[e].x,t[e].options.fixed.y=this.freezeCache[e].y);this.freezeCache={}}},{key:"stabilize",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.options.stabilization.iterations;return"number"!=typeof e&&(console.log("The stabilize method needs a numeric amount of iterations. Switching to default: ",this.options.stabilization.iterations),e=this.options.stabilization.iterations),0===this.physicsBody.physicsNodeIndices.length?void(this.ready=!0):(this.adaptiveTimestep=this.options.adaptiveTimestep,this.body.emitter.emit("_resizeNodes"),this.stopSimulation(),this.stabilized=!1,this.body.emitter.emit("_blockRedraw"),this.targetIterations=e,this.options.stabilization.onlyDynamicEdges===!0&&this._freezeNodes(),this.stabilizationIterations=0,void setTimeout(function(){return t._stabilizationBatch()},0))}},{key:"_stabilizationBatch",value:function(){this.startedStabilization===!1&&(this.body.emitter.emit("startStabilizing"),this.startedStabilization=!0);for(var t=0;this.stabilized===!1&&t0){var t=void 0,e=this.body.nodes,i=this.physicsBody.physicsNodeIndices,o=i.length,n=this._formBarnesHutTree(e,i);this.barnesHutTree=n;for(var s=0;s0&&(this._getForceContribution(n.root.children.NW,t),this._getForceContribution(n.root.children.NE,t),this._getForceContribution(n.root.children.SW,t),this._getForceContribution(n.root.children.SE,t))}}},{key:"_getForceContribution",value:function(t,e){if(t.childrenCount>0){var i=void 0,o=void 0,n=void 0;i=t.centerOfMass.x-e.x,o=t.centerOfMass.y-e.y,n=Math.sqrt(i*i+o*o),n*t.calcSize>this.thetaInversed?this._calculateForces(n,i,o,e,t):4===t.childrenCount?(this._getForceContribution(t.children.NW,e),this._getForceContribution(t.children.NE,e),this._getForceContribution(t.children.SW,e),this._getForceContribution(t.children.SE,e)):t.children.data.id!=e.id&&this._calculateForces(n,i,o,e,t)}}},{key:"_calculateForces",value:function(t,e,i,o,n){0===t&&(t=.1,e=t),this.overlapAvoidanceFactor<1&&o.shape.radius&&(t=Math.max(.1+this.overlapAvoidanceFactor*o.shape.radius,t-o.shape.radius));var s=this.options.gravitationalConstant*n.mass*o.options.mass/Math.pow(t,3),r=e*s,a=i*s;this.physicsBody.forces[o.id].x+=r,this.physicsBody.forces[o.id].y+=a}},{key:"_formBarnesHutTree",value:function(t,e){for(var i=void 0,o=e.length,n=t[e[0]].x,s=t[e[0]].y,r=t[e[0]].x,a=t[e[0]].y,h=1;h0&&(dr&&(r=d),la&&(a=l))}var u=Math.abs(r-n)-Math.abs(a-s);u>0?(s-=.5*u,a+=.5*u):(n+=.5*u,r-=.5*u);var c=1e-5,p=Math.max(c,Math.abs(r-n)),f=.5*p,m=.5*(n+r),v=.5*(s+a),g={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:m-f,maxX:m+f,minY:v-f,maxY:v+f},size:p,calcSize:1/p,children:{data:null},maxWidth:0,level:0,childrenCount:4}};this._splitBranch(g.root);for(var y=0;y0&&this._placeInTree(g.root,i);return g}},{key:"_updateBranchMass",value:function(t,e){var i=t.mass+e.options.mass,o=1/i;t.centerOfMass.x=t.centerOfMass.x*t.mass+e.x*e.options.mass,t.centerOfMass.x*=o,t.centerOfMass.y=t.centerOfMass.y*t.mass+e.y*e.options.mass,t.centerOfMass.y*=o,t.mass=i;var n=Math.max(Math.max(e.height,e.radius),e.width);t.maxWidth=t.maxWidthe.x?t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NW"):this._placeInRegion(t,e,"SW"):t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NE"):this._placeInRegion(t,e,"SE")}},{key:"_placeInRegion",value:function(t,e,i){switch(t.children[i].childrenCount){case 0:t.children[i].children.data=e,t.children[i].childrenCount=1,this._updateBranchMass(t.children[i],e);break;case 1:t.children[i].children.data.x===e.x&&t.children[i].children.data.y===e.y?(e.x+=this.seededRandom(),e.y+=this.seededRandom()):(this._splitBranch(t.children[i]),this._placeInTree(t.children[i],e));break;case 4:this._placeInTree(t.children[i],e)}}},{key:"_splitBranch",value:function(t){var e=null;1===t.childrenCount&&(e=t.children.data,t.mass=0,t.centerOfMass.x=0,t.centerOfMass.y=0),t.childrenCount=4,t.children.data=null,this._insertRegion(t,"NW"),this._insertRegion(t,"NE"),this._insertRegion(t,"SW"),this._insertRegion(t,"SE"),null!=e&&this._placeInTree(t,e)}},{key:"_insertRegion",value:function(t,e){var i=void 0,o=void 0,n=void 0,s=void 0,r=.5*t.size;switch(e){case"NW":i=t.range.minX,o=t.range.minX+r,n=t.range.minY,s=t.range.minY+r;break;case"NE":i=t.range.minX+r,o=t.range.maxX,n=t.range.minY,s=t.range.minY+r;break;case"SW":i=t.range.minX,o=t.range.minX+r,n=t.range.minY+r,s=t.range.maxY;break;case"SE":i=t.range.minX+r,o=t.range.maxX,n=t.range.minY+r,s=t.range.maxY}t.children[e]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:o,minY:n,maxY:s},size:.5*t.size,calcSize:2*t.calcSize,children:{data:null},maxWidth:0,level:t.level+1,childrenCount:0}}},{key:"_debug",value:function(t,e){void 0!==this.barnesHutTree&&(t.lineWidth=1,this._drawBranch(this.barnesHutTree.root,t,e))}},{key:"_drawBranch",value:function(t,e,i){void 0===i&&(i="#FF0000"),4===t.childrenCount&&(this._drawBranch(t.children.NW,e),this._drawBranch(t.children.NE,e),this._drawBranch(t.children.SE,e),this._drawBranch(t.children.SW,e)),e.strokeStyle=i,e.beginPath(),e.moveTo(t.range.minX,t.range.minY),e.lineTo(t.range.maxX,t.range.minY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.minY),e.lineTo(t.range.maxX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.maxY),e.lineTo(t.range.minX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.minX,t.range.maxY),e.lineTo(t.range.minX,t.range.minY),e.stroke()}}]),t}();e.default=h},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(115),s=o(n),r=i(116),a=o(r),h=function(){function t(e,i,o){(0,s.default)(this,t),this.body=e,this.physicsBody=i,this.setOptions(o)}return(0,a.default)(t,[{key:"setOptions",value:function(t){this.options=t}},{key:"solve",value:function(){for(var t,e,i,o,n,s,r,a,h=this.body.nodes,d=this.physicsBody.physicsNodeIndices,l=this.physicsBody.forces,u=this.options.nodeDistance,c=-2/3/u,p=4/3,f=0;f0){var s=n.edges.length+1,r=this.options.centralGravity*s*n.options.mass;o[n.id].x=e*r,o[n.id].y=i*r}}}]),e}(m.default);e.default=v},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(58),s=o(n),r=i(62),a=o(r),h=i(115),d=o(h),l=i(116),u=o(l),c=i(210),p=o(c),f=i(211),m=o(f),v=i(1),g=function(){function t(e){var i=this;(0,d.default)(this,t),this.body=e,this.clusteredNodes={},this.clusteredEdges={},this.options={},this.defaultOptions={},v.extend(this.options,this.defaultOptions),this.body.emitter.on("_resetData",function(){i.clusteredNodes={},i.clusteredEdges={}})}return(0,u.default)(t,[{key:"clusterByHubsize",value:function(t,e){void 0===t?t=this._getHubSize():"object"===("undefined"==typeof t?"undefined":(0,a.default)(t))&&(e=this._checkOptions(t),t=this._getHubSize());for(var i=[],o=0;o=t&&i.push(n.id)}for(var s=0;s0&&void 0!==arguments[0]?arguments[0]:{},e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(void 0===t.joinCondition)throw new Error("Cannot call clusterByNodeData without a joinCondition function in the options.");t=this._checkOptions(t);for(var i={},o={},n=0;n2&&void 0!==arguments[2])||arguments[2];e=this._checkOptions(e);for(var o=[],n={},r=void 0,a=void 0,h=void 0,d=void 0,l=void 0,u=0;u0&&(0,s.default)(f).length>0&&v===!0&&o.push({nodes:c,edges:f})}}}for(var _=0;_1&&void 0!==arguments[1])||arguments[1];this.clusterByEdgeCount(1,t,e)}},{key:"clusterBridges",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];this.clusterByEdgeCount(2,t,e)}},{key:"clusterByConnection",value:function(t,e){var i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(void 0===t)throw new Error("No nodeId supplied to clusterByConnection!");if(void 0===this.body.nodes[t])throw new Error("The nodeId given to clusterByConnection does not exist!");var o=this.body.nodes[t];e=this._checkOptions(e,o),void 0===e.clusterNodeProperties.x&&(e.clusterNodeProperties.x=o.x),void 0===e.clusterNodeProperties.y&&(e.clusterNodeProperties.y=o.y),void 0===e.clusterNodeProperties.fixed&&(e.clusterNodeProperties.fixed={},e.clusterNodeProperties.fixed.x=o.options.fixed.x,e.clusterNodeProperties.fixed.y=o.options.fixed.y);var n={},r={},a=o.id,h=p.default.cloneOptions(o);n[a]=o;for(var d=0;d-1&&(r[g.id]=g)}this._cluster(n,r,e,i)}},{key:"_createClusterEdges",value:function(t,e,i,o){for(var n=void 0,r=void 0,a=void 0,h=void 0,d=void 0,l=void 0,u=(0,s.default)(t),c=[],f=0;f0&&void 0!==arguments[0]?arguments[0]:{};return void 0===t.clusterEdgeProperties&&(t.clusterEdgeProperties={}),void 0===t.clusterNodeProperties&&(t.clusterNodeProperties={}),t}},{key:"_cluster",value:function(t,e,i){var o=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];if(0!=(0,s.default)(t).length&&(1!=(0,s.default)(t).length||1==i.clusterNodeProperties.allowSingleNodeCluster)){for(var n in t)if(t.hasOwnProperty(n)&&void 0!==this.clusteredNodes[n])return;var r=v.deepExtend({},i.clusterNodeProperties);if(void 0!==i.processProperties){var a=[];for(var h in t)if(t.hasOwnProperty(h)){var d=p.default.cloneOptions(t[h]);a.push(d)}var l=[];for(var u in e)if(e.hasOwnProperty(u)&&"clusterEdge:"!==u.substr(0,12)){var c=p.default.cloneOptions(e[u],"edge");l.push(c)}if(r=i.processProperties(r,a,l),!r)throw new Error("The processProperties function does not return properties!")}void 0===r.id&&(r.id="cluster:"+v.randomUUID());var f=r.id;void 0===r.label&&(r.label="cluster");var g=void 0;void 0===r.x&&(g=this._getClusterPosition(t),r.x=g.x),void 0===r.y&&(void 0===g&&(g=this._getClusterPosition(t)),r.y=g.y),r.id=f;var y=this.body.functions.createNode(r,m.default);y.isCluster=!0,y.containedNodes=t,y.containedEdges=e,y.clusterEdgeProperties=i.clusterEdgeProperties,this.body.nodes[r.id]=y,this._createClusterEdges(t,e,r,i.clusterEdgeProperties);for(var b in e)if(e.hasOwnProperty(b)&&void 0!==this.body.edges[b]){var _=this.body.edges[b];this._backupEdgeOptions(_),_.setOptions({physics:!1,hidden:!0})}for(var w in t)t.hasOwnProperty(w)&&(this.clusteredNodes[w]={clusterId:r.id,node:this.body.nodes[w]},this.body.nodes[w].setOptions({hidden:!0,physics:!1}));r.id=void 0,o===!0&&this.body.emitter.emit("_dataChanged")}}},{key:"_backupEdgeOptions",value:function(t){void 0===this.clusteredEdges[t.id]&&(this.clusteredEdges[t.id]={physics:t.options.physics,hidden:t.options.hidden})}},{key:"_restoreEdge",value:function(t){var e=this.clusteredEdges[t.id];void 0!==e&&(t.setOptions({physics:e.physics,hidden:e.hidden}),delete this.clusteredEdges[t.id])}},{key:"isCluster",value:function(t){return void 0!==this.body.nodes[t]?this.body.nodes[t].isCluster===!0:(console.log("Node does not exist."),!1)}},{key:"_getClusterPosition",value:function(t){for(var e=(0,s.default)(t),i=t[e[0]].x,o=t[e[0]].x,n=t[e[0]].y,r=t[e[0]].y,a=void 0,h=1;ho?a.x:o,n=a.yr?a.y:r;return{x:.5*(i+o),y:.5*(n+r)}}},{key:"openCluster",value:function(t,e){var i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(void 0===t)throw new Error("No clusterNodeId supplied to openCluster.");if(void 0===this.body.nodes[t])throw new Error("The clusterNodeId supplied to openCluster does not exist.");if(void 0===this.body.nodes[t].containedNodes)return void console.log("The node:"+t+" is not a cluster.");var o=this.body.nodes[t],n=o.containedNodes,s=o.containedEdges;if(void 0!==e&&void 0!==e.releaseFunction&&"function"==typeof e.releaseFunction){var r={},a={x:o.x,y:o.y};for(var h in n)if(n.hasOwnProperty(h)){var d=this.body.nodes[h];r[h]={x:d.x,y:d.y}}var l=e.releaseFunction(a,r);for(var u in n)if(n.hasOwnProperty(u)){var c=this.body.nodes[u];void 0!==l[u]&&(c.x=void 0===l[u].x?o.x:l[u].x,c.y=void 0===l[u].y?o.y:l[u].y)}}else for(var f in n)if(n.hasOwnProperty(f)){var m=this.body.nodes[f];m=n[f],m.options.fixed.x===!1&&(m.x=o.x),m.options.fixed.y===!1&&(m.y=o.y)}for(var g in n)if(n.hasOwnProperty(g)){var y=this.body.nodes[g];y.vx=o.vx,y.vy=o.vy,y.setOptions({hidden:!1,physics:!0}),delete this.clusteredNodes[g]}for(var b=[],_=0;_o&&(o=s.edges.length),t+=s.edges.length,e+=Math.pow(s.edges.length,2),i+=1}t/=i,e/=i;var r=e-Math.pow(t,2),a=Math.sqrt(r),h=Math.floor(t+2*a);return h>o&&(h=o),h}}]),t}();e.default=g},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(115),s=o(n),r=i(116),a=o(r),h=i(1),d=function(){function t(){(0,s.default)(this,t)}return(0,a.default)(t,null,[{key:"getRange",value:function(t){var e,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],o=1e9,n=-1e9,s=1e9,r=-1e9;if(i.length>0)for(var a=0;ae.shape.boundingBox.left&&(s=e.shape.boundingBox.left),re.shape.boundingBox.top&&(o=e.shape.boundingBox.top),n1&&void 0!==arguments[1]?arguments[1]:[],o=1e9,n=-1e9,s=1e9,r=-1e9;if(i.length>0)for(var a=0;ae.x&&(s=e.x),re.y&&(o=e.y),n0,t.renderTimer=void 0}),this.body.emitter.on("destroy",function(){t.renderRequests=0,t.allowRedraw=!1,t.renderingActive=!1,t.requiresTimeout===!0?clearTimeout(t.renderTimer):cancelAnimationFrame(t.renderTimer),t.body.emitter.off()})}},{key:"setOptions",value:function(t){if(void 0!==t){var e=["hideEdgesOnDrag","hideNodesOnDrag"];h.selectiveDeepExtend(e,this.options,t)}}},{key:"_startRendering",value:function(){this.renderingActive===!0&&void 0===this.renderTimer&&(this.requiresTimeout===!0?this.renderTimer=window.setTimeout(this._renderStep.bind(this),this.simulationInterval):this.renderTimer=window.requestAnimationFrame(this._renderStep.bind(this)))}},{key:"_renderStep",value:function(){this.renderingActive===!0&&(this.renderTimer=void 0,this.requiresTimeout===!0&&this._startRendering(),this._redraw(),this.requiresTimeout===!1&&this._startRendering())}},{key:"redraw",value:function(){this.body.emitter.emit("setSize"),this._redraw()}},{key:"_requestRedraw",value:function(){var t=this;this.redrawRequested!==!0&&this.renderingActive===!1&&this.allowRedraw===!0&&(this.redrawRequested=!0, +this.requiresTimeout===!0?window.setTimeout(function(){t._redraw(!1)},0):window.requestAnimationFrame(function(){t._redraw(!1)}))}},{key:"_redraw",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(this.allowRedraw===!0){this.body.emitter.emit("initRedraw"),this.redrawRequested=!1;var e=this.canvas.frame.canvas.getContext("2d");0!==this.canvas.frame.canvas.width&&0!==this.canvas.frame.canvas.height||this.canvas.setSize(),this.pixelRatio=(window.devicePixelRatio||1)/(e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||e.backingStorePixelRatio||1),e.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var i=this.canvas.frame.canvas.clientWidth,o=this.canvas.frame.canvas.clientHeight;if(e.clearRect(0,0,i,o),0===this.canvas.frame.clientWidth)return;e.save(),e.translate(this.body.view.translation.x,this.body.view.translation.y),e.scale(this.body.view.scale,this.body.view.scale),e.beginPath(),this.body.emitter.emit("beforeDrawing",e),e.closePath(),t===!1&&(this.dragging===!1||this.dragging===!0&&this.options.hideEdgesOnDrag===!1)&&this._drawEdges(e),(this.dragging===!1||this.dragging===!0&&this.options.hideNodesOnDrag===!1)&&this._drawNodes(e,t),e.beginPath(),this.body.emitter.emit("afterDrawing",e),e.closePath(),e.restore(),t===!0&&e.clearRect(0,0,i,o)}}},{key:"_resizeNodes",value:function(){var t=this.canvas.frame.canvas.getContext("2d");void 0===this.pixelRatio&&(this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1)),t.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0),t.save(),t.translate(this.body.view.translation.x,this.body.view.translation.y),t.scale(this.body.view.scale,this.body.view.scale);var e=this.body.nodes,i=void 0;for(var o in e)e.hasOwnProperty(o)&&(i=e[o],i.resize(t),i.updateBoundingBox(t,i.selected));t.restore()}},{key:"_drawNodes",value:function(t){for(var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=this.body.nodes,o=this.body.nodeIndices,n=void 0,s=[],r=20,a=this.canvas.DOMtoCanvas({x:-r,y:-r}),h=this.canvas.DOMtoCanvas({x:this.canvas.frame.canvas.clientWidth+r,y:this.canvas.frame.canvas.clientHeight+r}),d={top:a.y,left:a.x,bottom:h.y,right:h.x},l=0;l0&&void 0!==arguments[0]?arguments[0]:this.pixelRatio;this.initialized===!0&&(this.cameraState.previousWidth=this.frame.canvas.width/t,this.cameraState.previousHeight=this.frame.canvas.height/t,this.cameraState.scale=this.body.view.scale,this.cameraState.position=this.DOMtoCanvas({x:.5*this.frame.canvas.width/t,y:.5*this.frame.canvas.height/t}))}},{key:"_setCameraState",value:function(){if(void 0!==this.cameraState.scale&&0!==this.frame.canvas.clientWidth&&0!==this.frame.canvas.clientHeight&&0!==this.pixelRatio&&this.cameraState.previousWidth>0){var t=this.frame.canvas.width/this.pixelRatio/this.cameraState.previousWidth,e=this.frame.canvas.height/this.pixelRatio/this.cameraState.previousHeight,i=this.cameraState.scale;1!=t&&1!=e?i=.5*this.cameraState.scale*(t+e):1!=t?i=this.cameraState.scale*t:1!=e&&(i=this.cameraState.scale*e),this.body.view.scale=i;var o=this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight}),n={x:o.x-this.cameraState.position.x,y:o.y-this.cameraState.position.y};this.body.view.translation.x+=n.x*this.body.view.scale,this.body.view.translation.y+=n.y*this.body.view.scale}}},{key:"_prepareValue",value:function(t){if("number"==typeof t)return t+"px";if("string"==typeof t){if(t.indexOf("%")!==-1||t.indexOf("px")!==-1)return t;if(t.indexOf("%")===-1)return t+"px"}throw new Error("Could not use the value supplied for width or height:"+t)}},{key:"_create",value:function(){for(;this.body.container.hasChildNodes();)this.body.container.removeChild(this.body.container.firstChild);if(this.frame=document.createElement("div"),this.frame.className="vis-network",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.tabIndex=900,this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),this.frame.canvas.getContext){var t=this.frame.canvas.getContext("2d");this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1),this.frame.canvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{var e=document.createElement("DIV");e.style.color="red",e.style.fontWeight="bold",e.style.padding="10px",e.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(e)}this.body.container.appendChild(this.frame),this.body.view.scale=1,this.body.view.translation={x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight},this._bindHammer()}},{key:"_bindHammer",value:function(){var t=this;void 0!==this.hammer&&this.hammer.destroy(),this.drag={},this.pinch={},this.hammer=new h(this.frame.canvas),this.hammer.get("pinch").set({enable:!0}),this.hammer.get("pan").set({threshold:5,direction:h.DIRECTION_ALL}),d.onTouch(this.hammer,function(e){t.body.eventListeners.onTouch(e)}),this.hammer.on("tap",function(e){t.body.eventListeners.onTap(e)}),this.hammer.on("doubletap",function(e){t.body.eventListeners.onDoubleTap(e)}),this.hammer.on("press",function(e){t.body.eventListeners.onHold(e)}),this.hammer.on("panstart",function(e){t.body.eventListeners.onDragStart(e)}),this.hammer.on("panmove",function(e){t.body.eventListeners.onDrag(e)}),this.hammer.on("panend",function(e){t.body.eventListeners.onDragEnd(e)}),this.hammer.on("pinch",function(e){t.body.eventListeners.onPinch(e)}),this.frame.canvas.addEventListener("mousewheel",function(e){t.body.eventListeners.onMouseWheel(e)}),this.frame.canvas.addEventListener("DOMMouseScroll",function(e){t.body.eventListeners.onMouseWheel(e)}),this.frame.canvas.addEventListener("mousemove",function(e){t.body.eventListeners.onMouseMove(e)}),this.frame.canvas.addEventListener("contextmenu",function(e){t.body.eventListeners.onContext(e)}),this.hammerFrame=new h(this.frame),d.onRelease(this.hammerFrame,function(e){t.body.eventListeners.onRelease(e)})}},{key:"setSize",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.options.width,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.options.height;t=this._prepareValue(t),e=this._prepareValue(e);var i=!1,o=this.frame.canvas.width,n=this.frame.canvas.height,s=this.frame.canvas.getContext("2d"),r=this.pixelRatio;return this.pixelRatio=(window.devicePixelRatio||1)/(s.webkitBackingStorePixelRatio||s.mozBackingStorePixelRatio||s.msBackingStorePixelRatio||s.oBackingStorePixelRatio||s.backingStorePixelRatio||1),t!=this.options.width||e!=this.options.height||this.frame.style.width!=t||this.frame.style.height!=e?(this._getCameraState(r),this.frame.style.width=t,this.frame.style.height=e,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=Math.round(this.frame.canvas.clientWidth*this.pixelRatio),this.frame.canvas.height=Math.round(this.frame.canvas.clientHeight*this.pixelRatio),this.options.width=t,this.options.height=e,this.canvasViewCenter={x:.5*this.frame.clientWidth,y:.5*this.frame.clientHeight},i=!0):(this.frame.canvas.width==Math.round(this.frame.canvas.clientWidth*this.pixelRatio)&&this.frame.canvas.height==Math.round(this.frame.canvas.clientHeight*this.pixelRatio)||this._getCameraState(r),this.frame.canvas.width!=Math.round(this.frame.canvas.clientWidth*this.pixelRatio)&&(this.frame.canvas.width=Math.round(this.frame.canvas.clientWidth*this.pixelRatio),i=!0),this.frame.canvas.height!=Math.round(this.frame.canvas.clientHeight*this.pixelRatio)&&(this.frame.canvas.height=Math.round(this.frame.canvas.clientHeight*this.pixelRatio),i=!0)),i===!0&&(this.body.emitter.emit("resize",{width:Math.round(this.frame.canvas.width/this.pixelRatio),height:Math.round(this.frame.canvas.height/this.pixelRatio),oldWidth:Math.round(o/this.pixelRatio),oldHeight:Math.round(n/this.pixelRatio)}),this._setCameraState()),this.initialized=!0,i}},{key:"_XconvertDOMtoCanvas",value:function(t){return(t-this.body.view.translation.x)/this.body.view.scale}},{key:"_XconvertCanvasToDOM",value:function(t){return t*this.body.view.scale+this.body.view.translation.x}},{key:"_YconvertDOMtoCanvas",value:function(t){return(t-this.body.view.translation.y)/this.body.view.scale}},{key:"_YconvertCanvasToDOM",value:function(t){return t*this.body.view.scale+this.body.view.translation.y}},{key:"canvasToDOM",value:function(t){return{x:this._XconvertCanvasToDOM(t.x),y:this._YconvertCanvasToDOM(t.y)}}},{key:"DOMtoCanvas",value:function(t){return{x:this._XconvertDOMtoCanvas(t.x),y:this._YconvertDOMtoCanvas(t.y)}}}]),t}();e.default=u},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(115),s=o(n),r=i(116),a=o(r),h=i(210),d=o(h),l=i(1),u=function(){function t(e,i){var o=this;(0,s.default)(this,t),this.body=e,this.canvas=i,this.animationSpeed=1/this.renderRefreshRate,this.animationEasingFunction="easeInOutQuint",this.easingTime=0,this.sourceScale=0,this.targetScale=0,this.sourceTranslation=0,this.targetTranslation=0,this.lockedOnNodeId=void 0,this.lockedOnNodeOffset=void 0,this.touchTime=0,this.viewFunction=void 0,this.body.emitter.on("fit",this.fit.bind(this)),this.body.emitter.on("animationFinished",function(){o.body.emitter.emit("_stopRendering")}),this.body.emitter.on("unlockNode",this.releaseNode.bind(this))}return(0,a.default)(t,[{key:"setOptions",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.options=t}},{key:"fit",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{nodes:[]},e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=void 0,o=void 0;if(void 0!==t.nodes&&0!==t.nodes.length||(t.nodes=this.body.nodeIndices),e===!0){var n=0;for(var s in this.body.nodes)if(this.body.nodes.hasOwnProperty(s)){var r=this.body.nodes[s];r.predefinedPosition===!0&&(n+=1)}if(n>.5*this.body.nodeIndices.length)return void this.fit(t,!1);i=d.default.getRange(this.body.nodes,t.nodes);var a=this.body.nodeIndices.length;o=12.662/(a+7.4147)+.0964822;var h=Math.min(this.canvas.frame.canvas.clientWidth/600,this.canvas.frame.canvas.clientHeight/600);o*=h}else{this.body.emitter.emit("_resizeNodes"),i=d.default.getRange(this.body.nodes,t.nodes);var l=1.1*Math.abs(i.maxX-i.minX),u=1.1*Math.abs(i.maxY-i.minY),c=this.canvas.frame.canvas.clientWidth/l,p=this.canvas.frame.canvas.clientHeight/u;o=c<=p?c:p}o>1?o=1:0===o&&(o=1);var f=d.default.findCenter(i),m={position:f,scale:o,animation:t.animation};this.moveTo(m)}},{key:"focus",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(void 0!==this.body.nodes[t]){var i={x:this.body.nodes[t].x,y:this.body.nodes[t].y};e.position=i,e.lockedOnNode=t,this.moveTo(e)}else console.log("Node: "+t+" cannot be found.")}},{key:"moveTo",value:function(t){return void 0===t?void(t={}):(void 0===t.offset&&(t.offset={x:0,y:0}),void 0===t.offset.x&&(t.offset.x=0),void 0===t.offset.y&&(t.offset.y=0),void 0===t.scale&&(t.scale=this.body.view.scale),void 0===t.position&&(t.position=this.getViewPosition()),void 0===t.animation&&(t.animation={duration:0}),t.animation===!1&&(t.animation={duration:0}),t.animation===!0&&(t.animation={}),void 0===t.animation.duration&&(t.animation.duration=1e3),void 0===t.animation.easingFunction&&(t.animation.easingFunction="easeInOutQuad"),void this.animateView(t))}},{key:"animateView",value:function(t){if(void 0!==t){this.animationEasingFunction=t.animation.easingFunction,this.releaseNode(),t.locked===!0&&(this.lockedOnNodeId=t.lockedOnNode,this.lockedOnNodeOffset=t.offset),0!=this.easingTime&&this._transitionRedraw(!0),this.sourceScale=this.body.view.scale,this.sourceTranslation=this.body.view.translation,this.targetScale=t.scale,this.body.view.scale=this.targetScale;var e=this.canvas.DOMtoCanvas({x:.5*this.canvas.frame.canvas.clientWidth,y:.5*this.canvas.frame.canvas.clientHeight}),i={x:e.x-t.position.x,y:e.y-t.position.y};this.targetTranslation={x:this.sourceTranslation.x+i.x*this.targetScale+t.offset.x,y:this.sourceTranslation.y+i.y*this.targetScale+t.offset.y},0===t.animation.duration?void 0!=this.lockedOnNodeId?(this.viewFunction=this._lockedRedraw.bind(this),this.body.emitter.on("initRedraw",this.viewFunction)):(this.body.view.scale=this.targetScale,this.body.view.translation=this.targetTranslation,this.body.emitter.emit("_requestRedraw")):(this.animationSpeed=1/(60*t.animation.duration*.001)||1/60,this.animationEasingFunction=t.animation.easingFunction,this.viewFunction=this._transitionRedraw.bind(this),this.body.emitter.on("initRedraw",this.viewFunction),this.body.emitter.emit("_startRendering"))}}},{key:"_lockedRedraw",value:function(){var t={x:this.body.nodes[this.lockedOnNodeId].x,y:this.body.nodes[this.lockedOnNodeId].y},e=this.canvas.DOMtoCanvas({x:.5*this.canvas.frame.canvas.clientWidth,y:.5*this.canvas.frame.canvas.clientHeight}),i={x:e.x-t.x,y:e.y-t.y},o=this.body.view.translation,n={x:o.x+i.x*this.body.view.scale+this.lockedOnNodeOffset.x,y:o.y+i.y*this.body.view.scale+this.lockedOnNodeOffset.y};this.body.view.translation=n}},{key:"releaseNode",value:function(){void 0!==this.lockedOnNodeId&&void 0!==this.viewFunction&&(this.body.emitter.off("initRedraw",this.viewFunction),this.lockedOnNodeId=void 0,this.lockedOnNodeOffset=void 0)}},{key:"_transitionRedraw",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.easingTime+=this.animationSpeed,this.easingTime=t===!0?1:this.easingTime;var e=l.easingFunctions[this.animationEasingFunction](this.easingTime);this.body.view.scale=this.sourceScale+(this.targetScale-this.sourceScale)*e,this.body.view.translation={x:this.sourceTranslation.x+(this.targetTranslation.x-this.sourceTranslation.x)*e,y:this.sourceTranslation.y+(this.targetTranslation.y-this.sourceTranslation.y)*e},this.easingTime>=1&&(this.body.emitter.off("initRedraw",this.viewFunction),this.easingTime=0,void 0!=this.lockedOnNodeId&&(this.viewFunction=this._lockedRedraw.bind(this),this.body.emitter.on("initRedraw",this.viewFunction)),this.body.emitter.emit("animationFinished"))}},{key:"getScale",value:function(){return this.body.view.scale}},{key:"getViewPosition",value:function(){return this.canvas.DOMtoCanvas({x:.5*this.canvas.frame.canvas.clientWidth,y:.5*this.canvas.frame.canvas.clientHeight})}}]),t}();e.default=u},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(115),s=o(n),r=i(116),a=o(r),h=i(216),d=o(h),l=i(128),u=o(l),c=i(1),p=function(){function t(e,i,o){(0,s.default)(this,t),this.body=e,this.canvas=i,this.selectionHandler=o,this.navigationHandler=new d.default(e,i),this.body.eventListeners.onTap=this.onTap.bind(this),this.body.eventListeners.onTouch=this.onTouch.bind(this),this.body.eventListeners.onDoubleTap=this.onDoubleTap.bind(this),this.body.eventListeners.onHold=this.onHold.bind(this),this.body.eventListeners.onDragStart=this.onDragStart.bind(this),this.body.eventListeners.onDrag=this.onDrag.bind(this),this.body.eventListeners.onDragEnd=this.onDragEnd.bind(this),this.body.eventListeners.onMouseWheel=this.onMouseWheel.bind(this),this.body.eventListeners.onPinch=this.onPinch.bind(this),this.body.eventListeners.onMouseMove=this.onMouseMove.bind(this),this.body.eventListeners.onRelease=this.onRelease.bind(this),this.body.eventListeners.onContext=this.onContext.bind(this),this.touchTime=0,this.drag={},this.pinch={},this.popup=void 0,this.popupObj=void 0,this.popupTimer=void 0,this.body.functions.getPointer=this.getPointer.bind(this),this.options={},this.defaultOptions={dragNodes:!0,dragView:!0,hover:!1,keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02},bindToWindow:!0},navigationButtons:!1,tooltipDelay:300,zoomView:!0},c.extend(this.options,this.defaultOptions),this.bindEventListeners()}return(0,a.default)(t,[{key:"bindEventListeners",value:function(){var t=this;this.body.emitter.on("destroy",function(){clearTimeout(t.popupTimer),delete t.body.functions.getPointer})}},{key:"setOptions",value:function(t){if(void 0!==t){var e=["hideEdgesOnDrag","hideNodesOnDrag","keyboard","multiselect","selectable","selectConnectedEdges"];c.selectiveNotDeepExtend(e,this.options,t),c.mergeOptions(this.options,t,"keyboard"),t.tooltip&&(c.extend(this.options.tooltip,t.tooltip),t.tooltip.color&&(this.options.tooltip.color=c.parseColor(t.tooltip.color)))}this.navigationHandler.setOptions(this.options)}},{key:"getPointer",value:function(t){return{x:t.x-c.getAbsoluteLeft(this.canvas.frame.canvas),y:t.y-c.getAbsoluteTop(this.canvas.frame.canvas)}}},{key:"onTouch",value:function(t){(new Date).valueOf()-this.touchTime>50&&(this.drag.pointer=this.getPointer(t.center),this.drag.pinched=!1,this.pinch.scale=this.body.view.scale,this.touchTime=(new Date).valueOf())}},{key:"onTap",value:function(t){var e=this.getPointer(t.center),i=this.selectionHandler.options.multiselect&&(t.changedPointers[0].ctrlKey||t.changedPointers[0].metaKey);this.checkSelectionChanges(e,t,i),this.selectionHandler._generateClickEvent("click",t,e)}},{key:"onDoubleTap",value:function(t){var e=this.getPointer(t.center);this.selectionHandler._generateClickEvent("doubleClick",t,e)}},{key:"onHold",value:function(t){var e=this.getPointer(t.center),i=this.selectionHandler.options.multiselect;this.checkSelectionChanges(e,t,i),this.selectionHandler._generateClickEvent("click",t,e),this.selectionHandler._generateClickEvent("hold",t,e)}},{key:"onRelease",value:function(t){if((new Date).valueOf()-this.touchTime>10){var e=this.getPointer(t.center);this.selectionHandler._generateClickEvent("release",t,e),this.touchTime=(new Date).valueOf()}}},{key:"onContext",value:function(t){var e=this.getPointer({x:t.clientX,y:t.clientY});this.selectionHandler._generateClickEvent("oncontext",t,e)}},{key:"checkSelectionChanges",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=this.selectionHandler._getSelectedEdgeCount(),n=this.selectionHandler._getSelectedNodeCount(),s=this.selectionHandler.getSelection(),r=void 0;r=i===!0?this.selectionHandler.selectAdditionalOnPoint(t):this.selectionHandler.selectOnPoint(t);var a=this.selectionHandler._getSelectedEdgeCount(),h=this.selectionHandler._getSelectedNodeCount(),d=this.selectionHandler.getSelection(),l=this._determineIfDifferent(s,d),u=l.nodesChanged,c=l.edgesChanged,p=!1;h-n>0?(this.selectionHandler._generateClickEvent("selectNode",e,t),r=!0,p=!0):u===!0&&h>0?(this.selectionHandler._generateClickEvent("deselectNode",e,t,s),this.selectionHandler._generateClickEvent("selectNode",e,t),p=!0,r=!0):h-n<0&&(this.selectionHandler._generateClickEvent("deselectNode",e,t,s),r=!0),a-o>0&&p===!1?(this.selectionHandler._generateClickEvent("selectEdge",e,t),r=!0):a>0&&c===!0?(this.selectionHandler._generateClickEvent("deselectEdge",e,t,s),this.selectionHandler._generateClickEvent("selectEdge",e,t),r=!0):a-o<0&&(this.selectionHandler._generateClickEvent("deselectEdge",e,t,s),r=!0),r===!0&&this.selectionHandler._generateClickEvent("select",e,t)}},{key:"_determineIfDifferent",value:function(t,e){for(var i=!1,o=!1,n=0;n10&&(t=10);var o=void 0;void 0!==this.drag&&this.drag.dragging===!0&&(o=this.canvas.DOMtoCanvas(this.drag.pointer));var n=this.body.view.translation,s=t/i,r=(1-s)*e.x+n.x*s,a=(1-s)*e.y+n.y*s;if(this.body.view.scale=t,this.body.view.translation={x:r,y:a},void 0!=o){var h=this.canvas.canvasToDOM(o);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}this.body.emitter.emit("_requestRedraw"),i0&&(this.popupObj=h[l[l.length-1]],s=!0)}if(void 0===this.popupObj&&s===!1){for(var p=this.body.edgeIndices,f=this.body.edges,m=void 0,v=[],g=0;g0&&(this.popupObj=f[v[v.length-1]],r="edge")}void 0!==this.popupObj?this.popupObj.id!==n&&(void 0===this.popup&&(this.popup=new u.default(this.canvas.frame)),this.popup.popupTargetType=r,this.popup.popupTargetId=this.popupObj.id,this.popup.setPosition(t.x+3,t.y-5),this.popup.setText(this.popupObj.getTitle()),this.popup.show(),this.body.emitter.emit("showPopup",this.popupObj.id)):void 0!==this.popup&&(this.popup.hide(),this.body.emitter.emit("hidePopup"))}},{key:"_checkHidePopup",value:function(t){var e=this.selectionHandler._pointerToPositionObject(t),i=!1;if("node"===this.popup.popupTargetType){if(void 0!==this.body.nodes[this.popup.popupTargetId]&&(i=this.body.nodes[this.popup.popupTargetId].isOverlappingWith(e),i===!0)){var o=this.selectionHandler.getNodeAt(t);i=void 0!==o&&o.id===this.popup.popupTargetId}}else void 0===this.selectionHandler.getNodeAt(t)&&void 0!==this.body.edges[this.popup.popupTargetId]&&(i=this.body.edges[this.popup.popupTargetId].isOverlappingWith(e));i===!1&&(this.popupObj=void 0,this.popup.hide(),this.body.emitter.emit("hidePopup"))}}]),t}();e.default=p},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(115),s=o(n),r=i(116),a=o(r),h=(i(1),i(108)),d=i(121),l=i(111),u=function(){function t(e,i){var o=this;(0,s.default)(this,t),this.body=e,this.canvas=i,this.iconsCreated=!1,this.navigationHammers=[],this.boundFunctions={},this.touchTime=0,this.activated=!1,this.body.emitter.on("activate",function(){o.activated=!0,o.configureKeyboardBindings()}),this.body.emitter.on("deactivate",function(){o.activated=!1,o.configureKeyboardBindings()}),this.body.emitter.on("destroy",function(){void 0!==o.keycharm&&o.keycharm.destroy()}),this.options={}}return(0,a.default)(t,[{key:"setOptions",value:function(t){void 0!==t&&(this.options=t,this.create())}},{key:"create",value:function(){this.options.navigationButtons===!0?this.iconsCreated===!1&&this.loadNavigationElements():this.iconsCreated===!0&&this.cleanNavigation(),this.configureKeyboardBindings()}},{key:"cleanNavigation",value:function(){if(0!=this.navigationHammers.length){for(var t=0;t700&&(this.body.emitter.emit("fit",{duration:700}),this.touchTime=(new Date).valueOf())}},{key:"_stopMovement",value:function(){for(var t in this.boundFunctions)this.boundFunctions.hasOwnProperty(t)&&(this.body.emitter.off("initRedraw",this.boundFunctions[t]),this.body.emitter.emit("_stopRendering"));this.boundFunctions={}}},{key:"_moveUp",value:function(){this.body.view.translation.y+=this.options.keyboard.speed.y}},{key:"_moveDown",value:function(){this.body.view.translation.y-=this.options.keyboard.speed.y}},{key:"_moveLeft",value:function(){this.body.view.translation.x+=this.options.keyboard.speed.x}},{key:"_moveRight",value:function(){this.body.view.translation.x-=this.options.keyboard.speed.x}},{key:"_zoomIn",value:function(){var t=this.body.view.scale,e=this.body.view.scale*(1+this.options.keyboard.speed.zoom),i=this.body.view.translation,o=e/t,n=(1-o)*this.canvas.canvasViewCenter.x+i.x*o,s=(1-o)*this.canvas.canvasViewCenter.y+i.y*o;this.body.view.scale=e,this.body.view.translation={x:n,y:s},this.body.emitter.emit("zoom",{direction:"+",scale:this.body.view.scale,pointer:null})}},{key:"_zoomOut",value:function(){var t=this.body.view.scale,e=this.body.view.scale/(1+this.options.keyboard.speed.zoom),i=this.body.view.translation,o=e/t,n=(1-o)*this.canvas.canvasViewCenter.x+i.x*o,s=(1-o)*this.canvas.canvasViewCenter.y+i.y*o; +this.body.view.scale=e,this.body.view.translation={x:n,y:s},this.body.emitter.emit("zoom",{direction:"-",scale:this.body.view.scale,pointer:null})}},{key:"configureKeyboardBindings",value:function(){var t=this;void 0!==this.keycharm&&this.keycharm.destroy(),this.options.keyboard.enabled===!0&&(this.options.keyboard.bindToWindow===!0?this.keycharm=l({container:window,preventDefault:!0}):this.keycharm=l({container:this.canvas.frame,preventDefault:!0}),this.keycharm.reset(),this.activated===!0&&(this.keycharm.bind("up",function(){t.bindToRedraw("_moveUp")},"keydown"),this.keycharm.bind("down",function(){t.bindToRedraw("_moveDown")},"keydown"),this.keycharm.bind("left",function(){t.bindToRedraw("_moveLeft")},"keydown"),this.keycharm.bind("right",function(){t.bindToRedraw("_moveRight")},"keydown"),this.keycharm.bind("=",function(){t.bindToRedraw("_zoomIn")},"keydown"),this.keycharm.bind("num+",function(){t.bindToRedraw("_zoomIn")},"keydown"),this.keycharm.bind("num-",function(){t.bindToRedraw("_zoomOut")},"keydown"),this.keycharm.bind("-",function(){t.bindToRedraw("_zoomOut")},"keydown"),this.keycharm.bind("[",function(){t.bindToRedraw("_zoomOut")},"keydown"),this.keycharm.bind("]",function(){t.bindToRedraw("_zoomIn")},"keydown"),this.keycharm.bind("pageup",function(){t.bindToRedraw("_zoomIn")},"keydown"),this.keycharm.bind("pagedown",function(){t.bindToRedraw("_zoomOut")},"keydown"),this.keycharm.bind("up",function(){t.unbindFromRedraw("_moveUp")},"keyup"),this.keycharm.bind("down",function(){t.unbindFromRedraw("_moveDown")},"keyup"),this.keycharm.bind("left",function(){t.unbindFromRedraw("_moveLeft")},"keyup"),this.keycharm.bind("right",function(){t.unbindFromRedraw("_moveRight")},"keyup"),this.keycharm.bind("=",function(){t.unbindFromRedraw("_zoomIn")},"keyup"),this.keycharm.bind("num+",function(){t.unbindFromRedraw("_zoomIn")},"keyup"),this.keycharm.bind("num-",function(){t.unbindFromRedraw("_zoomOut")},"keyup"),this.keycharm.bind("-",function(){t.unbindFromRedraw("_zoomOut")},"keyup"),this.keycharm.bind("[",function(){t.unbindFromRedraw("_zoomOut")},"keyup"),this.keycharm.bind("]",function(){t.unbindFromRedraw("_zoomIn")},"keyup"),this.keycharm.bind("pageup",function(){t.unbindFromRedraw("_zoomIn")},"keyup"),this.keycharm.bind("pagedown",function(){t.unbindFromRedraw("_zoomOut")},"keyup")))}}]),t}();e.default=u},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(115),s=o(n),r=i(116),a=o(r),h=i(159),d=o(h),l=i(192),u=o(l),c=i(1),p=function(){function t(e,i){var o=this;(0,s.default)(this,t),this.body=e,this.canvas=i,this.selectionObj={nodes:[],edges:[]},this.hoverObj={nodes:{},edges:{}},this.options={},this.defaultOptions={multiselect:!1,selectable:!0,selectConnectedEdges:!0,hoverConnectedEdges:!0},c.extend(this.options,this.defaultOptions),this.body.emitter.on("_dataChanged",function(){o.updateSelection()})}return(0,a.default)(t,[{key:"setOptions",value:function(t){if(void 0!==t){var e=["multiselect","hoverConnectedEdges","selectable","selectConnectedEdges"];c.selectiveDeepExtend(e,this.options,t)}}},{key:"selectOnPoint",value:function(t){var e=!1;if(this.options.selectable===!0){var i=this.getNodeAt(t)||this.getEdgeAt(t);this.unselectAll(),void 0!==i&&(e=this.selectObject(i)),this.body.emitter.emit("_requestRedraw")}return e}},{key:"selectAdditionalOnPoint",value:function(t){var e=!1;if(this.options.selectable===!0){var i=this.getNodeAt(t)||this.getEdgeAt(t);void 0!==i&&(e=!0,i.isSelected()===!0?this.deselectObject(i):this.selectObject(i),this.body.emitter.emit("_requestRedraw"))}return e}},{key:"_generateClickEvent",value:function(t,e,i,o){var n=arguments.length>4&&void 0!==arguments[4]&&arguments[4],s=void 0;s=n===!0?{nodes:[],edges:[]}:this.getSelection(),s.pointer={DOM:{x:i.x,y:i.y},canvas:this.canvas.DOMtoCanvas(i)},s.event=e,void 0!==o&&(s.previousSelection=o),this.body.emitter.emit(t,s)}},{key:"selectObject",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.options.selectConnectedEdges;return void 0!==t&&(t instanceof d.default&&e===!0&&this._selectConnectedEdges(t),t.select(),this._addToSelection(t),!0)}},{key:"deselectObject",value:function(t){t.isSelected()===!0&&(t.selected=!1,this._removeFromSelection(t))}},{key:"_getAllNodesOverlappingWith",value:function(t){for(var e=[],i=this.body.nodes,o=0;o1&&void 0!==arguments[1])||arguments[1],i=this._pointerToPositionObject(t),o=this._getAllNodesOverlappingWith(i);return o.length>0?e===!0?this.body.nodes[o[o.length-1]]:o[o.length-1]:void 0}},{key:"_getEdgesOverlappingWith",value:function(t,e){for(var i=this.body.edges,o=0;o1&&void 0!==arguments[1])||arguments[1],i=this.canvas.DOMtoCanvas(t),o=10,n=null,s=this.body.edges,r=0;r1)return!0;return!1}},{key:"_selectConnectedEdges",value:function(t){for(var e=0;e1&&void 0!==arguments[1]?arguments[1]:{},i=void 0,o=void 0;if(!t||!t.nodes&&!t.edges)throw"Selection must be an object with nodes and/or edges properties";if((e.unselectAll||void 0===e.unselectAll)&&this.unselectAll(),t.nodes)for(i=0;i1&&void 0!==arguments[1])||arguments[1];if(!t||void 0===t.length)throw"Selection must be an array with ids";this.setSelection({nodes:t},{highlightEdges:e})}},{key:"selectEdges",value:function(t){if(!t||void 0===t.length)throw"Selection must be an array with ids";this.setSelection({edges:t})}},{key:"updateSelection",value:function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&(this.body.nodes.hasOwnProperty(t)||delete this.selectionObj.nodes[t]);for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(this.body.edges.hasOwnProperty(e)||delete this.selectionObj.edges[e])}}]),t}();e.default=p},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(58),s=o(n),r=i(161),a=o(r),h=i(62),d=o(h),l=i(115),u=o(l),c=i(116),p=o(c),f=i(210),m=o(f),v=i(1),g=function(){function t(e){(0,u.default)(this,t),this.body=e,this.initialRandomSeed=Math.round(1e6*Math.random()),this.randomSeed=this.initialRandomSeed,this.setPhysics=!1,this.options={},this.optionsBackup={physics:{}},this.defaultOptions={randomSeed:void 0,improvedLayout:!0,hierarchical:{enabled:!1,levelSeparation:150,nodeSpacing:100,treeSpacing:200,blockShifting:!0,edgeMinimization:!0,parentCentralization:!0,direction:"UD",sortMethod:"hubsize"}},v.extend(this.options,this.defaultOptions),this.bindEventListeners()}return(0,p.default)(t,[{key:"bindEventListeners",value:function(){var t=this;this.body.emitter.on("_dataChanged",function(){t.setupHierarchicalLayout()}),this.body.emitter.on("_dataLoaded",function(){t.layoutNetwork()}),this.body.emitter.on("_resetHierarchicalLayout",function(){t.setupHierarchicalLayout()})}},{key:"setOptions",value:function(t,e){if(void 0!==t){var i=this.options.hierarchical.enabled;if(v.selectiveDeepExtend(["randomSeed","improvedLayout"],this.options,t),v.mergeOptions(this.options,t,"hierarchical"),void 0!==t.randomSeed&&(this.initialRandomSeed=t.randomSeed),this.options.hierarchical.enabled===!0)return i===!0&&this.body.emitter.emit("refresh",!0),"RL"===this.options.hierarchical.direction||"DU"===this.options.hierarchical.direction?this.options.hierarchical.levelSeparation>0&&(this.options.hierarchical.levelSeparation*=-1):this.options.hierarchical.levelSeparation<0&&(this.options.hierarchical.levelSeparation*=-1),this.body.emitter.emit("_resetHierarchicalLayout"),this.adaptAllOptionsForHierarchicalLayout(e);if(i===!0)return this.body.emitter.emit("refresh"),v.deepExtend(e,this.optionsBackup)}return e}},{key:"adaptAllOptionsForHierarchicalLayout",value:function(t){if(this.options.hierarchical.enabled===!0){void 0===t.physics||t.physics===!0?(t.physics={enabled:void 0===this.optionsBackup.physics.enabled||this.optionsBackup.physics.enabled,solver:"hierarchicalRepulsion"},this.optionsBackup.physics.enabled=void 0===this.optionsBackup.physics.enabled||this.optionsBackup.physics.enabled,this.optionsBackup.physics.solver=this.optionsBackup.physics.solver||"barnesHut"):"object"===(0,d.default)(t.physics)?(this.optionsBackup.physics.enabled=void 0===t.physics.enabled||t.physics.enabled,this.optionsBackup.physics.solver=t.physics.solver||"barnesHut",t.physics.solver="hierarchicalRepulsion"):t.physics!==!1&&(this.optionsBackup.physics.solver="barnesHut",t.physics={solver:"hierarchicalRepulsion"});var e="horizontal";"RL"!==this.options.hierarchical.direction&&"LR"!==this.options.hierarchical.direction||(e="vertical"),void 0===t.edges?(this.optionsBackup.edges={smooth:{enabled:!0,type:"dynamic"}},t.edges={smooth:!1}):void 0===t.edges.smooth?(this.optionsBackup.edges={smooth:{enabled:!0,type:"dynamic"}},t.edges.smooth=!1):"boolean"==typeof t.edges.smooth?(this.optionsBackup.edges={smooth:t.edges.smooth},t.edges.smooth={enabled:t.edges.smooth,type:e}):(void 0!==t.edges.smooth.type&&"dynamic"!==t.edges.smooth.type&&(e=t.edges.smooth.type),this.optionsBackup.edges={smooth:void 0===t.edges.smooth.enabled||t.edges.smooth.enabled,type:void 0===t.edges.smooth.type?"dynamic":t.edges.smooth.type,roundness:void 0===t.edges.smooth.roundness?.5:t.edges.smooth.roundness,forceDirection:void 0!==t.edges.smooth.forceDirection&&t.edges.smooth.forceDirection},t.edges.smooth={enabled:void 0===t.edges.smooth.enabled||t.edges.smooth.enabled,type:e,roundness:void 0===t.edges.smooth.roundness?.5:t.edges.smooth.roundness,forceDirection:void 0!==t.edges.smooth.forceDirection&&t.edges.smooth.forceDirection}),this.body.emitter.emit("_forceDisableDynamicCurves",e)}return t}},{key:"seededRandom",value:function(){var t=1e4*Math.sin(this.randomSeed++);return t-Math.floor(t)}},{key:"positionInitially",value:function(t){if(this.options.hierarchical.enabled!==!0){this.randomSeed=this.initialRandomSeed;for(var e=0;es){for(var r=this.body.nodeIndices.length;this.body.nodeIndices.length>s;){n+=1;var a=this.body.nodeIndices.length;n%3===0?this.body.modules.clustering.clusterBridges():this.body.modules.clustering.clusterOutliers();var h=this.body.nodeIndices.length;if(a==h&&n%3!==0||n>o)return this._declusterAll(),this.body.emitter.emit("_layoutFailed"),void console.info("This network could not be positioned by this version of the improved layout algorithm. Please disable improvedLayout for better performance.")}this.body.modules.kamadaKawai.setOptions({springLength:Math.max(150,2*r)})}this.body.modules.kamadaKawai.solve(this.body.nodeIndices,this.body.edgeIndices,!0),this._shiftToCenter();for(var d=70,l=0;l0){var t=void 0,e=void 0,i=!1,o=!0,n=!1;this.hierarchicalLevels={},this.lastNodeOnLevel={},this.hierarchicalChildrenReference={},this.hierarchicalParentReference={},this.hierarchicalTrees={},this.treeIndex=-1,this.distributionOrdering={},this.distributionIndex={},this.distributionOrderingPresence={};for(e in this.body.nodes)this.body.nodes.hasOwnProperty(e)&&(t=this.body.nodes[e],void 0===t.options.x&&void 0===t.options.y&&(o=!1),void 0!==t.options.level?(i=!0,this.hierarchicalLevels[e]=t.options.level):n=!0);if(n===!0&&i===!0)throw new Error("To use the hierarchical layout, nodes require either no predefined levels or levels have to be defined for all nodes.");n===!0&&("hubsize"===this.options.hierarchical.sortMethod?this._determineLevelsByHubsize():"directed"===this.options.hierarchical.sortMethod?this._determineLevelsDirected():"custom"===this.options.hierarchical.sortMethod&&this._determineLevelsCustomCallback());for(var s in this.body.nodes)this.body.nodes.hasOwnProperty(s)&&void 0===this.hierarchicalLevels[s]&&(this.hierarchicalLevels[s]=0);var r=this._getDistribution();this._generateMap(),this._placeNodesByHierarchy(r),this._condenseHierarchy(),this._shiftToCenter()}}},{key:"_condenseHierarchy",value:function(){var t=this,e=!1,i={},o=function(){for(var e=h(),i=0,o=0;o0)for(var s=0;s1&&void 0!==arguments[1]?arguments[1]:1e9,o=1e9,n=1e9,s=1e9,r=-1e9;for(var h in e)if(e.hasOwnProperty(h)){var d=t.body.nodes[h],l=t.hierarchicalLevels[d.id],u=t._getPositionForHierarchy(d),c=t._getSpaceAroundNode(d,e),p=(0,a.default)(c,2),f=p[0],m=p[1];o=Math.min(f,o),n=Math.min(m,n),l<=i&&(s=Math.min(u,s),r=Math.max(u,r))}return[s,r,o,n]},u=function e(i){var o=t.hierarchicalLevels[i];if(t.hierarchicalChildrenReference[i]){var n=t.hierarchicalChildrenReference[i];if(n.length>0)for(var s=0;s1)for(var a=0;a2&&void 0!==arguments[2]&&arguments[2],s=t._getPositionForHierarchy(i),r=t._getPositionForHierarchy(o),h=Math.abs(r-s);if(h>t.options.hierarchical.nodeSpacing){var u={};u[i.id]=!0;var p={};p[o.id]=!0,d(i,u),d(o,p);var f=c(i,o),m=l(u,f),v=(0,a.default)(m,4),g=(v[0],v[1]),y=(v[2],v[3],l(p,f)),b=(0,a.default)(y,4),_=b[0],w=(b[1],b[2]),x=(b[3],Math.abs(g-_));if(x>t.options.hierarchical.nodeSpacing){var k=g-_+t.options.hierarchical.nodeSpacing;k<-w+t.options.hierarchical.nodeSpacing&&(k=-w+t.options.hierarchical.nodeSpacing),k<0&&(t._shiftBlock(o.id,k),e=!0,n===!0&&t._centerParent(o))}}},v=function(o,n){for(var s=n.id,r=n.edges,h=t.hierarchicalLevels[n.id],u=t.options.hierarchical.levelSeparation*t.options.hierarchical.levelSeparation,c={},p=[],f=0;f0?m=Math.min(f,p-t.options.hierarchical.nodeSpacing):f<0&&(m=-Math.min(-f,c-t.options.hierarchical.nodeSpacing)),0!=m&&(t._shiftBlock(n.id,m),e=!0)},w=function(i){var o=t._getPositionForHierarchy(n),s=t._getSpaceAroundNode(n),r=(0,a.default)(s,2),h=r[0],d=r[1],l=i-o,u=o;l>0?u=Math.min(o+(d-t.options.hierarchical.nodeSpacing),i):l<0&&(u=Math.max(o-(h-t.options.hierarchical.nodeSpacing),i)),u!==o&&(t._setPositionForHierarchy(n,u,void 0,!0),e=!0)},x=b(o,p);_(x),x=b(o,r),w(x)},g=function(i){var o=(0,s.default)(t.distributionOrdering);o=o.reverse();for(var n=0;n0)for(var d=0;d0&&Math.abs(g)0&&(a=this._getPositionForHierarchy(i[n-1])+this.options.hierarchical.nodeSpacing),this._setPositionForHierarchy(r,a,e),this._validataPositionAndContinue(r,e,a),o++}}}}},{key:"_placeBranchNodes",value:function(t,e){if(void 0!==this.hierarchicalChildrenReference[t]){for(var i=[],o=0;oe&&void 0===this.positionedNodes[s.id]))return;var a=void 0;a=0===n?this._getPositionForHierarchy(this.body.nodes[t]):this._getPositionForHierarchy(i[n-1])+this.options.hierarchical.nodeSpacing,this._setPositionForHierarchy(s,a,r),this._validataPositionAndContinue(s,r,a)}for(var h=1e9,d=-1e9,l=0;l0&&(e=this._getHubSize(),0!==e);)for(var o in this.body.nodes)if(this.body.nodes.hasOwnProperty(o)){var n=this.body.nodes[o];n.edges.length===e&&this._crawlNetwork(i,o)}}},{key:"_determineLevelsCustomCallback",value:function(){var t=this,e=1e5,i=function(t,e,i){},o=function(o,n,s){var r=t.hierarchicalLevels[o.id];void 0===r&&(t.hierarchicalLevels[o.id]=e);var a=i(m.default.cloneOptions(o,"node"),m.default.cloneOptions(n,"node"),m.default.cloneOptions(s,"edge"));t.hierarchicalLevels[n.id]=t.hierarchicalLevels[o.id]+a};this._crawlNetwork(o),this._setMinLevelToZero()}},{key:"_determineLevelsDirected",value:function(){var t=this,e=1e4,i=function(i,o,n){var s=t.hierarchicalLevels[i.id];void 0===s&&(t.hierarchicalLevels[i.id]=e),n.toId==o.id?t.hierarchicalLevels[o.id]=t.hierarchicalLevels[i.id]+1:t.hierarchicalLevels[o.id]=t.hierarchicalLevels[i.id]-1};this._crawlNetwork(i),this._setMinLevelToZero()}},{key:"_setMinLevelToZero",value:function(){var t=1e9;for(var e in this.body.nodes)this.body.nodes.hasOwnProperty(e)&&void 0!==this.hierarchicalLevels[e]&&(t=Math.min(this.hierarchicalLevels[e],t));for(var i in this.body.nodes)this.body.nodes.hasOwnProperty(i)&&void 0!==this.hierarchicalLevels[i]&&(this.hierarchicalLevels[i]-=t)}},{key:"_generateMap",value:function(){var t=this,e=function(e,i){if(t.hierarchicalLevels[i.id]>t.hierarchicalLevels[e.id]){var o=e.id,n=i.id;void 0===t.hierarchicalChildrenReference[o]&&(t.hierarchicalChildrenReference[o]=[]),t.hierarchicalChildrenReference[o].push(n),void 0===t.hierarchicalParentReference[n]&&(t.hierarchicalParentReference[n]=[]),t.hierarchicalParentReference[n].push(o)}};this._crawlNetwork(e)}},{key:"_crawlNetwork",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){},i=arguments[1],o={},n=0,s=function i(n,s){if(void 0===o[n.id]){void 0===t.hierarchicalTrees[n.id]&&(t.hierarchicalTrees[n.id]=s,t.treeIndex=Math.max(s,t.treeIndex)),o[n.id]=!0;for(var r=void 0,a=0;a3&&void 0!==arguments[3]&&arguments[3];o!==!0&&(void 0===this.distributionOrdering[i]&&(this.distributionOrdering[i]=[],this.distributionOrderingPresence[i]={}),void 0===this.distributionOrderingPresence[i][t.id]&&(this.distributionOrdering[i].push(t),this.distributionIndex[t.id]=this.distributionOrdering[i].length-1),this.distributionOrderingPresence[i][t.id]=!0),"UD"===this.options.hierarchical.direction||"DU"===this.options.hierarchical.direction?t.x=e:t.y=e}},{key:"_getPositionForHierarchy",value:function(t){return"UD"===this.options.hierarchical.direction||"DU"===this.options.hierarchical.direction?t.x:t.y}},{key:"_sortNodeArray",value:function(t){t.length>1&&("UD"===this.options.hierarchical.direction||"DU"===this.options.hierarchical.direction?t.sort(function(t,e){return t.x-e.x}):t.sort(function(t,e){return t.y-e.y}))}}]),t}();e.default=g},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(58),s=o(n),r=i(82),a=o(r),h=i(62),d=o(h),l=i(115),u=o(l),c=i(116),p=o(c),f=i(1),m=i(108),v=i(121),g=function(){ +function t(e,i,o){var n=this;(0,u.default)(this,t),this.body=e,this.canvas=i,this.selectionHandler=o,this.editMode=!1,this.manipulationDiv=void 0,this.editModeDiv=void 0,this.closeDiv=void 0,this.manipulationHammers=[],this.temporaryUIFunctions={},this.temporaryEventFunctions=[],this.touchTime=0,this.temporaryIds={nodes:[],edges:[]},this.guiEnabled=!1,this.inMode=!1,this.selectedControlNode=void 0,this.options={},this.defaultOptions={enabled:!1,initiallyActive:!1,addNode:!0,addEdge:!0,editNode:void 0,editEdge:!0,deleteNode:!0,deleteEdge:!0,controlNodeStyle:{shape:"dot",size:6,color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968",border:"#3c3c3c"}},borderWidth:2,borderWidthSelected:2}},f.extend(this.options,this.defaultOptions),this.body.emitter.on("destroy",function(){n._clean()}),this.body.emitter.on("_dataChanged",this._restore.bind(this)),this.body.emitter.on("_resetData",this._restore.bind(this))}return(0,p.default)(t,[{key:"_restore",value:function(){this.inMode!==!1&&(this.options.initiallyActive===!0?this.enableEditMode():this.disableEditMode())}},{key:"setOptions",value:function(t,e,i){void 0!==e&&(void 0!==e.locale?this.options.locale=e.locale:this.options.locale=i.locale,void 0!==e.locales?this.options.locales=e.locales:this.options.locales=i.locales),void 0!==t&&("boolean"==typeof t?this.options.enabled=t:(this.options.enabled=!0,f.deepExtend(this.options,t)),this.options.initiallyActive===!0&&(this.editMode=!0),this._setup())}},{key:"toggleEditMode",value:function(){this.editMode===!0?this.disableEditMode():this.enableEditMode()}},{key:"enableEditMode",value:function(){this.editMode=!0,this._clean(),this.guiEnabled===!0&&(this.manipulationDiv.style.display="block",this.closeDiv.style.display="block",this.editModeDiv.style.display="none",this.showManipulatorToolbar())}},{key:"disableEditMode",value:function(){this.editMode=!1,this._clean(),this.guiEnabled===!0&&(this.manipulationDiv.style.display="none",this.closeDiv.style.display="none",this.editModeDiv.style.display="block",this._createEditButton())}},{key:"showManipulatorToolbar",value:function(){if(this._clean(),this.manipulationDOM={},this.guiEnabled===!0){this.editMode=!0,this.manipulationDiv.style.display="block",this.closeDiv.style.display="block";var t=this.selectionHandler._getSelectedNodeCount(),e=this.selectionHandler._getSelectedEdgeCount(),i=t+e,o=this.options.locales[this.options.locale],n=!1;this.options.addNode!==!1&&(this._createAddNodeButton(o),n=!0),this.options.addEdge!==!1&&(n===!0?this._createSeperator(1):n=!0,this._createAddEdgeButton(o)),1===t&&"function"==typeof this.options.editNode?(n===!0?this._createSeperator(2):n=!0,this._createEditNodeButton(o)):1===e&&0===t&&this.options.editEdge!==!1&&(n===!0?this._createSeperator(3):n=!0,this._createEditEdgeButton(o)),0!==i&&(t>0&&this.options.deleteNode!==!1?(n===!0&&this._createSeperator(4),this._createDeleteButton(o)):0===t&&this.options.deleteEdge!==!1&&(n===!0&&this._createSeperator(4),this._createDeleteButton(o))),this._bindHammerToDiv(this.closeDiv,this.toggleEditMode.bind(this)),this._temporaryBindEvent("select",this.showManipulatorToolbar.bind(this))}this.body.emitter.emit("_redraw")}},{key:"addNodeMode",value:function(){if(this.editMode!==!0&&this.enableEditMode(),this._clean(),this.inMode="addNode",this.guiEnabled===!0){var t=this.options.locales[this.options.locale];this.manipulationDOM={},this._createBackButton(t),this._createSeperator(),this._createDescription(t.addDescription||this.options.locales.en.addDescription),this._bindHammerToDiv(this.closeDiv,this.toggleEditMode.bind(this))}this._temporaryBindEvent("click",this._performAddNode.bind(this))}},{key:"editNode",value:function(){var t=this;this.editMode!==!0&&this.enableEditMode(),this._clean();var e=this.selectionHandler._getSelectedNode();if(void 0!==e){if(this.inMode="editNode","function"!=typeof this.options.editNode)throw new Error("No function has been configured to handle the editing of nodes.");if(e.isCluster!==!0){var i=f.deepExtend({},e.options,!1);if(i.x=e.x,i.y=e.y,2!==this.options.editNode.length)throw new Error("The function for edit does not support two arguments (data, callback)");this.options.editNode(i,function(e){null!==e&&void 0!==e&&"editNode"===t.inMode&&t.body.data.nodes.getDataSet().update(e),t.showManipulatorToolbar()})}else alert(this.options.locales[this.options.locale].editClusterError||this.options.locales.en.editClusterError)}else this.showManipulatorToolbar()}},{key:"addEdgeMode",value:function(){if(this.editMode!==!0&&this.enableEditMode(),this._clean(),this.inMode="addEdge",this.guiEnabled===!0){var t=this.options.locales[this.options.locale];this.manipulationDOM={},this._createBackButton(t),this._createSeperator(),this._createDescription(t.edgeDescription||this.options.locales.en.edgeDescription),this._bindHammerToDiv(this.closeDiv,this.toggleEditMode.bind(this))}this._temporaryBindUI("onTouch",this._handleConnect.bind(this)),this._temporaryBindUI("onDragEnd",this._finishConnect.bind(this)),this._temporaryBindUI("onDrag",this._dragControlNode.bind(this)),this._temporaryBindUI("onRelease",this._finishConnect.bind(this)),this._temporaryBindUI("onDragStart",function(){}),this._temporaryBindUI("onHold",function(){})}},{key:"editEdgeMode",value:function(){var t=this;if(this.editMode!==!0&&this.enableEditMode(),this._clean(),this.inMode="editEdge","object"===(0,d.default)(this.options.editEdge)&&"function"==typeof this.options.editEdge.editWithoutDrag&&(this.edgeBeingEditedId=this.selectionHandler.getSelectedEdges()[0],void 0!==this.edgeBeingEditedId)){var e=this.body.edges[this.edgeBeingEditedId];return void this._performEditEdge(e.from,e.to)}if(this.guiEnabled===!0){var i=this.options.locales[this.options.locale];this.manipulationDOM={},this._createBackButton(i),this._createSeperator(),this._createDescription(i.editEdgeDescription||this.options.locales.en.editEdgeDescription),this._bindHammerToDiv(this.closeDiv,this.toggleEditMode.bind(this))}this.edgeBeingEditedId=this.selectionHandler.getSelectedEdges()[0],void 0!==this.edgeBeingEditedId?!function(){var e=t.body.edges[t.edgeBeingEditedId],i=t._getNewTargetNode(e.from.x,e.from.y),o=t._getNewTargetNode(e.to.x,e.to.y);t.temporaryIds.nodes.push(i.id),t.temporaryIds.nodes.push(o.id),t.body.nodes[i.id]=i,t.body.nodeIndices.push(i.id),t.body.nodes[o.id]=o,t.body.nodeIndices.push(o.id),t._temporaryBindUI("onTouch",t._controlNodeTouch.bind(t)),t._temporaryBindUI("onTap",function(){}),t._temporaryBindUI("onHold",function(){}),t._temporaryBindUI("onDragStart",t._controlNodeDragStart.bind(t)),t._temporaryBindUI("onDrag",t._controlNodeDrag.bind(t)),t._temporaryBindUI("onDragEnd",t._controlNodeDragEnd.bind(t)),t._temporaryBindUI("onMouseMove",function(){}),t._temporaryBindEvent("beforeDrawing",function(t){var n=e.edgeType.findBorderPositions(t);i.selected===!1&&(i.x=n.from.x,i.y=n.from.y),o.selected===!1&&(o.x=n.to.x,o.y=n.to.y)}),t.body.emitter.emit("_redraw")}():this.showManipulatorToolbar()}},{key:"deleteSelected",value:function(){var t=this;this.editMode!==!0&&this.enableEditMode(),this._clean(),this.inMode="delete";var e=this.selectionHandler.getSelectedNodes(),i=this.selectionHandler.getSelectedEdges(),o=void 0;if(e.length>0){for(var n=0;n0&&"function"==typeof this.options.deleteEdge&&(o=this.options.deleteEdge);if("function"==typeof o){var s={nodes:e,edges:i};if(2!==o.length)throw new Error("The function for delete does not support two arguments (data, callback)");o(s,function(e){null!==e&&void 0!==e&&"delete"===t.inMode?(t.body.data.edges.getDataSet().remove(e.edges),t.body.data.nodes.getDataSet().remove(e.nodes),t.body.emitter.emit("startSimulation"),t.showManipulatorToolbar()):(t.body.emitter.emit("startSimulation"),t.showManipulatorToolbar())})}else this.body.data.edges.getDataSet().remove(i),this.body.data.nodes.getDataSet().remove(e),this.body.emitter.emit("startSimulation"),this.showManipulatorToolbar()}},{key:"_setup",value:function(){this.options.enabled===!0?(this.guiEnabled=!0,this._createWrappers(),this.editMode===!1?this._createEditButton():this.showManipulatorToolbar()):(this._removeManipulationDOM(),this.guiEnabled=!1)}},{key:"_createWrappers",value:function(){void 0===this.manipulationDiv&&(this.manipulationDiv=document.createElement("div"),this.manipulationDiv.className="vis-manipulation",this.editMode===!0?this.manipulationDiv.style.display="block":this.manipulationDiv.style.display="none",this.canvas.frame.appendChild(this.manipulationDiv)),void 0===this.editModeDiv&&(this.editModeDiv=document.createElement("div"),this.editModeDiv.className="vis-edit-mode",this.editMode===!0?this.editModeDiv.style.display="none":this.editModeDiv.style.display="block",this.canvas.frame.appendChild(this.editModeDiv)),void 0===this.closeDiv&&(this.closeDiv=document.createElement("div"),this.closeDiv.className="vis-close",this.closeDiv.style.display=this.manipulationDiv.style.display,this.canvas.frame.appendChild(this.closeDiv))}},{key:"_getNewTargetNode",value:function(t,e){var i=f.deepExtend({},this.options.controlNodeStyle);i.id="targetNode"+f.randomUUID(),i.hidden=!1,i.physics=!1,i.x=t,i.y=e;var o=this.body.functions.createNode(i);return o.shape.boundingBox={left:t,right:t,top:e,bottom:e},o}},{key:"_createEditButton",value:function(){this._clean(),this.manipulationDOM={},f.recursiveDOMDelete(this.editModeDiv);var t=this.options.locales[this.options.locale],e=this._createButton("editMode","vis-button vis-edit vis-edit-mode",t.edit||this.options.locales.en.edit);this.editModeDiv.appendChild(e),this._bindHammerToDiv(e,this.toggleEditMode.bind(this))}},{key:"_clean",value:function(){this.inMode=!1,this.guiEnabled===!0&&(f.recursiveDOMDelete(this.editModeDiv),f.recursiveDOMDelete(this.manipulationDiv),this._cleanManipulatorHammers()),this._cleanupTemporaryNodesAndEdges(),this._unbindTemporaryUIs(),this._unbindTemporaryEvents(),this.body.emitter.emit("restorePhysics")}},{key:"_cleanManipulatorHammers",value:function(){if(0!=this.manipulationHammers.length){for(var t=0;t0&&void 0!==arguments[0]?arguments[0]:1;this.manipulationDOM["seperatorLineDiv"+t]=document.createElement("div"),this.manipulationDOM["seperatorLineDiv"+t].className="vis-separator-line",this.manipulationDiv.appendChild(this.manipulationDOM["seperatorLineDiv"+t])}},{key:"_createAddNodeButton",value:function(t){var e=this._createButton("addNode","vis-button vis-add",t.addNode||this.options.locales.en.addNode);this.manipulationDiv.appendChild(e),this._bindHammerToDiv(e,this.addNodeMode.bind(this))}},{key:"_createAddEdgeButton",value:function(t){var e=this._createButton("addEdge","vis-button vis-connect",t.addEdge||this.options.locales.en.addEdge);this.manipulationDiv.appendChild(e),this._bindHammerToDiv(e,this.addEdgeMode.bind(this))}},{key:"_createEditNodeButton",value:function(t){var e=this._createButton("editNode","vis-button vis-edit",t.editNode||this.options.locales.en.editNode);this.manipulationDiv.appendChild(e),this._bindHammerToDiv(e,this.editNode.bind(this))}},{key:"_createEditEdgeButton",value:function(t){var e=this._createButton("editEdge","vis-button vis-edit",t.editEdge||this.options.locales.en.editEdge);this.manipulationDiv.appendChild(e),this._bindHammerToDiv(e,this.editEdgeMode.bind(this))}},{key:"_createDeleteButton",value:function(t){if(this.options.rtl)var e="vis-button vis-delete-rtl";else var e="vis-button vis-delete";var i=this._createButton("delete",e,t.del||this.options.locales.en.del);this.manipulationDiv.appendChild(i),this._bindHammerToDiv(i,this.deleteSelected.bind(this))}},{key:"_createBackButton",value:function(t){var e=this._createButton("back","vis-button vis-back",t.back||this.options.locales.en.back);this.manipulationDiv.appendChild(e),this._bindHammerToDiv(e,this.showManipulatorToolbar.bind(this))}},{key:"_createButton",value:function(t,e,i){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"vis-label";return this.manipulationDOM[t+"Div"]=document.createElement("div"),this.manipulationDOM[t+"Div"].className=e,this.manipulationDOM[t+"Label"]=document.createElement("div"),this.manipulationDOM[t+"Label"].className=o,this.manipulationDOM[t+"Label"].innerHTML=i,this.manipulationDOM[t+"Div"].appendChild(this.manipulationDOM[t+"Label"]),this.manipulationDOM[t+"Div"]}},{key:"_createDescription",value:function(t){this.manipulationDiv.appendChild(this._createButton("description","vis-button vis-none",t))}},{key:"_temporaryBindEvent",value:function(t,e){this.temporaryEventFunctions.push({event:t,boundFunction:e}),this.body.emitter.on(t,e)}},{key:"_temporaryBindUI",value:function(t,e){if(void 0===this.body.eventListeners[t])throw new Error("This UI function does not exist. Typo? You tried: "+t+" possible are: "+(0,a.default)((0,s.default)(this.body.eventListeners)));this.temporaryUIFunctions[t]=this.body.eventListeners[t],this.body.eventListeners[t]=e}},{key:"_unbindTemporaryUIs",value:function(){for(var t in this.temporaryUIFunctions)this.temporaryUIFunctions.hasOwnProperty(t)&&(this.body.eventListeners[t]=this.temporaryUIFunctions[t],delete this.temporaryUIFunctions[t]);this.temporaryUIFunctions={}}},{key:"_unbindTemporaryEvents",value:function(){for(var t=0;t=0;r--)if(n[r]!==this.selectedControlNode.id){s=this.body.nodes[n[r]];break}if(void 0!==s&&void 0!==this.selectedControlNode)if(s.isCluster===!0)alert(this.options.locales[this.options.locale].createEdgeError||this.options.locales.en.createEdgeError);else{var a=this.body.nodes[this.temporaryIds.nodes[0]];this.selectedControlNode.id===a.id?this._performEditEdge(s.id,o.to.id):this._performEditEdge(o.from.id,s.id)}else o.updateEdgeType(),this.body.emitter.emit("restorePhysics");this.body.emitter.emit("_redraw")}}},{key:"_handleConnect",value:function(t){if((new Date).valueOf()-this.touchTime>100){this.lastTouch=this.body.functions.getPointer(t.center),this.lastTouch.translation=f.extend({},this.body.view.translation);var e=this.lastTouch,i=this.selectionHandler.getNodeAt(e);if(void 0!==i)if(i.isCluster===!0)alert(this.options.locales[this.options.locale].createEdgeError||this.options.locales.en.createEdgeError);else{var o=this._getNewTargetNode(i.x,i.y);this.body.nodes[o.id]=o,this.body.nodeIndices.push(o.id);var n=this.body.functions.createEdge({id:"connectionEdge"+f.randomUUID(),from:i.id,to:o.id,physics:!1,smooth:{enabled:!0,type:"continuous",roundness:.5}});this.body.edges[n.id]=n,this.body.edgeIndices.push(n.id),this.temporaryIds.nodes.push(o.id),this.temporaryIds.edges.push(n.id)}this.touchTime=(new Date).valueOf()}}},{key:"_dragControlNode",value:function(t){var e=this.body.functions.getPointer(t.center);if(void 0!==this.temporaryIds.nodes[0]){var i=this.body.nodes[this.temporaryIds.nodes[0]];i.x=this.canvas._XconvertDOMtoCanvas(e.x),i.y=this.canvas._YconvertDOMtoCanvas(e.y),this.body.emitter.emit("_redraw")}else{var o=e.x-this.lastTouch.x,n=e.y-this.lastTouch.y;this.body.view.translation={x:this.lastTouch.translation.x+o,y:this.lastTouch.translation.y+n}}}},{key:"_finishConnect",value:function(t){var e=this.body.functions.getPointer(t.center),i=this.selectionHandler._pointerToPositionObject(e),o=void 0;void 0!==this.temporaryIds.edges[0]&&(o=this.body.edges[this.temporaryIds.edges[0]].fromId);for(var n=this.selectionHandler._getAllNodesOverlappingWith(i),s=void 0,r=n.length-1;r>=0;r--)if(this.temporaryIds.nodes.indexOf(n[r])===-1){s=this.body.nodes[n[r]];break}this._cleanupTemporaryNodesAndEdges(),void 0!==s&&(s.isCluster===!0?alert(this.options.locales[this.options.locale].createEdgeError||this.options.locales.en.createEdgeError):void 0!==this.body.nodes[o]&&void 0!==this.body.nodes[s.id]&&this._performAddEdge(o,s.id)),this.body.emitter.emit("_redraw")}},{key:"_performAddNode",value:function(t){var e=this,i={id:f.randomUUID(),x:t.pointer.canvas.x,y:t.pointer.canvas.y,label:"new"};if("function"==typeof this.options.addNode){if(2!==this.options.addNode.length)throw new Error("The function for add does not support two arguments (data,callback)");this.options.addNode(i,function(t){null!==t&&void 0!==t&&"addNode"===e.inMode&&(e.body.data.nodes.getDataSet().add(t),e.showManipulatorToolbar())})}else this.body.data.nodes.getDataSet().add(i),this.showManipulatorToolbar()}},{key:"_performAddEdge",value:function(t,e){var i=this,o={from:t,to:e};if("function"==typeof this.options.addEdge){if(2!==this.options.addEdge.length)throw new Error("The function for connect does not support two arguments (data,callback)");this.options.addEdge(o,function(t){null!==t&&void 0!==t&&"addEdge"===i.inMode&&(i.body.data.edges.getDataSet().add(t),i.selectionHandler.unselectAll(),i.showManipulatorToolbar())})}else this.body.data.edges.getDataSet().add(o),this.selectionHandler.unselectAll(),this.showManipulatorToolbar()}},{key:"_performEditEdge",value:function(t,e){var i=this,o={id:this.edgeBeingEditedId,from:t,to:e,label:this.body.data.edges._data[this.edgeBeingEditedId].label},n=this.options.editEdge;if("object"===("undefined"==typeof n?"undefined":(0,d.default)(n))&&(n=n.editWithoutDrag),"function"==typeof n){if(2!==n.length)throw new Error("The function for edit does not support two arguments (data, callback)");n(o,function(t){null===t||void 0===t||"editEdge"!==i.inMode?(i.body.edges[o.id].updateEdgeType(),i.body.emitter.emit("_redraw"),i.showManipulatorToolbar()):(i.body.data.edges.getDataSet().update(t),i.selectionHandler.unselectAll(),i.showManipulatorToolbar())})}else this.body.data.edges.getDataSet().update(o),this.selectionHandler.unselectAll(),this.showManipulatorToolbar()}}]),t}();e.default=g},function(t,e){Object.defineProperty(e,"__esModule",{value:!0});var i="string",o="boolean",n="number",s="array",r="object",a="dom",h="any",d={configure:{enabled:{boolean:o},filter:{boolean:o,string:i,array:s,function:"function"},container:{dom:a},showButton:{boolean:o},__type__:{object:r,boolean:o,string:i,array:s,function:"function"}},edges:{arrows:{to:{enabled:{boolean:o},scaleFactor:{number:n},type:{string:["arrow","circle"]},__type__:{object:r,boolean:o}},middle:{enabled:{boolean:o},scaleFactor:{number:n},type:{string:["arrow","circle"]},__type__:{object:r,boolean:o}},from:{enabled:{boolean:o},scaleFactor:{number:n},type:{string:["arrow","circle"]},__type__:{object:r,boolean:o}},__type__:{string:["from","to","middle"],object:r}},arrowStrikethrough:{boolean:o},chosen:{label:{boolean:o,function:"function"},edge:{boolean:o,function:"function"},__type__:{object:r,boolean:o}},color:{color:{string:i},highlight:{string:i},hover:{string:i},inherit:{string:["from","to","both"],boolean:o},opacity:{number:n},__type__:{object:r,string:i}},dashes:{boolean:o,array:s},font:{color:{string:i},size:{number:n},face:{string:i},background:{string:i},strokeWidth:{number:n},strokeColor:{string:i},align:{string:["horizontal","top","middle","bottom"]},vadjust:{number:n},multi:{boolean:o,string:i},bold:{color:{string:i},size:{number:n},face:{string:i},mod:{string:i},vadjust:{number:n},__type__:{object:r,string:i}},boldital:{color:{string:i},size:{number:n},face:{string:i},mod:{string:i},vadjust:{number:n},__type__:{object:r,string:i}},ital:{color:{string:i},size:{number:n},face:{string:i},mod:{string:i},vadjust:{number:n},__type__:{object:r,string:i}},mono:{color:{string:i},size:{number:n},face:{string:i},mod:{string:i},vadjust:{number:n},__type__:{object:r,string:i}},__type__:{object:r,string:i}},hidden:{boolean:o},hoverWidth:{function:"function",number:n},label:{string:i,undefined:"undefined"},labelHighlightBold:{boolean:o},length:{number:n,undefined:"undefined"},physics:{boolean:o},scaling:{min:{number:n},max:{number:n},label:{enabled:{boolean:o},min:{number:n},max:{number:n},maxVisible:{number:n},drawThreshold:{number:n},__type__:{object:r,boolean:o}},customScalingFunction:{function:"function"},__type__:{object:r}},selectionWidth:{function:"function",number:n},selfReferenceSize:{number:n},shadow:{enabled:{boolean:o},color:{string:i},size:{number:n},x:{number:n},y:{number:n},__type__:{object:r,boolean:o}},smooth:{enabled:{boolean:o},type:{string:["dynamic","continuous","discrete","diagonalCross","straightCross","horizontal","vertical","curvedCW","curvedCCW","cubicBezier"]},roundness:{number:n},forceDirection:{string:["horizontal","vertical","none"],boolean:o},__type__:{object:r,boolean:o}},title:{string:i,undefined:"undefined"},width:{number:n},widthConstraint:{maximum:{number:n},__type__:{object:r,boolean:o,number:n}},value:{number:n,undefined:"undefined"},__type__:{object:r}},groups:{useDefaultGroups:{boolean:o},__any__:"get from nodes, will be overwritten below",__type__:{object:r}},interaction:{dragNodes:{boolean:o},dragView:{boolean:o},hideEdgesOnDrag:{boolean:o},hideNodesOnDrag:{boolean:o},hover:{boolean:o},keyboard:{enabled:{boolean:o},speed:{x:{number:n},y:{number:n},zoom:{number:n},__type__:{object:r}},bindToWindow:{boolean:o},__type__:{object:r,boolean:o}},multiselect:{boolean:o},navigationButtons:{boolean:o},selectable:{boolean:o},selectConnectedEdges:{boolean:o},hoverConnectedEdges:{boolean:o},tooltipDelay:{number:n},zoomView:{boolean:o},__type__:{object:r}},layout:{randomSeed:{undefined:"undefined",number:n},improvedLayout:{boolean:o},hierarchical:{enabled:{boolean:o},levelSeparation:{number:n},nodeSpacing:{number:n},treeSpacing:{number:n},blockShifting:{boolean:o},edgeMinimization:{boolean:o},parentCentralization:{boolean:o},direction:{string:["UD","DU","LR","RL"]},sortMethod:{string:["hubsize","directed"]},__type__:{object:r,boolean:o}},__type__:{object:r}},manipulation:{enabled:{boolean:o},initiallyActive:{boolean:o},addNode:{boolean:o,function:"function"},addEdge:{boolean:o,function:"function"},editNode:{function:"function"},editEdge:{editWithoutDrag:{function:"function"},__type__:{object:r,boolean:o,function:"function"}},deleteNode:{boolean:o,function:"function"},deleteEdge:{boolean:o,function:"function"},controlNodeStyle:"get from nodes, will be overwritten below",__type__:{object:r,boolean:o}},nodes:{borderWidth:{number:n},borderWidthSelected:{number:n,undefined:"undefined"},brokenImage:{string:i,undefined:"undefined"},chosen:{label:{boolean:o,function:"function"},node:{boolean:o,function:"function"},__type__:{object:r,boolean:o}},color:{border:{string:i},background:{string:i},highlight:{border:{string:i},background:{string:i},__type__:{object:r,string:i}},hover:{border:{string:i},background:{string:i},__type__:{object:r,string:i}},__type__:{object:r,string:i}},fixed:{x:{boolean:o},y:{boolean:o},__type__:{object:r,boolean:o}},font:{align:{string:i},color:{string:i},size:{number:n},face:{string:i},background:{string:i},strokeWidth:{number:n},strokeColor:{string:i},vadjust:{number:n},multi:{boolean:o,string:i},bold:{color:{string:i},size:{number:n},face:{string:i},mod:{string:i},vadjust:{number:n},__type__:{object:r,string:i}},boldital:{color:{string:i},size:{number:n},face:{string:i},mod:{string:i},vadjust:{number:n},__type__:{object:r,string:i}},ital:{color:{string:i},size:{number:n},face:{string:i},mod:{string:i},vadjust:{number:n},__type__:{object:r,string:i}},mono:{color:{string:i},size:{number:n},face:{string:i},mod:{string:i},vadjust:{number:n},__type__:{object:r,string:i}},__type__:{object:r,string:i}},group:{string:i,number:n,undefined:"undefined"},heightConstraint:{minimum:{number:n},valign:{string:i},__type__:{object:r,boolean:o,number:n}},hidden:{boolean:o},icon:{face:{string:i},code:{string:i},size:{number:n},color:{string:i},__type__:{object:r}},id:{string:i,number:n},image:{string:i,undefined:"undefined"},label:{string:i,undefined:"undefined"},labelHighlightBold:{boolean:o},level:{number:n,undefined:"undefined"},margin:{top:{number:n},right:{number:n},bottom:{number:n},left:{number:n},__type__:{object:r,number:n}},mass:{number:n},physics:{boolean:o},scaling:{min:{number:n},max:{number:n},label:{enabled:{boolean:o},min:{number:n},max:{number:n},maxVisible:{number:n},drawThreshold:{number:n},__type__:{object:r,boolean:o}},customScalingFunction:{function:"function"},__type__:{object:r}},shadow:{enabled:{boolean:o},color:{string:i},size:{number:n},x:{number:n},y:{number:n},__type__:{object:r,boolean:o}},shape:{string:["ellipse","circle","database","box","text","image","circularImage","diamond","dot","star","triangle","triangleDown","square","icon"]},shapeProperties:{borderDashes:{boolean:o,array:s},borderRadius:{number:n},interpolation:{boolean:o},useImageSize:{boolean:o},useBorderWithImage:{boolean:o},__type__:{object:r}},size:{number:n},title:{string:i,undefined:"undefined"},value:{number:n,undefined:"undefined"},widthConstraint:{minimum:{number:n},maximum:{number:n},__type__:{object:r,boolean:o,number:n}},x:{number:n},y:{number:n},__type__:{object:r}},physics:{enabled:{boolean:o},barnesHut:{gravitationalConstant:{number:n},centralGravity:{number:n},springLength:{number:n},springConstant:{number:n},damping:{number:n},avoidOverlap:{number:n},__type__:{object:r}},forceAtlas2Based:{gravitationalConstant:{number:n},centralGravity:{number:n},springLength:{number:n},springConstant:{number:n},damping:{number:n},avoidOverlap:{number:n},__type__:{object:r}},repulsion:{centralGravity:{number:n},springLength:{number:n},springConstant:{number:n},nodeDistance:{number:n},damping:{number:n},__type__:{object:r}},hierarchicalRepulsion:{centralGravity:{number:n},springLength:{number:n},springConstant:{number:n},nodeDistance:{number:n},damping:{number:n},__type__:{object:r}},maxVelocity:{number:n},minVelocity:{number:n},solver:{string:["barnesHut","repulsion","hierarchicalRepulsion","forceAtlas2Based"]},stabilization:{enabled:{boolean:o},iterations:{number:n},updateInterval:{number:n},onlyDynamicEdges:{boolean:o},fit:{boolean:o},__type__:{object:r,boolean:o}},timestep:{number:n},adaptiveTimestep:{boolean:o},__type__:{object:r,boolean:o}},autoResize:{boolean:o},clickToUse:{boolean:o},locale:{string:i},locales:{__any__:{any:h},__type__:{object:r}},height:{string:i},width:{string:i},__type__:{object:r}};d.groups.__any__=d.nodes,d.manipulation.controlNodeStyle=d.nodes;var l={nodes:{borderWidth:[1,0,10,1],borderWidthSelected:[2,0,10,1],color:{border:["color","#2B7CE9"],background:["color","#97C2FC"],highlight:{border:["color","#2B7CE9"],background:["color","#D2E5FF"]},hover:{border:["color","#2B7CE9"],background:["color","#D2E5FF"]}},fixed:{x:!1,y:!1},font:{color:["color","#343434"],size:[14,0,100,1],face:["arial","verdana","tahoma"],background:["color","none"],strokeWidth:[0,0,50,1],strokeColor:["color","#ffffff"]},hidden:!1,labelHighlightBold:!0,physics:!0,scaling:{min:[10,0,200,1],max:[30,0,200,1],label:{enabled:!1,min:[14,0,200,1],max:[30,0,200,1],maxVisible:[30,0,200,1],drawThreshold:[5,0,20,1]}},shadow:{enabled:!1,color:"rgba(0,0,0,0.5)",size:[10,0,20,1],x:[5,-30,30,1],y:[5,-30,30,1]},shape:["ellipse","box","circle","database","diamond","dot","square","star","text","triangle","triangleDown"],shapeProperties:{borderDashes:!1,borderRadius:[6,0,20,1],interpolation:!0,useImageSize:!1},size:[25,0,200,1]},edges:{arrows:{to:{enabled:!1,scaleFactor:[1,0,3,.05],type:"arrow"},middle:{enabled:!1,scaleFactor:[1,0,3,.05],type:"arrow"},from:{enabled:!1,scaleFactor:[1,0,3,.05],type:"arrow"}},arrowStrikethrough:!0,color:{color:["color","#848484"],highlight:["color","#848484"],hover:["color","#848484"],inherit:["from","to","both",!0,!1],opacity:[1,0,1,.05]},dashes:!1,font:{color:["color","#343434"],size:[14,0,100,1],face:["arial","verdana","tahoma"],background:["color","none"],strokeWidth:[2,0,50,1],strokeColor:["color","#ffffff"],align:["horizontal","top","middle","bottom"]},hidden:!1,hoverWidth:[1.5,0,5,.1],labelHighlightBold:!0,physics:!0,scaling:{min:[1,0,100,1],max:[15,0,100,1],label:{enabled:!0,min:[14,0,200,1],max:[30,0,200,1],maxVisible:[30,0,200,1],drawThreshold:[5,0,20,1]}},selectionWidth:[1.5,0,5,.1],selfReferenceSize:[20,0,200,1],shadow:{enabled:!1,color:"rgba(0,0,0,0.5)",size:[10,0,20,1],x:[5,-30,30,1],y:[5,-30,30,1]},smooth:{enabled:!0,type:["dynamic","continuous","discrete","diagonalCross","straightCross","horizontal","vertical","curvedCW","curvedCCW","cubicBezier"],forceDirection:["horizontal","vertical","none"],roundness:[.5,0,1,.05]},width:[1,0,30,1]},layout:{hierarchical:{enabled:!1,levelSeparation:[150,20,500,5],nodeSpacing:[100,20,500,5],treeSpacing:[200,20,500,5],blockShifting:!0,edgeMinimization:!0,parentCentralization:!0,direction:["UD","DU","LR","RL"],sortMethod:["hubsize","directed"]}},interaction:{dragNodes:!0,dragView:!0,hideEdgesOnDrag:!1,hideNodesOnDrag:!1,hover:!1,keyboard:{enabled:!1,speed:{x:[10,0,40,1],y:[10,0,40,1],zoom:[.02,0,.1,.005]},bindToWindow:!0},multiselect:!1,navigationButtons:!1,selectable:!0,selectConnectedEdges:!0,hoverConnectedEdges:!0,tooltipDelay:[300,0,1e3,25],zoomView:!0 +},manipulation:{enabled:!1,initiallyActive:!1},physics:{enabled:!0,barnesHut:{gravitationalConstant:[-2e3,-3e4,0,50],centralGravity:[.3,0,10,.05],springLength:[95,0,500,5],springConstant:[.04,0,1.2,.005],damping:[.09,0,1,.01],avoidOverlap:[0,0,1,.01]},forceAtlas2Based:{gravitationalConstant:[-50,-500,0,1],centralGravity:[.01,0,1,.005],springLength:[95,0,500,5],springConstant:[.08,0,1.2,.005],damping:[.4,0,1,.01],avoidOverlap:[0,0,1,.01]},repulsion:{centralGravity:[.2,0,10,.05],springLength:[200,0,500,5],springConstant:[.05,0,1.2,.005],nodeDistance:[100,0,500,5],damping:[.09,0,1,.01]},hierarchicalRepulsion:{centralGravity:[.2,0,10,.05],springLength:[100,0,500,5],springConstant:[.01,0,1.2,.005],nodeDistance:[120,0,500,5],damping:[.09,0,1,.01]},maxVelocity:[50,0,150,1],minVelocity:[.1,.01,.5,.01],solver:["barnesHut","forceAtlas2Based","repulsion","hierarchicalRepulsion"],timestep:[.5,.01,1,.01]}};e.allOptions=d,e.configureOptions=l},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var n=i(161),s=o(n),r=i(115),a=o(r),h=i(116),d=o(h),l=i(222),u=o(l),c=function(){function t(e,i,o){(0,a.default)(this,t),this.body=e,this.springLength=i,this.springConstant=o,this.distanceSolver=new u.default}return(0,d.default)(t,[{key:"setOptions",value:function(t){t&&(t.springLength&&(this.springLength=t.springLength),t.springConstant&&(this.springConstant=t.springConstant))}},{key:"solve",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=this.distanceSolver.getDistances(this.body,t,e);this._createL_matrix(o),this._createK_matrix(o);for(var n=.01,r=1,a=0,h=Math.max(1e3,Math.min(10*this.body.nodeIndices.length,6e3)),d=5,l=1e9,u=0,c=0,p=0,f=0,m=0;l>n&&ar&&m=.1;)p=n[l++%s],p>d&&(p=d),c=Math.sqrt(p*p/(1+h*h)),c=r<0?-c:c,t+=c,e+=h*c,u===!0?this.lineTo(t,e):this.moveTo(t,e),d-=p,u=!u})},function(t,e,i){function o(t){return t&&t.__esModule?t:{default:t}}function n(t){return R=t,m()}function s(){L=0,A=R.charAt(0)}function r(){L++,A=R.charAt(L)}function a(){return R.charAt(L+1)}function h(t){return H.test(t)}function d(t,e){if(t||(t={}),e)for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i]);return t}function l(t,e,i){for(var o=e.split("."),n=t;o.length;){var s=o.shift();o.length?(n[s]||(n[s]={}),n=n[s]):n[s]=i}}function u(t,e){for(var i,o,n=null,s=[t],r=t;r.parent;)s.push(r.parent),r=r.parent;if(r.nodes)for(i=0,o=r.nodes.length;i=0;i--){var a=s[i];a.nodes||(a.nodes=[]),a.nodes.indexOf(n)===-1&&a.nodes.push(n)}e.attr&&(n.attr=d(n.attr,e.attr))}function c(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=d({},t.edge);e.attr=d(i,e.attr)}}function p(t,e,i,o,n){var s={from:e,to:i,type:o};return t.edge&&(s.attr=d({},t.edge)),s.attr=d(s.attr||{},n),s}function f(){for(F=N.NULL,B="";" "===A||"\t"===A||"\n"===A||"\r"===A;)r();do{var t=!1;if("#"===A){for(var e=L-1;" "===R.charAt(e)||"\t"===R.charAt(e);)e--;if("\n"===R.charAt(e)||""===R.charAt(e)){for(;""!=A&&"\n"!=A;)r();t=!0}}if("/"===A&&"/"===a()){for(;""!=A&&"\n"!=A;)r();t=!0}if("/"===A&&"*"===a()){for(;""!=A;){if("*"===A&&"/"===a()){r(),r();break}r()}t=!0}for(;" "===A||"\t"===A||"\n"===A||"\r"===A;)r()}while(t);if(""===A)return void(F=N.DELIMITER);var i=A+a();if(z[i])return F=N.DELIMITER,B=i,r(),void r();if(z[A])return F=N.DELIMITER,B=A,void r();if(h(A)||"-"===A){for(B+=A,r();h(A);)B+=A,r();return"false"===B?B=!1:"true"===B?B=!0:isNaN(Number(B))||(B=Number(B)),void(F=N.IDENTIFIER)}if('"'===A){for(r();""!=A&&('"'!=A||'"'===A&&'"'===a());)B+=A,'"'===A&&r(),r();if('"'!=A)throw k('End of string " expected');return r(),void(F=N.IDENTIFIER)}for(F=N.UNKNOWN;""!=A;)B+=A,r();throw new SyntaxError('Syntax error in part "'+O(B,30)+'"')}function m(){var t={};if(s(),f(),"strict"===B&&(t.strict=!0,f()),"graph"!==B&&"digraph"!==B||(t.type=B,f()),F===N.IDENTIFIER&&(t.id=B,f()),"{"!=B)throw k("Angle bracket { expected");if(f(),v(t),"}"!=B)throw k("Angle bracket } expected");if(f(),""!==B)throw k("End of file expected");return f(),delete t.node,delete t.edge,delete t.graph,t}function v(t){for(;""!==B&&"}"!=B;)g(t),";"===B&&f()}function g(t){var e=y(t);if(e)return void w(t,e);var i=b(t);if(!i){if(F!=N.IDENTIFIER)throw k("Identifier expected");var o=B;if(f(),"="===B){if(f(),F!=N.IDENTIFIER)throw k("Identifier expected");t[o]=B,f()}else _(t,o)}}function y(t){var e=null;if("subgraph"===B&&(e={},e.type="subgraph",f(),F===N.IDENTIFIER&&(e.id=B,f())),"{"===B){if(f(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,v(e),"}"!=B)throw k("Angle bracket } expected");f(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function b(t){return"node"===B?(f(),t.node=x(),"node"):"edge"===B?(f(),t.edge=x(),"edge"):"graph"===B?(f(),t.graph=x(),"graph"):null}function _(t,e){var i={id:e},o=x();o&&(i.attr=o),u(t,i),w(t,e)}function w(t,e){for(;"->"===B||"--"===B;){var i,o=B;f();var n=y(t);if(n)i=n;else{if(F!=N.IDENTIFIER)throw k("Identifier or subgraph expected");i=B,u(t,{id:i}),f()}var s=x(),r=p(t,e,i,o,s);c(t,r),e=i}}function x(){for(var t=null;"["===B;){for(f(),t={};""!==B&&"]"!=B;){if(F!=N.IDENTIFIER)throw k("Attribute name expected");var e=B;if(f(),"="!=B)throw k("Equal sign = expected");if(f(),F!=N.IDENTIFIER)throw k("Attribute value expected");var i=B;l(t,e,i),f(),","==B&&f()}if("]"!=B)throw k("Bracket ] expected");f()}return t}function k(t){return new SyntaxError(t+', got "'+O(B,30)+'" (char '+L+")")}function O(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function D(t,e,i){Array.isArray(t)?t.forEach(function(t){Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}):Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}function M(t,e,i){for(var o=e.split("."),n=o.pop(),s=t,r=0;r":!0,"--":!0},R="",L=0,A="",B="",F=N.NULL,H=/[a-zA-Z_0-9.:#]/;e.parseDOT=n,e.DOTToGraph=C},function(t,e){function i(t,e){var i=[],o=[],n={edges:{inheritColor:!1},nodes:{fixed:!1,parseColor:!1}};void 0!==e&&(void 0!==e.fixed&&(n.nodes.fixed=e.fixed),void 0!==e.parseColor&&(n.nodes.parseColor=e.parseColor),void 0!==e.inheritColor&&(n.edges.inheritColor=e.inheritColor));for(var s=t.edges,r=t.nodes,a=0;a0&&e-1 in t)}function q(t){return a.call(t,function(t){return null!=t})}function H(t){return t.length>0?r.fn.concat.apply([],t):t}function I(t){return t.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/_/g,"-").toLowerCase()}function V(t){return t in l?l[t]:l[t]=new RegExp("(^|\\s)"+t+"(\\s|$)")}function _(t,e){return"number"!=typeof e||h[I(t)]?e:e+"px"}function B(t){var e,n;return c[t]||(e=f.createElement(t),f.body.appendChild(e),n=getComputedStyle(e,"").getPropertyValue("display"),e.parentNode.removeChild(e),"none"==n&&(n="block"),c[t]=n),c[t]}function U(t){return"children"in t?u.call(t.children):r.map(t.childNodes,function(t){return 1==t.nodeType?t:void 0})}function X(t,e){var n,r=t?t.length:0;for(n=0;r>n;n++)this[n]=t[n];this.length=r,this.selector=e||""}function J(t,r,i){for(n in r)i&&(Z(r[n])||L(r[n]))?(Z(r[n])&&!Z(t[n])&&(t[n]={}),L(r[n])&&!L(t[n])&&(t[n]=[]),J(t[n],r[n],i)):r[n]!==e&&(t[n]=r[n])}function W(t,e){return null==e?r(t):r(t).filter(e)}function Y(t,e,n,r){return F(e)?e.call(t,n,r):e}function G(t,e,n){null==n?t.removeAttribute(e):t.setAttribute(e,n)}function K(t,n){var r=t.className||"",i=r&&r.baseVal!==e;return n===e?i?r.baseVal:r:void(i?r.baseVal=n:t.className=n)}function Q(t){try{return t?"true"==t||("false"==t?!1:"null"==t?null:+t+""==t?+t:/^[\[\{]/.test(t)?r.parseJSON(t):t):t}catch(e){return t}}function tt(t,e){e(t);for(var n=0,r=t.childNodes.length;r>n;n++)tt(t.childNodes[n],e)}var e,n,r,i,O,P,o=[],s=o.concat,a=o.filter,u=o.slice,f=t.document,c={},l={},h={"column-count":1,columns:1,"font-weight":1,"line-height":1,opacity:1,"z-index":1,zoom:1},p=/^\s*<(\w+|!)[^>]*>/,d=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,m=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,g=/^(?:body|html)$/i,v=/([A-Z])/g,y=["val","css","html","text","data","width","height","offset"],x=["after","prepend","before","append"],b=f.createElement("table"),E=f.createElement("tr"),j={tr:f.createElement("tbody"),tbody:b,thead:b,tfoot:b,td:E,th:E,"*":f.createElement("div")},w=/complete|loaded|interactive/,T=/^[\w-]*$/,S={},C=S.toString,N={},A=f.createElement("div"),D={tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},L=Array.isArray||function(t){return t instanceof Array};return N.matches=function(t,e){if(!e||!t||1!==t.nodeType)return!1;var n=t.matches||t.webkitMatchesSelector||t.mozMatchesSelector||t.oMatchesSelector||t.matchesSelector;if(n)return n.call(t,e);var r,i=t.parentNode,o=!i;return o&&(i=A).appendChild(t),r=~N.qsa(i,e).indexOf(t),o&&A.removeChild(t),r},O=function(t){return t.replace(/-+(.)?/g,function(t,e){return e?e.toUpperCase():""})},P=function(t){return a.call(t,function(e,n){return t.indexOf(e)==n})},N.fragment=function(t,n,i){var o,s,a;return d.test(t)&&(o=r(f.createElement(RegExp.$1))),o||(t.replace&&(t=t.replace(m,"<$1>")),n===e&&(n=p.test(t)&&RegExp.$1),n in j||(n="*"),a=j[n],a.innerHTML=""+t,o=r.each(u.call(a.childNodes),function(){a.removeChild(this)})),Z(i)&&(s=r(o),r.each(i,function(t,e){y.indexOf(t)>-1?s[t](e):s.attr(t,e)})),o},N.Z=function(t,e){return new X(t,e)},N.isZ=function(t){return t instanceof N.Z},N.init=function(t,n){var i;if(!t)return N.Z();if("string"==typeof t)if(t=t.trim(),"<"==t[0]&&p.test(t))i=N.fragment(t,RegExp.$1,n),t=null;else{if(n!==e)return r(n).find(t);i=N.qsa(f,t)}else{if(F(t))return r(f).ready(t);if(N.isZ(t))return t;if(L(t))i=q(t);else if(R(t))i=[t],t=null;else if(p.test(t))i=N.fragment(t.trim(),RegExp.$1,n),t=null;else{if(n!==e)return r(n).find(t);i=N.qsa(f,t)}}return N.Z(i,t)},r=function(t,e){return N.init(t,e)},r.extend=function(t){var e,n=u.call(arguments,1);return"boolean"==typeof t&&(e=t,t=n.shift()),n.forEach(function(n){J(t,n,e)}),t},N.qsa=function(t,e){var n,r="#"==e[0],i=!r&&"."==e[0],o=r||i?e.slice(1):e,s=T.test(o);return t.getElementById&&s&&r?(n=t.getElementById(o))?[n]:[]:1!==t.nodeType&&9!==t.nodeType&&11!==t.nodeType?[]:u.call(s&&!r&&t.getElementsByClassName?i?t.getElementsByClassName(o):t.getElementsByTagName(e):t.querySelectorAll(e))},r.contains=f.documentElement.contains?function(t,e){return t!==e&&t.contains(e)}:function(t,e){for(;e&&(e=e.parentNode);)if(e===t)return!0;return!1},r.type=$,r.isFunction=F,r.isWindow=k,r.isArray=L,r.isPlainObject=Z,r.isEmptyObject=function(t){var e;for(e in t)return!1;return!0},r.isNumeric=function(t){var e=Number(t),n=typeof t;return null!=t&&"boolean"!=n&&("string"!=n||t.length)&&!isNaN(e)&&isFinite(e)||!1},r.inArray=function(t,e,n){return o.indexOf.call(e,t,n)},r.camelCase=O,r.trim=function(t){return null==t?"":String.prototype.trim.call(t)},r.uuid=0,r.support={},r.expr={},r.noop=function(){},r.map=function(t,e){var n,i,o,r=[];if(z(t))for(i=0;i=0?t:t+this.length]},toArray:function(){return this.get()},size:function(){return this.length},remove:function(){return this.each(function(){null!=this.parentNode&&this.parentNode.removeChild(this)})},each:function(t){return o.every.call(this,function(e,n){return t.call(e,n,e)!==!1}),this},filter:function(t){return F(t)?this.not(this.not(t)):r(a.call(this,function(e){return N.matches(e,t)}))},add:function(t,e){return r(P(this.concat(r(t,e))))},is:function(t){return this.length>0&&N.matches(this[0],t)},not:function(t){var n=[];if(F(t)&&t.call!==e)this.each(function(e){t.call(this,e)||n.push(this)});else{var i="string"==typeof t?this.filter(t):z(t)&&F(t.item)?u.call(t):r(t);this.forEach(function(t){i.indexOf(t)<0&&n.push(t)})}return r(n)},has:function(t){return this.filter(function(){return R(t)?r.contains(this,t):r(this).find(t).size()})},eq:function(t){return-1===t?this.slice(t):this.slice(t,+t+1)},first:function(){var t=this[0];return t&&!R(t)?t:r(t)},last:function(){var t=this[this.length-1];return t&&!R(t)?t:r(t)},find:function(t){var e,n=this;return e=t?"object"==typeof t?r(t).filter(function(){var t=this;return o.some.call(n,function(e){return r.contains(e,t)})}):1==this.length?r(N.qsa(this[0],t)):this.map(function(){return N.qsa(this,t)}):r()},closest:function(t,e){var n=[],i="object"==typeof t&&r(t);return this.each(function(r,o){for(;o&&!(i?i.indexOf(o)>=0:N.matches(o,t));)o=o!==e&&!M(o)&&o.parentNode;o&&n.indexOf(o)<0&&n.push(o)}),r(n)},parents:function(t){for(var e=[],n=this;n.length>0;)n=r.map(n,function(t){return(t=t.parentNode)&&!M(t)&&e.indexOf(t)<0?(e.push(t),t):void 0});return W(e,t)},parent:function(t){return W(P(this.pluck("parentNode")),t)},children:function(t){return W(this.map(function(){return U(this)}),t)},contents:function(){return this.map(function(){return this.contentDocument||u.call(this.childNodes)})},siblings:function(t){return W(this.map(function(t,e){return a.call(U(e.parentNode),function(t){return t!==e})}),t)},empty:function(){return this.each(function(){this.innerHTML=""})},pluck:function(t){return r.map(this,function(e){return e[t]})},show:function(){return this.each(function(){"none"==this.style.display&&(this.style.display=""),"none"==getComputedStyle(this,"").getPropertyValue("display")&&(this.style.display=B(this.nodeName))})},replaceWith:function(t){return this.before(t).remove()},wrap:function(t){var e=F(t);if(this[0]&&!e)var n=r(t).get(0),i=n.parentNode||this.length>1;return this.each(function(o){r(this).wrapAll(e?t.call(this,o):i?n.cloneNode(!0):n)})},wrapAll:function(t){if(this[0]){r(this[0]).before(t=r(t));for(var e;(e=t.children()).length;)t=e.first();r(t).append(this)}return this},wrapInner:function(t){var e=F(t);return this.each(function(n){var i=r(this),o=i.contents(),s=e?t.call(this,n):t;o.length?o.wrapAll(s):i.append(s)})},unwrap:function(){return this.parent().each(function(){r(this).replaceWith(r(this).children())}),this},clone:function(){return this.map(function(){return this.cloneNode(!0)})},hide:function(){return this.css("display","none")},toggle:function(t){return this.each(function(){var n=r(this);(t===e?"none"==n.css("display"):t)?n.show():n.hide()})},prev:function(t){return r(this.pluck("previousElementSibling")).filter(t||"*")},next:function(t){return r(this.pluck("nextElementSibling")).filter(t||"*")},html:function(t){return 0 in arguments?this.each(function(e){var n=this.innerHTML;r(this).empty().append(Y(this,t,e,n))}):0 in this?this[0].innerHTML:null},text:function(t){return 0 in arguments?this.each(function(e){var n=Y(this,t,e,this.textContent);this.textContent=null==n?"":""+n}):0 in this?this.pluck("textContent").join(""):null},attr:function(t,r){var i;return"string"!=typeof t||1 in arguments?this.each(function(e){if(1===this.nodeType)if(R(t))for(n in t)G(this,n,t[n]);else G(this,t,Y(this,r,e,this.getAttribute(t)))}):0 in this&&1==this[0].nodeType&&null!=(i=this[0].getAttribute(t))?i:e},removeAttr:function(t){return this.each(function(){1===this.nodeType&&t.split(" ").forEach(function(t){G(this,t)},this)})},prop:function(t,e){return t=D[t]||t,1 in arguments?this.each(function(n){this[t]=Y(this,e,n,this[t])}):this[0]&&this[0][t]},removeProp:function(t){return t=D[t]||t,this.each(function(){delete this[t]})},data:function(t,n){var r="data-"+t.replace(v,"-$1").toLowerCase(),i=1 in arguments?this.attr(r,n):this.attr(r);return null!==i?Q(i):e},val:function(t){return 0 in arguments?(null==t&&(t=""),this.each(function(e){this.value=Y(this,t,e,this.value)})):this[0]&&(this[0].multiple?r(this[0]).find("option").filter(function(){return this.selected}).pluck("value"):this[0].value)},offset:function(e){if(e)return this.each(function(t){var n=r(this),i=Y(this,e,t,n.offset()),o=n.offsetParent().offset(),s={top:i.top-o.top,left:i.left-o.left};"static"==n.css("position")&&(s.position="relative"),n.css(s)});if(!this.length)return null;if(f.documentElement!==this[0]&&!r.contains(f.documentElement,this[0]))return{top:0,left:0};var n=this[0].getBoundingClientRect();return{left:n.left+t.pageXOffset,top:n.top+t.pageYOffset,width:Math.round(n.width),height:Math.round(n.height)}},css:function(t,e){if(arguments.length<2){var i=this[0];if("string"==typeof t){if(!i)return;return i.style[O(t)]||getComputedStyle(i,"").getPropertyValue(t)}if(L(t)){if(!i)return;var o={},s=getComputedStyle(i,"");return r.each(t,function(t,e){o[e]=i.style[O(e)]||s.getPropertyValue(e)}),o}}var a="";if("string"==$(t))e||0===e?a=I(t)+":"+_(t,e):this.each(function(){this.style.removeProperty(I(t))});else for(n in t)t[n]||0===t[n]?a+=I(n)+":"+_(n,t[n])+";":this.each(function(){this.style.removeProperty(I(n))});return this.each(function(){this.style.cssText+=";"+a})},index:function(t){return t?this.indexOf(r(t)[0]):this.parent().children().indexOf(this[0])},hasClass:function(t){return t?o.some.call(this,function(t){return this.test(K(t))},V(t)):!1},addClass:function(t){return t?this.each(function(e){if("className"in this){i=[];var n=K(this),o=Y(this,t,e,n);o.split(/\s+/g).forEach(function(t){r(this).hasClass(t)||i.push(t)},this),i.length&&K(this,n+(n?" ":"")+i.join(" "))}}):this},removeClass:function(t){return this.each(function(n){if("className"in this){if(t===e)return K(this,"");i=K(this),Y(this,t,n,i).split(/\s+/g).forEach(function(t){i=i.replace(V(t)," ")}),K(this,i.trim())}})},toggleClass:function(t,n){return t?this.each(function(i){var o=r(this),s=Y(this,t,i,K(this));s.split(/\s+/g).forEach(function(t){(n===e?!o.hasClass(t):n)?o.addClass(t):o.removeClass(t)})}):this},scrollTop:function(t){if(this.length){var n="scrollTop"in this[0];return t===e?n?this[0].scrollTop:this[0].pageYOffset:this.each(n?function(){this.scrollTop=t}:function(){this.scrollTo(this.scrollX,t)})}},scrollLeft:function(t){if(this.length){var n="scrollLeft"in this[0];return t===e?n?this[0].scrollLeft:this[0].pageXOffset:this.each(n?function(){this.scrollLeft=t}:function(){this.scrollTo(t,this.scrollY)})}},position:function(){if(this.length){var t=this[0],e=this.offsetParent(),n=this.offset(),i=g.test(e[0].nodeName)?{top:0,left:0}:e.offset();return n.top-=parseFloat(r(t).css("margin-top"))||0,n.left-=parseFloat(r(t).css("margin-left"))||0,i.top+=parseFloat(r(e[0]).css("border-top-width"))||0,i.left+=parseFloat(r(e[0]).css("border-left-width"))||0,{top:n.top-i.top,left:n.left-i.left}}},offsetParent:function(){return this.map(function(){for(var t=this.offsetParent||f.body;t&&!g.test(t.nodeName)&&"static"==r(t).css("position");)t=t.offsetParent;return t})}},r.fn.detach=r.fn.remove,["width","height"].forEach(function(t){var n=t.replace(/./,function(t){return t[0].toUpperCase()});r.fn[t]=function(i){var o,s=this[0];return i===e?k(s)?s["inner"+n]:M(s)?s.documentElement["scroll"+n]:(o=this.offset())&&o[t]:this.each(function(e){s=r(this),s.css(t,Y(this,i,e,s[t]()))})}}),x.forEach(function(n,i){var o=i%2;r.fn[n]=function(){var n,a,s=r.map(arguments,function(t){var i=[];return n=$(t),"array"==n?(t.forEach(function(t){return t.nodeType!==e?i.push(t):r.zepto.isZ(t)?i=i.concat(t.get()):void(i=i.concat(N.fragment(t)))}),i):"object"==n||null==t?t:N.fragment(t)}),u=this.length>1;return s.length<1?this:this.each(function(e,n){a=o?n:n.parentNode,n=0==i?n.nextSibling:1==i?n.firstChild:2==i?n:null;var c=r.contains(f.documentElement,a);s.forEach(function(e){if(u)e=e.cloneNode(!0);else if(!a)return r(e).remove();a.insertBefore(e,n),c&&tt(e,function(e){if(!(null==e.nodeName||"SCRIPT"!==e.nodeName.toUpperCase()||e.type&&"text/javascript"!==e.type||e.src)){var n=e.ownerDocument?e.ownerDocument.defaultView:t;n.eval.call(n,e.innerHTML)}})})})},r.fn[o?n+"To":"insert"+(i?"Before":"After")]=function(t){return r(t)[n](this),this}}),N.Z.prototype=X.prototype=r.fn,N.uniq=P,N.deserializeValue=Q,r.zepto=N,r}();return t.Zepto=e,void 0===t.$&&(t.$=e),function(e){function h(t){return t._zid||(t._zid=n++)}function p(t,e,n,r){if(e=d(e),e.ns)var i=m(e.ns);return(a[h(t)]||[]).filter(function(t){return t&&(!e.e||t.e==e.e)&&(!e.ns||i.test(t.ns))&&(!n||h(t.fn)===h(n))&&(!r||t.sel==r)})}function d(t){var e=(""+t).split(".");return{e:e[0],ns:e.slice(1).sort().join(" ")}}function m(t){return new RegExp("(?:^| )"+t.replace(" "," .* ?")+"(?: |$)")}function g(t,e){return t.del&&!f&&t.e in c||!!e}function v(t){return l[t]||f&&c[t]||t}function y(t,n,i,o,s,u,f){var c=h(t),p=a[c]||(a[c]=[]);n.split(/\s/).forEach(function(n){if("ready"==n)return e(document).ready(i);var a=d(n);a.fn=i,a.sel=s,a.e in l&&(i=function(t){var n=t.relatedTarget;return!n||n!==this&&!e.contains(this,n)?a.fn.apply(this,arguments):void 0}),a.del=u;var c=u||i;a.proxy=function(e){if(e=T(e),!e.isImmediatePropagationStopped()){e.data=o;var n=c.apply(t,e._args==r?[e]:[e].concat(e._args));return n===!1&&(e.preventDefault(),e.stopPropagation()),n}},a.i=p.length,p.push(a),"addEventListener"in t&&t.addEventListener(v(a.e),a.proxy,g(a,f))})}function x(t,e,n,r,i){var o=h(t);(e||"").split(/\s/).forEach(function(e){p(t,e,n,r).forEach(function(e){delete a[o][e.i],"removeEventListener"in t&&t.removeEventListener(v(e.e),e.proxy,g(e,i))})})}function T(t,n){return(n||!t.isDefaultPrevented)&&(n||(n=t),e.each(w,function(e,r){var i=n[e];t[e]=function(){return this[r]=b,i&&i.apply(n,arguments)},t[r]=E}),t.timeStamp||(t.timeStamp=Date.now()),(n.defaultPrevented!==r?n.defaultPrevented:"returnValue"in n?n.returnValue===!1:n.getPreventDefault&&n.getPreventDefault())&&(t.isDefaultPrevented=b)),t}function S(t){var e,n={originalEvent:t};for(e in t)j.test(e)||t[e]===r||(n[e]=t[e]);return T(n,t)}var r,n=1,i=Array.prototype.slice,o=e.isFunction,s=function(t){return"string"==typeof t},a={},u={},f="onfocusin"in t,c={focus:"focusin",blur:"focusout"},l={mouseenter:"mouseover",mouseleave:"mouseout"};u.click=u.mousedown=u.mouseup=u.mousemove="MouseEvents",e.event={add:y,remove:x},e.proxy=function(t,n){var r=2 in arguments&&i.call(arguments,2);if(o(t)){var a=function(){return t.apply(n,r?r.concat(i.call(arguments)):arguments)};return a._zid=h(t),a}if(s(n))return r?(r.unshift(t[n],t),e.proxy.apply(null,r)):e.proxy(t[n],t);throw new TypeError("expected function")},e.fn.bind=function(t,e,n){return this.on(t,e,n)},e.fn.unbind=function(t,e){return this.off(t,e)},e.fn.one=function(t,e,n,r){return this.on(t,e,n,r,1)};var b=function(){return!0},E=function(){return!1},j=/^([A-Z]|returnValue$|layer[XY]$|webkitMovement[XY]$)/,w={preventDefault:"isDefaultPrevented",stopImmediatePropagation:"isImmediatePropagationStopped",stopPropagation:"isPropagationStopped"};e.fn.delegate=function(t,e,n){return this.on(e,t,n)},e.fn.undelegate=function(t,e,n){return this.off(e,t,n)},e.fn.live=function(t,n){return e(document.body).delegate(this.selector,t,n),this},e.fn.die=function(t,n){return e(document.body).undelegate(this.selector,t,n),this},e.fn.on=function(t,n,a,u,f){var c,l,h=this;return t&&!s(t)?(e.each(t,function(t,e){h.on(t,n,a,e,f)}),h):(s(n)||o(u)||u===!1||(u=a,a=n,n=r),(u===r||a===!1)&&(u=a,a=r),u===!1&&(u=E),h.each(function(r,o){f&&(c=function(t){return x(o,t.type,u),u.apply(this,arguments)}),n&&(l=function(t){var r,s=e(t.target).closest(n,o).get(0);return s&&s!==o?(r=e.extend(S(t),{currentTarget:s,liveFired:o}),(c||u).apply(s,[r].concat(i.call(arguments,1)))):void 0}),y(o,t,u,a,n,l||c)}))},e.fn.off=function(t,n,i){var a=this;return t&&!s(t)?(e.each(t,function(t,e){a.off(t,n,e)}),a):(s(n)||o(i)||i===!1||(i=n,n=r),i===!1&&(i=E),a.each(function(){x(this,t,i,n)}))},e.fn.trigger=function(t,n){return t=s(t)||e.isPlainObject(t)?e.Event(t):T(t),t._args=n,this.each(function(){t.type in c&&"function"==typeof this[t.type]?this[t.type]():"dispatchEvent"in this?this.dispatchEvent(t):e(this).triggerHandler(t,n)})},e.fn.triggerHandler=function(t,n){var r,i;return this.each(function(o,a){r=S(s(t)?e.Event(t):t),r._args=n,r.target=a,e.each(p(a,t.type||t),function(t,e){return i=e.proxy(r),r.isImmediatePropagationStopped()?!1:void 0})}),i},"focusin focusout focus blur load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select keydown keypress keyup error".split(" ").forEach(function(t){e.fn[t]=function(e){return 0 in arguments?this.bind(t,e):this.trigger(t)}}),e.Event=function(t,e){s(t)||(e=t,t=e.type);var n=document.createEvent(u[t]||"Events"),r=!0;if(e)for(var i in e)"bubbles"==i?r=!!e[i]:n[i]=e[i];return n.initEvent(t,r,!0),T(n)}}(e),function(e){function p(t,n,r){var i=e.Event(n);return e(t).trigger(i,r),!i.isDefaultPrevented()}function d(t,e,n,i){return t.global?p(e||r,n,i):void 0}function m(t){t.global&&0===e.active++&&d(t,null,"ajaxStart")}function g(t){t.global&&!--e.active&&d(t,null,"ajaxStop")}function v(t,e){var n=e.context;return e.beforeSend.call(n,t,e)===!1||d(e,n,"ajaxBeforeSend",[t,e])===!1?!1:void d(e,n,"ajaxSend",[t,e])}function y(t,e,n,r){var i=n.context,o="success";n.success.call(i,t,o,e),r&&r.resolveWith(i,[t,o,e]),d(n,i,"ajaxSuccess",[e,n,t]),b(o,e,n)}function x(t,e,n,r,i){var o=r.context;r.error.call(o,n,e,t),i&&i.rejectWith(o,[n,e,t]),d(r,o,"ajaxError",[n,r,t||e]),b(e,n,r)}function b(t,e,n){var r=n.context;n.complete.call(r,e,t),d(n,r,"ajaxComplete",[e,n]),g(n)}function E(t,e,n){if(n.dataFilter==j)return t;var r=n.context;return n.dataFilter.call(r,t,e)}function j(){}function w(t){return t&&(t=t.split(";",2)[0]),t&&(t==c?"html":t==f?"json":a.test(t)?"script":u.test(t)&&"xml")||"text"}function T(t,e){return""==e?t:(t+"&"+e).replace(/[&?]{1,2}/,"?")}function S(t){t.processData&&t.data&&"string"!=e.type(t.data)&&(t.data=e.param(t.data,t.traditional)),!t.data||t.type&&"GET"!=t.type.toUpperCase()&&"jsonp"!=t.dataType||(t.url=T(t.url,t.data),t.data=void 0)}function C(t,n,r,i){return e.isFunction(n)&&(i=r,r=n,n=void 0),e.isFunction(r)||(i=r,r=void 0),{url:t,data:n,success:r,dataType:i}}function O(t,n,r,i){var o,s=e.isArray(n),a=e.isPlainObject(n);e.each(n,function(n,u){o=e.type(u),i&&(n=r?i:i+"["+(a||"object"==o||"array"==o?n:"")+"]"),!i&&s?t.add(u.name,u.value):"array"==o||!r&&"object"==o?O(t,u,r,n):t.add(n,u)})}var i,o,n=+new Date,r=t.document,s=/)<[^<]*)*<\/script>/gi,a=/^(?:text|application)\/javascript/i,u=/^(?:text|application)\/xml/i,f="application/json",c="text/html",l=/^\s*$/,h=r.createElement("a");h.href=t.location.href,e.active=0,e.ajaxJSONP=function(i,o){if(!("type"in i))return e.ajax(i);var c,p,s=i.jsonpCallback,a=(e.isFunction(s)?s():s)||"Zepto"+n++,u=r.createElement("script"),f=t[a],l=function(t){e(u).triggerHandler("error",t||"abort")},h={abort:l};return o&&o.promise(h),e(u).on("load error",function(n,r){clearTimeout(p),e(u).off().remove(),"error"!=n.type&&c?y(c[0],h,i,o):x(null,r||"error",h,i,o),t[a]=f,c&&e.isFunction(f)&&f(c[0]),f=c=void 0}),v(h,i)===!1?(l("abort"),h):(t[a]=function(){c=arguments},u.src=i.url.replace(/\?(.+)=\?/,"?$1="+a),r.head.appendChild(u),i.timeout>0&&(p=setTimeout(function(){l("timeout")},i.timeout)),h)},e.ajaxSettings={type:"GET",beforeSend:j,success:j,error:j,complete:j,context:null,global:!0,xhr:function(){return new t.XMLHttpRequest},accepts:{script:"text/javascript, application/javascript, application/x-javascript",json:f,xml:"application/xml, text/xml",html:c,text:"text/plain"},crossDomain:!1,timeout:0,processData:!0,cache:!0,dataFilter:j},e.ajax=function(n){var u,f,s=e.extend({},n||{}),a=e.Deferred&&e.Deferred();for(i in e.ajaxSettings)void 0===s[i]&&(s[i]=e.ajaxSettings[i]);m(s),s.crossDomain||(u=r.createElement("a"),u.href=s.url,u.href=u.href,s.crossDomain=h.protocol+"//"+h.host!=u.protocol+"//"+u.host),s.url||(s.url=t.location.toString()),(f=s.url.indexOf("#"))>-1&&(s.url=s.url.slice(0,f)),S(s);var c=s.dataType,p=/\?.+=\?/.test(s.url);if(p&&(c="jsonp"),s.cache!==!1&&(n&&n.cache===!0||"script"!=c&&"jsonp"!=c)||(s.url=T(s.url,"_="+Date.now())),"jsonp"==c)return p||(s.url=T(s.url,s.jsonp?s.jsonp+"=?":s.jsonp===!1?"":"callback=?")),e.ajaxJSONP(s,a);var P,d=s.accepts[c],g={},b=function(t,e){g[t.toLowerCase()]=[t,e]},C=/^([\w-]+:)\/\//.test(s.url)?RegExp.$1:t.location.protocol,N=s.xhr(),O=N.setRequestHeader;if(a&&a.promise(N),s.crossDomain||b("X-Requested-With","XMLHttpRequest"),b("Accept",d||"*/*"),(d=s.mimeType||d)&&(d.indexOf(",")>-1&&(d=d.split(",",2)[0]),N.overrideMimeType&&N.overrideMimeType(d)),(s.contentType||s.contentType!==!1&&s.data&&"GET"!=s.type.toUpperCase())&&b("Content-Type",s.contentType||"application/x-www-form-urlencoded"),s.headers)for(o in s.headers)b(o,s.headers[o]);if(N.setRequestHeader=b,N.onreadystatechange=function(){if(4==N.readyState){N.onreadystatechange=j,clearTimeout(P);var t,n=!1;if(N.status>=200&&N.status<300||304==N.status||0==N.status&&"file:"==C){if(c=c||w(s.mimeType||N.getResponseHeader("content-type")),"arraybuffer"==N.responseType||"blob"==N.responseType)t=N.response;else{t=N.responseText;try{t=E(t,c,s),"script"==c?(1,eval)(t):"xml"==c?t=N.responseXML:"json"==c&&(t=l.test(t)?null:e.parseJSON(t))}catch(r){n=r}if(n)return x(n,"parsererror",N,s,a)}y(t,N,s,a)}else x(N.statusText||null,N.status?"error":"abort",N,s,a)}},v(N,s)===!1)return N.abort(),x(null,"abort",N,s,a),N;var A="async"in s?s.async:!0;if(N.open(s.type,s.url,A,s.username,s.password),s.xhrFields)for(o in s.xhrFields)N[o]=s.xhrFields[o];for(o in g)O.apply(N,g[o]);return s.timeout>0&&(P=setTimeout(function(){N.onreadystatechange=j,N.abort(),x(null,"timeout",N,s,a)},s.timeout)),N.send(s.data?s.data:null),N},e.get=function(){return e.ajax(C.apply(null,arguments))},e.post=function(){var t=C.apply(null,arguments);return t.type="POST",e.ajax(t)},e.getJSON=function(){var t=C.apply(null,arguments);return t.dataType="json",e.ajax(t)},e.fn.load=function(t,n,r){if(!this.length)return this;var a,i=this,o=t.split(/\s/),u=C(t,n,r),f=u.success;return o.length>1&&(u.url=o[0],a=o[1]),u.success=function(t){i.html(a?e("
                                                      ").html(t.replace(s,"")).find(a):t),f&&f.apply(i,arguments)},e.ajax(u),this};var N=encodeURIComponent;e.param=function(t,n){var r=[];return r.add=function(t,n){e.isFunction(n)&&(n=n()),null==n&&(n=""),this.push(N(t)+"="+N(n))},O(r,t,n),r.join("&").replace(/%20/g,"+")}}(e),function(t){t.fn.serializeArray=function(){var e,n,r=[],i=function(t){return t.forEach?t.forEach(i):void r.push({name:e,value:t})};return this[0]&&t.each(this[0].elements,function(r,o){n=o.type,e=o.name,e&&"fieldset"!=o.nodeName.toLowerCase()&&!o.disabled&&"submit"!=n&&"reset"!=n&&"button"!=n&&"file"!=n&&("radio"!=n&&"checkbox"!=n||o.checked)&&i(t(o).val())}),r},t.fn.serialize=function(){var t=[];return this.serializeArray().forEach(function(e){t.push(encodeURIComponent(e.name)+"="+encodeURIComponent(e.value))}),t.join("&")},t.fn.submit=function(e){if(0 in arguments)this.bind("submit",e);else if(this.length){var n=t.Event("submit");this.eq(0).trigger(n),n.isDefaultPrevented()||this.get(0).submit()}return this}}(e),function(){try{getComputedStyle(void 0)}catch(e){var n=getComputedStyle;t.getComputedStyle=function(t,e){try{return n(t,e)}catch(r){return null}}}}(),e}); \ No newline at end of file diff --git a/docs/js/menu.js b/docs/js/menu.js new file mode 100644 index 0000000..64fa19e --- /dev/null +++ b/docs/js/menu.js @@ -0,0 +1,106 @@ +document.addEventListener('DOMContentLoaded', function() { + var menuCollapsed = false, + mobileMenu = document.getElementById('mobile-menu'); + + function hasClass(el, cls) { + return el.className && new RegExp("(\\s|^)" + cls + "(\\s|$)").test(el.className); + } + + document.getElementById('btn-menu').addEventListener('click', function() { + if (menuCollapsed) { + mobileMenu.style.display = 'none'; + } else { + mobileMenu.style.display = 'block'; + document.getElementsByTagName('body')[0].style['overflow-y'] = 'hidden'; + } + menuCollapsed = !menuCollapsed; + }); + + // collapse menu + var classnameMenuToggler = document.getElementsByClassName('menu-toggler'), + faAngleUpClass = 'fa-angle-up', + faAngleDownClass = 'fa-angle-down', + toggleItemMenu = function(e) { + var element = $(e.target), + parent = element[0].parentNode, + parentLink, + elementIconChild; + if (parent) { + if (!$(parent).hasClass('linked')) { + e.preventDefault(); + } else { + parentLink = parent.parentNode; + if (parentLink && element.hasClass('link-name')) { + $(parentLink).trigger('click'); + } + } + elementIconChild = parent.getElementsByClassName(faAngleUpClass)[0]; + if (!elementIconChild) { + elementIconChild = parent.getElementsByClassName(faAngleDownClass)[0]; + } + if (elementIconChild) { + elementIconChild = $(elementIconChild) + if (elementIconChild.hasClass(faAngleUpClass)) { + elementIconChild.addClass(faAngleDownClass); + elementIconChild.removeClass(faAngleUpClass); + } else { + elementIconChild.addClass(faAngleUpClass); + elementIconChild.removeClass(faAngleDownClass); + } + } + } + }; + + for (var i = 0; i < classnameMenuToggler.length; i++) { + classnameMenuToggler[i].addEventListener('click', toggleItemMenu, false); + } + + // Scroll to active link + var menus = document.querySelectorAll('.menu'), + i = 0, + len = menus.length, + activeMenu, + activeMenuClass, + activeLink; + + for (i; i/g, '>').replace(/"/g, '"'); + } + + function foundLazyModuleWithPath(path) { + //path is like app/customers/customers.module#CustomersModule + let split = path.split('#'), + lazyModulePath = split[0], + lazyModuleName = split[1]; + return lazyModuleName; + } + + function getBB(selection) { + selection.each(function(d){d.bbox = this.getBBox();}) + } + + var test_cases, + test_case, + test_case_num, + engine; + + var tree = ROUTES_INDEX; + + engine = d3.layout.tree().setNodeSizes(true); + + engine.spacing(function(a, b) { + return a.parent == b.parent ? + 0 : engine.rootXSize(); + }) + + engine.nodeSize(function(d) { + return [document.getElementById(d.id).getBBox()["height"] + 70, document.getElementById(d.id).getBBox()["width"] + 30]; + }); + + var nodes = d3.layout.hierarchy()(tree), + + svg = d3.select("#body-routes").append('svg'), + svg_g = svg.append("g"), + svg_p = svg.append("g"), + last_id = 0, + + node = svg_g.selectAll(".node") + .data(nodes, function(d) { + return d.id || (d.id = ++last_id); + }) + .enter().append("g") + .attr("class", "node"); + + svg + .attr('id', 'main') + + svg_g + .attr("transform", "translate(20,0)") + .attr('id', 'main-group') + + svg_p + .attr("transform", "translate(20,0)") + .attr('id', 'paths') + + var infos_group = node.append("g") + .attr({ + "id": function(d) { + return d.id; + }, + dx: 0, + dy: 0, + }) + + //Node icon + infos_group.append("text") + .attr('font-family', 'FontAwesome') + .attr("y", 5) + .attr("x", 0) + .attr('class', function(d) { + return d.children || d._children + ? "icon has-children" + : "icon"; + }) + .attr('font-size', function(d) { + return '15px' + }).text(function(d) { + return '\uf126' + }); + + //node infos + infos_group.append("svg:text") + .attr("x", function(d) { + return 0; + }) + .attr("y", function(d) { + return 10; + }) + .attr("dy", ".35em") + .attr('class', 'text') + .attr("text-anchor", function(d) { + return "start"; + }).html(function(d) { + // if kind === module name + module + // if kind === component component + path + let _name = ''; + if (d.kind === 'module') { + if (d.module) { + _name += `` + d.module + ''; + if (d.name) { + _name += '' + d.name + ''; + } + } else { + _name += `` + htmlEntities(d.name) + ''; + } + } else if (d.kind === 'component') { + _name += '' + d.path + '' + _name += `` + d.component + '' + if (d.outlet) { + _name += `<outlet> : ${d.outlet}` + } + } else { + _name += `/` + d.path + '' + if (d.component) { + _name += `` + d.component + '' + } + if (d.loadChildren) { + let moduleName = foundLazyModuleWithPath(d.loadChildren); + _name += `${moduleName}` + } + if (d.canActivate) { + _name += `✓ canActivate` + } + if (d.canDeactivate) { + _name += `×  canDeactivate` + } + if (d.canActivateChild) { + _name += `✓ canActivateChild` + } + if (d.canLoad) { + _name += `→ canLoad` + } + if (d.redirectTo) { + _name += `→ ` + d.redirectTo + '' + } + if (d.pathMatch) { + _name += `> ` + d.pathMatch + '' + } + if (d.outlet) { + _name += `<outlet> : ${d.outlet}` + } + } + return _name; + }) + .call(getBB); + + // + // Node lazy loaded ? + // + infos_group.append('svg:text') + .attr("y", function(d) { + return 45; + }) + .attr("x", function(d) { + return -18; + }) + .attr('font-family', 'FontAwesome') + .attr('class', function(d) { + return "icon"; + }) + .attr('font-size', function(d) { + return '15px' + }).text(function(d) { + var _text = ''; + if (d.loadChildren) { + _text = '\uf017'; + } + if (d.guarded) { + _text = '\uf023'; + } + return _text; + }); + + //Node text background + infos_group.insert("rect","text") + .attr("width", function(d){ + return d.bbox.width; + }) + .attr("height", function(d){ + return d.bbox.height; + }) + .attr("y", function(d) { + return 15; + }) + .style("fill", "white") + .style("fill-opacity", 0.75); + + nodes = engine.nodes(tree); + + function node_extents(n) { + return [n.x - n.x_size / 2, n.y, + n.x + n.x_size / 2, n.y + n.y_size + ]; + } + var root_extents = node_extents(nodes[0]); + var xmin = root_extents[0], + ymin = root_extents[1], + xmax = root_extents[2], + ymax = root_extents[3], + area_sum = (xmax - xmin) * (ymax - ymin), + x_size_min = nodes[0].x_size, + y_size_min = nodes[0].y_size; + + nodes.slice(1).forEach(function(n) { + var ne = node_extents(n); + xmin = Math.min(xmin, ne[0]); + ymin = Math.min(ymin, ne[1]); + xmax = Math.max(xmax, ne[2]); + ymax = Math.max(ymax, ne[3]); + area_sum += (ne[2] - ne[0]) * (ne[3] - ne[1]); + x_size_min = Math.min(x_size_min, n.x_size); + y_size_min = Math.min(y_size_min, n.y_size); + }); + + var area_ave = area_sum / nodes.length; + var scale = 80 / Math.sqrt(area_ave); + + function svg_x(node_y) { + return (node_y - ymin); + } + + function svg_y(node_x) { + return (node_x - xmin) * scale; + } + + + var nodebox_right_margin = Math.min(x_size_min * scale, 10); + var nodebox_vertical_margin = Math.min(y_size_min * scale, 3); + + node.attr("transform", function(d) { + return "translate(" + svg_x(d.y) + "," + svg_y(d.x) + ")"; + }) + + var diagonal = d3.svg.diagonal() + .projection(function(d) { + return [svg_x(d.y), svg_y(d.x)]; + }); + + var links = engine.links(nodes); + var links = svg_p.selectAll(".link") + .data(links) + .enter().append("path") + .attr("class", "link") + .attr("d", diagonal); + + var _svg = document.getElementById('main'), + main_g = _svg.childNodes[0] + + _svg.removeChild(main_g); + _svg.appendChild(main_g); + + svg.attr({ + width: document.getElementById('main-group').getBBox()['width'] + 30, + height: document.getElementById('main-group').getBBox()['height'] + 50, + }); +}); diff --git a/docs/js/search/lunr.min.js b/docs/js/search/lunr.min.js new file mode 100644 index 0000000..9960ccd --- /dev/null +++ b/docs/js/search/lunr.min.js @@ -0,0 +1,6 @@ +/** + * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 1.0.0 + * Copyright (C) 2017 Oliver Nightingale + * @license MIT + */ +!function(){var t=function(e){var n=new t.Index;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),e&&e.call(n,n),n};t.version="1.0.0",t.utils={},t.utils.warn=function(t){return function(e){t.console&&console.warn&&console.warn(e)}}(this),t.utils.asString=function(t){return void 0===t||null===t?"":t.toString()},t.EventEmitter=function(){this.events={}},t.EventEmitter.prototype.addListener=function(){var t=Array.prototype.slice.call(arguments),e=t.pop(),n=t;if("function"!=typeof e)throw new TypeError("last argument must be a function");n.forEach(function(t){this.hasHandler(t)||(this.events[t]=[]),this.events[t].push(e)},this)},t.EventEmitter.prototype.removeListener=function(t,e){if(this.hasHandler(t)){var n=this.events[t].indexOf(e);this.events[t].splice(n,1),this.events[t].length||delete this.events[t]}},t.EventEmitter.prototype.emit=function(t){if(this.hasHandler(t)){var e=Array.prototype.slice.call(arguments,1);this.events[t].forEach(function(t){t.apply(void 0,e)})}},t.EventEmitter.prototype.hasHandler=function(t){return t in this.events},t.tokenizer=function(e){return arguments.length&&null!=e&&void 0!=e?Array.isArray(e)?e.map(function(e){return t.utils.asString(e).toLowerCase()}):e.toString().trim().toLowerCase().split(t.tokenizer.separator):[]},t.tokenizer.separator=/[\s\-]+/,t.tokenizer.load=function(t){var e=this.registeredFunctions[t];if(!e)throw new Error("Cannot load un-registered function: "+t);return e},t.tokenizer.label="default",t.tokenizer.registeredFunctions={"default":t.tokenizer},t.tokenizer.registerFunction=function(e,n){n in this.registeredFunctions&&t.utils.warn("Overwriting existing tokenizer: "+n),e.label=n,this.registeredFunctions[n]=e},t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions={},t.Pipeline.registerFunction=function(e,n){n in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(e){var i=t.Pipeline.registeredFunctions[e];if(!i)throw new Error("Cannot load un-registered function: "+e);n.add(i)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(e){t.Pipeline.warnIfFunctionNotRegistered(e),this._stack.push(e)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._stack.indexOf(e);if(-1==i)throw new Error("Cannot find existingFn");i+=1,this._stack.splice(i,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._stack.indexOf(e);if(-1==i)throw new Error("Cannot find existingFn");this._stack.splice(i,0,n)},t.Pipeline.prototype.remove=function(t){var e=this._stack.indexOf(t);-1!=e&&this._stack.splice(e,1)},t.Pipeline.prototype.run=function(t){for(var e=[],n=t.length,i=this._stack.length,r=0;n>r;r++){for(var o=t[r],s=0;i>s&&(o=this._stack[s](o,r,t),void 0!==o&&""!==o);s++);void 0!==o&&""!==o&&e.push(o)}return e},t.Pipeline.prototype.reset=function(){this._stack=[]},t.Pipeline.prototype.toJSON=function(){return this._stack.map(function(e){return t.Pipeline.warnIfFunctionNotRegistered(e),e.label})},t.Vector=function(){this._magnitude=null,this.list=void 0,this.length=0},t.Vector.Node=function(t,e,n){this.idx=t,this.val=e,this.next=n},t.Vector.prototype.insert=function(e,n){this._magnitude=void 0;var i=this.list;if(!i)return this.list=new t.Vector.Node(e,n,i),this.length++;if(en.idx?n=n.next:(i+=e.val*n.val,e=e.next,n=n.next);return i},t.Vector.prototype.similarity=function(t){return this.dot(t)/(this.magnitude()*t.magnitude())},t.SortedSet=function(){this.length=0,this.elements=[]},t.SortedSet.load=function(t){var e=new this;return e.elements=t,e.length=t.length,e},t.SortedSet.prototype.add=function(){var t,e;for(t=0;t1;){if(o===t)return r;t>o&&(e=r),o>t&&(n=r),i=n-e,r=e+Math.floor(i/2),o=this.elements[r]}return o===t?r:-1},t.SortedSet.prototype.locationFor=function(t){for(var e=0,n=this.elements.length,i=n-e,r=e+Math.floor(i/2),o=this.elements[r];i>1;)t>o&&(e=r),o>t&&(n=r),i=n-e,r=e+Math.floor(i/2),o=this.elements[r];return o>t?r:t>o?r+1:void 0},t.SortedSet.prototype.intersect=function(e){for(var n=new t.SortedSet,i=0,r=0,o=this.length,s=e.length,a=this.elements,h=e.elements;;){if(i>o-1||r>s-1)break;a[i]!==h[r]?a[i]h[r]&&r++:(n.add(a[i]),i++,r++)}return n},t.SortedSet.prototype.clone=function(){var e=new t.SortedSet;return e.elements=this.toArray(),e.length=e.elements.length,e},t.SortedSet.prototype.union=function(t){var e,n,i;this.length>=t.length?(e=this,n=t):(e=t,n=this),i=e.clone();for(var r=0,o=n.toArray();rp;p++)c[p]===a&&d++;h+=d/f*l.boost}}this.tokenStore.add(a,{ref:o,tf:h})}n&&this.eventEmitter.emit("add",e,this)},t.Index.prototype.remove=function(t,e){var n=t[this._ref],e=void 0===e?!0:e;if(this.documentStore.has(n)){var i=this.documentStore.get(n);this.documentStore.remove(n),i.forEach(function(t){this.tokenStore.remove(t,n)},this),e&&this.eventEmitter.emit("remove",t,this)}},t.Index.prototype.update=function(t,e){var e=void 0===e?!0:e;this.remove(t,!1),this.add(t,!1),e&&this.eventEmitter.emit("update",t,this)},t.Index.prototype.idf=function(t){var e="@"+t;if(Object.prototype.hasOwnProperty.call(this._idfCache,e))return this._idfCache[e];var n=this.tokenStore.count(t),i=1;return n>0&&(i=1+Math.log(this.documentStore.length/n)),this._idfCache[e]=i},t.Index.prototype.search=function(e){var n=this.pipeline.run(this.tokenizerFn(e)),i=new t.Vector,r=[],o=this._fields.reduce(function(t,e){return t+e.boost},0),s=n.some(function(t){return this.tokenStore.has(t)},this);if(!s)return[];n.forEach(function(e,n,s){var a=1/s.length*this._fields.length*o,h=this,u=this.tokenStore.expand(e).reduce(function(n,r){var o=h.corpusTokens.indexOf(r),s=h.idf(r),u=1,l=new t.SortedSet;if(r!==e){var c=Math.max(3,r.length-e.length);u=1/Math.log(c)}o>-1&&i.insert(o,a*s*u);for(var f=h.tokenStore.get(r),d=Object.keys(f),p=d.length,v=0;p>v;v++)l.add(f[d[v]].ref);return n.union(l)},new t.SortedSet);r.push(u)},this);var a=r.reduce(function(t,e){return t.intersect(e)});return a.map(function(t){return{ref:t,score:i.similarity(this.documentVector(t))}},this).sort(function(t,e){return e.score-t.score})},t.Index.prototype.documentVector=function(e){for(var n=this.documentStore.get(e),i=n.length,r=new t.Vector,o=0;i>o;o++){var s=n.elements[o],a=this.tokenStore.get(s)[e].tf,h=this.idf(s);r.insert(this.corpusTokens.indexOf(s),a*h)}return r},t.Index.prototype.toJSON=function(){return{version:t.version,fields:this._fields,ref:this._ref,tokenizer:this.tokenizerFn.label,documentStore:this.documentStore.toJSON(),tokenStore:this.tokenStore.toJSON(),corpusTokens:this.corpusTokens.toJSON(),pipeline:this.pipeline.toJSON()}},t.Index.prototype.use=function(t){var e=Array.prototype.slice.call(arguments,1);e.unshift(this),t.apply(this,e)},t.Store=function(){this.store={},this.length=0},t.Store.load=function(e){var n=new this;return n.length=e.length,n.store=Object.keys(e.store).reduce(function(n,i){return n[i]=t.SortedSet.load(e.store[i]),n},{}),n},t.Store.prototype.set=function(t,e){this.has(t)||this.length++,this.store[t]=e},t.Store.prototype.get=function(t){return this.store[t]},t.Store.prototype.has=function(t){return t in this.store},t.Store.prototype.remove=function(t){this.has(t)&&(delete this.store[t],this.length--)},t.Store.prototype.toJSON=function(){return{store:this.store,length:this.length}},t.stemmer=function(){var t={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},e={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},n="[^aeiou]",i="[aeiouy]",r=n+"[^aeiouy]*",o=i+"[aeiou]*",s="^("+r+")?"+o+r,a="^("+r+")?"+o+r+"("+o+")?$",h="^("+r+")?"+o+r+o+r,u="^("+r+")?"+i,l=new RegExp(s),c=new RegExp(h),f=new RegExp(a),d=new RegExp(u),p=/^(.+?)(ss|i)es$/,v=/^(.+?)([^s])s$/,g=/^(.+?)eed$/,m=/^(.+?)(ed|ing)$/,y=/.$/,S=/(at|bl|iz)$/,w=new RegExp("([^aeiouylsz])\\1$"),k=new RegExp("^"+r+i+"[^aeiouwxy]$"),x=/^(.+?[^aeiou])y$/,b=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,E=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,F=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,_=/^(.+?)(s|t)(ion)$/,z=/^(.+?)e$/,O=/ll$/,P=new RegExp("^"+r+i+"[^aeiouwxy]$"),T=function(n){var i,r,o,s,a,h,u;if(n.length<3)return n;if(o=n.substr(0,1),"y"==o&&(n=o.toUpperCase()+n.substr(1)),s=p,a=v,s.test(n)?n=n.replace(s,"$1$2"):a.test(n)&&(n=n.replace(a,"$1$2")),s=g,a=m,s.test(n)){var T=s.exec(n);s=l,s.test(T[1])&&(s=y,n=n.replace(s,""))}else if(a.test(n)){var T=a.exec(n);i=T[1],a=d,a.test(i)&&(n=i,a=S,h=w,u=k,a.test(n)?n+="e":h.test(n)?(s=y,n=n.replace(s,"")):u.test(n)&&(n+="e"))}if(s=x,s.test(n)){var T=s.exec(n);i=T[1],n=i+"i"}if(s=b,s.test(n)){var T=s.exec(n);i=T[1],r=T[2],s=l,s.test(i)&&(n=i+t[r])}if(s=E,s.test(n)){var T=s.exec(n);i=T[1],r=T[2],s=l,s.test(i)&&(n=i+e[r])}if(s=F,a=_,s.test(n)){var T=s.exec(n);i=T[1],s=c,s.test(i)&&(n=i)}else if(a.test(n)){var T=a.exec(n);i=T[1]+T[2],a=c,a.test(i)&&(n=i)}if(s=z,s.test(n)){var T=s.exec(n);i=T[1],s=c,a=f,h=P,(s.test(i)||a.test(i)&&!h.test(i))&&(n=i)}return s=O,a=c,s.test(n)&&a.test(n)&&(s=y,n=n.replace(s,"")),"y"==o&&(n=o.toLowerCase()+n.substr(1)),n};return T}(),t.Pipeline.registerFunction(t.stemmer,"stemmer"),t.generateStopWordFilter=function(t){var e=t.reduce(function(t,e){return t[e]=e,t},{});return function(t){return t&&e[t]!==t?t:void 0}},t.stopWordFilter=t.generateStopWordFilter(["a","able","about","across","after","all","almost","also","am","among","an","and","any","are","as","at","be","because","been","but","by","can","cannot","could","dear","did","do","does","either","else","ever","every","for","from","get","got","had","has","have","he","her","hers","him","his","how","however","i","if","in","into","is","it","its","just","least","let","like","likely","may","me","might","most","must","my","neither","no","nor","not","of","off","often","on","only","or","other","our","own","rather","said","say","says","she","should","since","so","some","than","that","the","their","them","then","there","these","they","this","tis","to","too","twas","us","wants","was","we","were","what","when","where","which","while","who","whom","why","will","with","would","yet","you","your"]),t.Pipeline.registerFunction(t.stopWordFilter,"stopWordFilter"),t.trimmer=function(t){return t.replace(/^\W+/,"").replace(/\W+$/,"")},t.Pipeline.registerFunction(t.trimmer,"trimmer"),t.TokenStore=function(){this.root={docs:{}},this.length=0},t.TokenStore.load=function(t){var e=new this;return e.root=t.root,e.length=t.length,e},t.TokenStore.prototype.add=function(t,e,n){var n=n||this.root,i=t.charAt(0),r=t.slice(1);return i in n||(n[i]={docs:{}}),0===r.length?(n[i].docs[e.ref]=e,void(this.length+=1)):this.add(r,e,n[i])},t.TokenStore.prototype.has=function(t){if(!t)return!1;for(var e=this.root,n=0;n element for each result + res.results.forEach(function(res) { + var $li = $('
                                                    • ', { + 'class': 'search-results-item' + }), + + $title = $('

                                                      '), + + content = res.body.trim(), + + link = ''; + + switch (COMPODOC_CURRENT_PAGE_DEPTH) { + case 0: + link = './'; + break; + case 1: + link = '../'; + break; + case 2: + link = '../../'; + break; + } + + var $link = $('', { + 'href': link + res.url, + 'text': res.title + }) + + if (content.length > MAX_DESCRIPTION_SIZE) { + content = content.slice(0, MAX_DESCRIPTION_SIZE).trim()+'...'; + } + var $content = $('

                                                      ').html(content); + + $link.appendTo($title); + $title.appendTo($li); + $content.appendTo($li); + $li.appendTo($searchList); + }); + } + + function launchSearch(q) { + $body.addClass('with-search'); + + if ($xsMenu.css('display') === 'block') { + $mainContainer.css('height', 'calc(100% - 100px)'); + $mainContainer.css('margin-top', '100px'); + } + + throttle(compodoc.search.query(q, 0, MAX_RESULTS) + .then(function(results) { + displayResults(results); + }), 1000); + } + + function closeSearch() { + $body.removeClass('with-search'); + if ($xsMenu.css('display') === 'block') { + $mainContainer.css('height', 'calc(100% - 50px)'); + $mainContainer.css('margin-top', '50px'); + } + } + + function bindMenuButton() { + document.getElementById('btn-menu').addEventListener('click', function() { + if ($xsMenu.css('display') === 'none') { + $body.removeClass('with-search'); + $mainContainer.css('height', 'calc(100% - 50px)'); + $mainContainer.css('margin-top', '50px'); + } + $.each($searchInputs, function(index, item){ + var item = $(item); + item.val(''); + }); + }); + } + + function bindSearch() { + // Bind DOM + $searchInputs = $('#book-search-input input'); + + $searchResults = $('.search-results'); + $searchList = $searchResults.find('.search-results-list'); + $searchTitle = $searchResults.find('.search-results-title'); + $searchResultsCount = $searchTitle.find('.search-results-count'); + $searchQuery = $searchTitle.find('.search-query'); + $mainContainer = $('.container-fluid'); + $xsMenu = $('.xs-menu'); + + // Launch query based on input content + function handleUpdate(item) { + var q = item.val(); + + if (q.length == 0) { + closeSearch(); + window.location.href = window.location.href.replace(window.location.search, ''); + } else { + launchSearch(q); + } + } + + // Detect true content change in search input + var propertyChangeUnbound = false; + + $.each($searchInputs, function(index, item){ + var item = $(item); + // HTML5 (IE9 & others) + item.on('input', function(e) { + // Unbind propertychange event for IE9+ + if (!propertyChangeUnbound) { + $(this).unbind('propertychange'); + propertyChangeUnbound = true; + } + + handleUpdate($(this)); + }); + // Workaround for IE < 9 + item.on('propertychange', function(e) { + if (e.originalEvent.propertyName == 'value') { + handleUpdate($(this)); + } + }); + // Push to history on blur + item.on('blur', function(e) { + // Update history state + if (usePushState) { + var uri = updateQueryString('q', $(this).val()); + if ($(this).val() !== '') { + history.pushState({ path: uri }, null, uri); + } + } + }); + }); + } + + function launchSearchFromQueryString() { + var q = getParameterByName('q'); + if (q && q.length > 0) { + // Update search inputs + $.each($searchInputs, function(index, item){ + var item = $(item); + item.val(q) + }); + // Launch search + launchSearch(q); + } + } + + compodoc.addEventListener(compodoc.EVENTS.SEARCH_READY, function(event) { + bindSearch(); + + bindMenuButton(); + + launchSearchFromQueryString(); + }); + + function getParameterByName(name) { + var url = window.location.href; + name = name.replace(/[\[\]]/g, '\\$&'); + var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)', 'i'), + results = regex.exec(url); + if (!results) return null; + if (!results[2]) return ''; + return decodeURIComponent(results[2].replace(/\+/g, ' ')); + } + + function updateQueryString(key, value) { + value = encodeURIComponent(value); + + var url = window.location.href; + var re = new RegExp('([?&])' + key + '=.*?(&|#|$)(.*)', 'gi'), + hash; + + if (re.test(url)) { + if (typeof value !== 'undefined' && value !== null) + return url.replace(re, '$1' + key + '=' + value + '$2$3'); + else { + hash = url.split('#'); + url = hash[0].replace(re, '$1$3').replace(/(&|\?)$/, ''); + if (typeof hash[1] !== 'undefined' && hash[1] !== null) + url += '#' + hash[1]; + return url; + } + } + else { + if (typeof value !== 'undefined' && value !== null) { + var separator = url.indexOf('?') !== -1 ? '&' : '?'; + hash = url.split('#'); + url = hash[0] + separator + key + '=' + value; + if (typeof hash[1] !== 'undefined' && hash[1] !== null) + url += '#' + hash[1]; + return url; + } + else + return url; + } + } +})(compodoc); diff --git a/docs/js/search/search_index.js b/docs/js/search/search_index.js new file mode 100644 index 0000000..3ecad08 --- /dev/null +++ b/docs/js/search/search_index.js @@ -0,0 +1,4 @@ +var COMPODOC_SEARCH_INDEX = { + "index": {"version":"1.0.0","fields":[{"name":"title","boost":10},{"name":"body","boost":1}],"ref":"url","tokenizer":"default","documentStore":{"store":{"/index.html":["1","123","2","2,4,5,6","2/4","4","4.3.2","4/5","42","5","5.5","6.0","6.0.0","abil","abov","accept","access","account","achiev","action","activ","activatedroutesnapshot","activateroutesnapshot","add","adddmin","addit","addpermiss","addrol","addrole('admin","addrole('role_nam","admin","agenda","agendalist","allow","allow/deni","along","alway","and/or","angular","angular(angular","angular/common/http","angular/cor","angular/platform","angular/rout","angular2","angular4","anonym","anoth","anotheralso","anothercompon","anotheron","anyth","aot","app","app.compon","app.component.css","app.component.html","app.module.t","app/lazi","app_initi","appcompon","applic","applicationinitstatu","applications(aot","appmodul","approut","approutingmodul","array","artifact","atom","attribut","auth","authguard","authlogin().then((obj","author","authoris","automat","avail","backend","base","basic","befor","belong","below","better","block","bootstrap","both","browser","browsermodul","build","bulb","busi","bypass","call","canactiv","canactivatechild","candeactivateguard","caneditagenda","canload","canreadagenda","canreadagenda','caneditagenda","canreadagenda(rejectedpermissionnam","canreadinvoic","canreadinvoices','caneditinvoices','canuploadimag","cant","case","chain","chang","check","child","children","class","cli","client","code","coma","combin","come","comecompon","common","commonmodul","compat","complet","complex","compon","componentnam","configur","congrat","console.log(data","console.log(permiss","const","constructor(priv","consum","contain","content","control","convent","correspond","creat","current","custom","customis","dashboard","data","day","declar","default","defin","definepermiss","definit","delet","deletemeet","demo","deni","dep","depend","descript","desir","detail","determin","dev","develop","dictionaryservic","differ","differenti","direct","directori","display","dist","distinguish","document","don't","dont","ds","ds.load().then((data","dynam","dynamic/:id","e.g","e2","each","easi","easier","easili","editarticl","editev","editmeet","editor","element","elseblock","emit","end","even","eventemitt","exampl","except","exclud","execut","expect","explan","explicitli","export","expos","extra","extract","fallback","fals","familiar","featur","file","find","fire","first","flag","flushrol","follow","forchild","form","forroot","found","freeli","fulfil","function","function/servic","gener","get","getpermiss","getrol","given","go","gonna","good","googl","grant","great","group","guard","guest","handi","handl","have","here","higher","home","home/:isedit","home/home.compon","homecompon","html","http","http://localhost:4200","httpclient","https://github.com/angular/angular/issues/15670","id","identifi","if(activateroutesnapshot.params['id","imagin","implement","import","importantabov","importantif","importantnotic","includ","index","individu","inject","injector","insid","instal","instanc","instead","intend","interfac","intern","interpret","introduct","invalid","invoic","invok","isauthor","isol","isolatecompon","it'","iter","johni","js","karma","key","khymenko","know","lazi","lazyisolatedloadedmodul","lazyloadedmodul","leav","let'","level","librari","licens","list","listarticl","listev","listmeet","listsong","littl","load","loadchildren","loadpermiss","loadservic","local","log","logic","login","lot","lowercamelcas","made","main","make","manag","manipul","manual","match","mean","meaning","meet","met","method","minim","miss","mit","moder","modifi","modul","module.module#lazymodul","module/lazi","month","more","multi","multipl","name","navig","navigate(command","navigationcommand","navigationextra","necessari","need","never","new","next","ng","ng2","ngif","ngmodul","ngoninit","ngx","ngxpermiss","ngxpermissionsels","ngxpermissionsexcept","ngxpermissionsguard","ngxpermissionsmodul","ngxpermissionsmodule.forchild","ngxpermissionsmodule.forroot","ngxpermissionsonli","ngxpermissionsservic","ngxpermissionsservice.flushpermissions();altern","ngxpermissionsservice.getpermiss","ngxpermissionsservice.loadpermissions(permiss","ngxpermissionsservice.permissions$.subscribe((permiss","ngxpermissionsservice.removepermission('user');retriev","ngxpermissionsthen","ngxrolesservic","ngxrolesservice.addrole('guest","ngxrolesservice.flushroles();altern","ngxrolesservice.getrol","ngxrolesservice.getrole('rolename');and","ngxrolesservice.removerole('user');get","ngxrolesservice.roles$.subscribe((data","note","noteit'","noterememb","noteus","notic","now","npm","object","observ","older","oleksandr","on","onc","oninit","only/except","opaquetoken","option","order","otherwis","out","over","overview","page","page.in","pair","param","paramet","parent","pass","path","perform","perm","permiss","permission/rol","permissionnam","permissionnamea","permissionnameb","permissionnamec","permissions/rol","permissionsauthor","permissionsisol","permissionsobject","permissionsobject[permissionnam","permissionsservic","permissionstor","permissionstore[permissionnam","permissionsunauthor","pipe","plunker","point","present","privat","privileg","prod","product","profil","programm","project","promis","promise.reject","promise.resolv","promise.resolve(fals","properli","properti","protractor","provid","ps","ps.loadpermissions(data","put","readdocu","readi","readm","receiv","redirect","redirectto","redirecttofunc","redirecttofunc(rejectedpermissionnam","refer","reject","rejectedpermissionnam","reli","reload","rememb","remov","removepermiss","removerol","repres","request","requir","reserv","resolv","resourc","rest","restrict","result","retriev","return","right","role","role/permiss","rolenam","roles/permiss","rolesisol","rolesservic","root","rout","route'","route.params['id","router.navig","routermodul","routermodule.forroot(approut","routerstatesnapshot","routestatesnapshot","rule","rule(","run","rxj","same","saveand","saveconsum","second","secur","see","seemeet","selector","separ","serv","server","server/brows","servic","session","set","sever","share","sharedmodul","show","show/hid","shown","side","similar","similarli","simpl","simplest","simpli","simplifi","singl","single/multipl","site","situat","skiplocationchang","skull","smallest","sourc","special","specif","specifi","start","state","static","stop","store","strategi","string","structur","style","styleurl","suffici","support","sure","switch","syntax","tabl","target","technic","tell","templat","templateurl","test","testpermiss","testpermissions(rout","text","thank","then((permiss","thenblock","think","this.authpermissions.getpermissions('url","this.checksession().topromis","this.http.get('url').subscribe((permiss","this.permissions.service.loadpermissions(obj.permiss","this.permissions.service.loadpermissions(permiss","this.permissionsservice.addpermission('anotherpermiss","this.permissionsservice.addpermission('changesometh","this.permissionsservice.addpermission('permiss","this.permissionsservice.addpermission(['anotherpermiss","this.permissionsservice.addpermission(['changesometh","this.permissionsservice.loadpermissions(perm","this.permissionsservice.loadpermissions(permiss","this.sessionservice.checksession().topromis","this.sessionservice.checksessions().topromis","those","time","titl","togeth","transit","transitionproperti","treat","tree","tri","true","two","type","unauthor","understand","unit","up","upper_cas","url","us","usag","usefactori","user","util","valid","valu","var","verb","veri","verifi","version","via","view","visibl","visit","void","want","warn","warningbelow","warningthi","weather","web","well","whenev","wiki","word","work","workflow","wrap","ye"],"/overview.html":["3","4","7","9","appcompon","appmodul","approutingmodul","bootstrap","browsermodul","class","cluster_appmodul","cluster_appmodule_bootstrap","cluster_appmodule_import","cluster_lazyisolatemodul","cluster_lazyisolatemodule_import","cluster_lazyisolateroutingmodul","cluster_lazyisolateroutingmodule_export","cluster_lazyisolateroutingmodule_import","cluster_lazymodul","cluster_lazymodule_import","cluster_lazyroleisolatemodul","cluster_lazyroleisolatemodule_import","cluster_lazyrolesasyncisolatemodul","cluster_lazyrolesasyncisolatemodule_import","cluster_ngxpermissionsallowstubmodul","cluster_ngxpermissionsallowstubmodule_export","cluster_ngxpermissionsmodul","cluster_ngxpermissionsmodule_export","cluster_ngxpermissionsrestrictstubmodul","cluster_ngxpermissionsrestrictstubmodule_export","commonmodul","compon","declar","depend","direct","export","inject","interfac","lazyisolateasyncrolesroutingmodul","lazyisolatemodul","lazyisolaterolesroutingmodul","lazyisolateroutingmodul","lazymodul","lazyroleisolatemodul","lazyrolesasyncisolatemodul","lazyroutingmodul","legend","match","modul","ngxpermissionsallowstubdirect","ngxpermissionsallowstubmodul","ngxpermissionsdirect","ngxpermissionsmodul","ngxpermissionsmodule.forchild","ngxpermissionsmodule.forchild(arg","ngxpermissionsmodule.forroot","ngxpermissionsrestrictstubdirect","ngxpermissionsrestrictstubmodul","out","overview","provid","reset","result","routermodul","routermodule.forchild(arg","zoom"],"/modules.html":["appmodul","brows","browser","lazyisolatemodul","lazyisolateroutingmodul","lazymodul","lazyroleisolatemodul","lazyrolesasyncisolatemodul","match","modul","ngxpermissionsallowstubmodul","ngxpermissionsmodul","ngxpermissionsrestrictstubmodul","result","support","svg"],"/modules/AppModule.html":["angular/cor","angular/platform","app","app.compon","appcompon","appmodul","approutingmodul","bootstrap","browser","browsermodul","class","cluster_appmodul","cluster_appmodule_bootstrap","cluster_appmodule_declar","cluster_appmodule_import","declar","depend","export","file","home/home.compon","homecompon","import","info","initi","initialloadcompon","legend","load.compon","load/initi","match","modul","ngmodul","ngx","ngxpermissionsmodul","ngxpermissionsmodule.forroot","out","permiss","provid","reset","result","routing.modul","sourc","src/app/app.module.t","zoom"],"/modules/LazyIsolateModule.html":["angular/common","angular/cor","bootstrap","class","cluster_lazyisolatemodul","cluster_lazyisolatemodule_declar","cluster_lazyisolatemodule_import","commonmodul","declar","depend","export","file","import","info","isol","isolate.module.t","isolate/isolate.compon","isolate/lazi","isolatecompon","lazi","lazyisolatemodul","lazyisolateroutingmodul","legend","match","modul","ngmodul","ngx","ngxpermissionsmodul","ngxpermissionsmodule.forchild(arg","ngxpermissionsmodule.forchild({permissionsisol","out","permiss","provid","reset","result","rolesisol","routing.modul","sourc","src/app/lazi","true","zoom"],"/modules/LazyIsolateRoutingModule.html":["adddmin","admin","angular/cor","angular/rout","approut","bootstrap","canactivatechild","candeactivateguard","children","class","cluster_lazyisolateroutingmodul","cluster_lazyisolateroutingmodule_export","cluster_lazyisolateroutingmodule_import","compon","const","data","declar","depend","except","export","file","guest","import","info","isol","isolate/isolate.compon","isolate/lazi","isolatecompon","lazyisolateroutingmodul","legend","match","modul","ngmodul","ngx","ngxpermissionsguard","out","path","permiss","provid","reset","result","rout","routermodul","routermodule.forchild(approut","routermodule.forchild(arg","routing.module.t","sourc","src/app/lazi","zoom"],"/modules/LazyModule.html":["angular/common","angular/cor","bootstrap","class","cluster_lazymodul","cluster_lazymodule_declar","cluster_lazymodule_import","commonmodul","component.compon","component/lazi","declar","depend","export","file","import","info","lazi","lazycomponentcompon","lazymodul","lazyroutingmodul","legend","match","modul","module.module.t","module/lazi","ngmodul","ngx","ngxpermissionsmodul","ngxpermissionsmodule.forchild","out","permiss","provid","reset","result","routing.modul","sourc","src/app/lazi","zoom"],"/modules/LazyRoleIsolateModule.html":["angular/common","angular/cor","bootstrap","class","cluster_lazyroleisolatemodul","cluster_lazyroleisolatemodule_declar","cluster_lazyroleisolatemodule_import","commonmodul","configurationisol","declar","depend","export","file","import","info","isol","isolate.module.t","isolate/lazi","lazi","lazyisolaterolesroutingmodul","lazyroleisolatemodul","lazyroleisolatetestcompon","legend","match","modul","ngmodul","ngx","ngxpermissionsmodul","ngxpermissionsmodule.forchild","ngxpermissionsmodule.forchild(arg","out","permiss","permissionsisol","provid","reset","result","role","rolesisol","routing.modul","sourc","src/app/lazi","test.compon","test/lazi","true","zoom"],"/modules/LazyRolesAsyncIsolateModule.html":["angular/common","angular/cor","async","asynctestservic","bootstrap","class","cluster_lazyrolesasyncisolatemodul","cluster_lazyrolesasyncisolatemodule_declar","cluster_lazyrolesasyncisolatemodule_import","cluster_lazyrolesasyncisolatemodule_provid","commonmodul","declar","depend","export","file","import","info","isol","isolate.module.t","isolate/lazi","lazi","lazyisolateasyncrolesroutingmodul","lazyrolesasyncisolatemodul","lazyrolesasynctestcompon","legend","match","modul","ngmodul","ngx","ngxpermissionsmodul","ngxpermissionsmodule.forchild","ngxpermissionsmodule.forchild(arg","out","permiss","permissionsisol","provid","reset","result","role","rolesisol","routing.modul","sourc","src/app/lazi","test.compon","test.servic","test/lazi","true","zoom"],"/modules/NgxPermissionsAllowStubModule.html":["allow.directive.stub","angular/cor","boolean","bootstrap","class","cluster_ngxpermissionsallowstubmodul","cluster_ngxpermissionsallowstubmodule_declar","cluster_ngxpermissionsallowstubmodule_export","compon","config.configurationisol","config.permissionsisol","config.rolesisol","configurationisol","data.model","declar","depend","directive/permissions.direct","enums/predefin","export","file","forchild(config","forroot(config","guard.servic","import","info","instanc","interfac","isol","lazi","legend","load","match","model/permiss","model/role.model","modul","modulewithprovid","ngmodul","ngxpermissionsallowstubdirect","ngxpermissionsallowstubmodul","ngxpermissionsconfigurationservic","ngxpermissionsconfigurationstor","ngxpermissionsdirect","ngxpermissionsguard","ngxpermissionsmodul","ngxpermissionsmoduleconfig","ngxpermissionsrestrictstubdirect","ngxpermissionsrestrictstubmodul","ngxpermissionsservic","ngxpermissionsstor","ngxrolesservic","ngxrolesstor","out","permissions/src/lib/index.t","permissionsisol","projects/ngx","properti","provid","reset","restrict.directive.stub","result","return","rolesisol","router","router/permiss","servic","service/configuration.servic","service/permissions.servic","service/roles.servic","sourc","static","store/configuration.stor","store/permissions.stor","store/roles.stor","strategies.enum","testing/permiss","use_configuration_stor","use_permissions_stor","use_roles_stor","usevalu","work","zoom"],"/modules/NgxPermissionsModule.html":["allow.directive.stub","angular/cor","boolean","bootstrap","class","cluster_ngxpermissionsmodul","cluster_ngxpermissionsmodule_declar","cluster_ngxpermissionsmodule_export","compon","config.configurationisol","config.permissionsisol","config.rolesisol","configurationisol","data.model","declar","depend","directive/permissions.direct","enums/predefin","export","file","forchild(config","forroot(config","guard.servic","import","info","instanc","interfac","isol","lazi","legend","load","match","model/permiss","model/role.model","modul","modulewithprovid","ngmodul","ngxpermissionsallowstubdirect","ngxpermissionsallowstubmodul","ngxpermissionsconfigurationservic","ngxpermissionsconfigurationstor","ngxpermissionsdirect","ngxpermissionsguard","ngxpermissionsmodul","ngxpermissionsmoduleconfig","ngxpermissionsrestrictstubdirect","ngxpermissionsrestrictstubmodul","ngxpermissionsservic","ngxpermissionsstor","ngxrolesservic","ngxrolesstor","out","permissions/src/lib/index.t","permissionsisol","projects/ngx","properti","provid","reset","restrict.directive.stub","result","return","rolesisol","router","router/permiss","servic","service/configuration.servic","service/permissions.servic","service/roles.servic","sourc","static","store/configuration.stor","store/permissions.stor","store/roles.stor","strategies.enum","testing/permiss","use_configuration_stor","use_permissions_stor","use_roles_stor","usevalu","work","zoom"],"/modules/NgxPermissionsRestrictStubModule.html":["allow.directive.stub","angular/cor","boolean","bootstrap","class","cluster_ngxpermissionsrestrictstubmodul","cluster_ngxpermissionsrestrictstubmodule_declar","cluster_ngxpermissionsrestrictstubmodule_export","compon","config.configurationisol","config.permissionsisol","config.rolesisol","configurationisol","data.model","declar","depend","directive/permissions.direct","enums/predefin","export","file","forchild(config","forroot(config","guard.servic","import","info","instanc","interfac","isol","lazi","legend","load","match","model/permiss","model/role.model","modul","modulewithprovid","ngmodul","ngxpermissionsallowstubdirect","ngxpermissionsallowstubmodul","ngxpermissionsconfigurationservic","ngxpermissionsconfigurationstor","ngxpermissionsdirect","ngxpermissionsguard","ngxpermissionsmodul","ngxpermissionsmoduleconfig","ngxpermissionsrestrictstubdirect","ngxpermissionsrestrictstubmodul","ngxpermissionsservic","ngxpermissionsstor","ngxrolesservic","ngxrolesstor","out","permissions/src/lib/index.t","permissionsisol","projects/ngx","properti","provid","reset","restrict.directive.stub","result","return","rolesisol","router","router/permiss","servic","service/configuration.servic","service/permissions.servic","service/roles.servic","sourc","static","store/configuration.stor","store/permissions.stor","store/roles.stor","strategies.enum","testing/permiss","use_configuration_stor","use_permissions_stor","use_roles_stor","usevalu","work","zoom"],"/components/AppComponent.html":["2","actual_compon","add","addpermiss","admin","adminnnnnnn","angular/cor","app","app.component.css","app.component.html","appcompon","async","author","block","both","check","class","compon","component'},{'nam","component_templ","console.log('author","console.log('unauthor","constructor","constructor(permissionsservic","constructor(priv","creat","default","defin","direct","dom","dynam","element","except","export","file","gggggggggg87687687687gggggggggg","go","guest","home","home'},{'nam","homecompon","html","implement","import","info","initi","initialloadcompon","isol","isolate'},{'nam","isolateadd","isolatecompon","isolatelazi","lazi","lazycomponentcompon","lazyroleisolatetestcompon","lazyrolesasynctestcompon","legend","load","load'},{'nam","loadcreat","match","metadata","method","modul","modulelazi","name","ngoninit","ngx","ngxpermissionsallowstubdirect","ngxpermissionsdirect","ngxpermissionsonly],[ngxpermissionsexcept","ngxpermissionsonly],[ngxpermissionsexcept]'},{'nam","ngxpermissionsrestrictstubdirect","ngxpermissionsservic","oninit","page","permiss","permissionsservic","properti","public","result","return","role","root","root'},{'nam","rout","routeslazi","see","selector","sourc","src/app/app.component.t","src/app/app.component.ts:10","src/app/app.component.ts:15","src/app/app.component.ts:19","src/app/app.component.ts:23","src/app/app.component.ts:27","string","styleurl","templat","templatest","templatest234234","templateurl","test","test'},{'nam","this.permissionsservice.addpermission('check_load","this.permissionsservice.loadpermissions(['admin","through","titl","tree","unauthor","us","usag","user","valu","var","void","welcom"],"/components/HomeComponent.html":["actual_compon","angular/cor","app","appcompon","async","bank","class","compon","component'},{'nam","component_templ","constructor","defin","direct","dom","element","export","file","home","home'},{'nam","home.component.css","home.component.html","homecompon","html","implement","import","info","initi","initialloadcompon","isol","isolate'},{'nam","isolatecompon","lazi","lazycomponentcompon","lazyroleisolatetestcompon","lazyrolesasynctestcompon","legend","load'},{'nam","match","metadata","method","name","ngoninit","ngxpermissionsallowstubdirect","ngxpermissionsdirect","ngxpermissionsonly],[ngxpermissionsexcept","ngxpermissionsonly],[ngxpermissionsexcept]'},{'nam","ngxpermissionsrestrictstubdirect","oninit","result","return","role","root'},{'nam","selector","sourc","src/app/home/home.component.t","src/app/home/home.component.ts:12","src/app/home/home.component.ts:8","styleurl","templat","templateurl","test","test'},{'nam","tree","var","void","work","works!bank"],"/components/InitialLoadComponent.html":["actual_compon","angular/cor","app","appcompon","async","class","compon","component'},{'nam","component_templ","console.log('i","constructor","defin","direct","dom","element","export","file","home'},{'nam","homecompon","html","implement","import","info","initi","initialloadcompon","isol","isolate'},{'nam","isolatecompon","lazi","lazycomponentcompon","lazyroleisolatetestcompon","lazyrolesasynctestcompon","legend","load","load'},{'nam","load.component.css","load.component.html","load.component.t","load.component.ts:12","load.component.ts:8","load/initi","loge","m","match","metadata","method","name","ngoninit","ngxpermissionsallowstubdirect","ngxpermissionsdirect","ngxpermissionsonly],[ngxpermissionsexcept","ngxpermissionsonly],[ngxpermissionsexcept]'},{'nam","ngxpermissionsrestrictstubdirect","oninit","result","return","role","root'},{'nam","selector","sourc","src/app/initi","styleurl","templat","templateurl","test","test'},{'nam","tree","var","void","work"],"/components/IsolateComponent.html":["actual_compon","admin","angular/cor","app","appcompon","async","back","class","compon","component'},{'nam","component_templ","constructor","defin","direct","dom","element","end","except","exceptshould","export","file","go","guest","guestttt","home'},{'nam","homecompon","html","implement","import","info","initi","initialloadcompon","isol","isolate'},{'nam","isolate.component.css","isolate.component.html","isolate/isolate/isolate.component.t","isolate/isolate/isolate.component.ts:10","isolate/isolate/isolate.component.ts:14","isolatecompon","lazi","lazycomponentcompon","lazyroleisolatetestcompon","lazyrolesasynctestcompon","legend","load'},{'nam","match","metadata","method","modul","name","ngoninit","ngx","ngxpermissionsallowstubdirect","ngxpermissionsdirect","ngxpermissionsonly],[ngxpermissionsexcept","ngxpermissionsonly],[ngxpermissionsexcept]'},{'nam","ngxpermissionsrestrictstubdirect","ngxpermissionsservic","ngxrolesservic","oninit","onlyshould","page","permiss","result","return","role","root'},{'nam","see","selector","someth","sourc","src/app/lazi","styleurl","templat","templateurl","test","test'},{'nam","tree","var","void","work","works!backshould"],"/components/LazyComponentComponent.html":["actual_compon","admin","adminnnnnnn","angular/cor","app","appcompon","async","back","backshould","class","compon","component'},{'nam","component.component.css","component.component.html","component.component.t","component.component.ts:12","component.component.ts:8","component/lazi","component_templ","constructor","defin","direct","dom","element","end","except","exceptshould","export","file","go","guest","home'},{'nam","homecompon","html","implement","import","info","initi","initialloadcompon","isol","isolate'},{'nam","isolatecompon","lazi","lazycomponentcompon","lazyroleisolatetestcompon","lazyrolesasynctestcompon","legend","load'},{'nam","match","metadata","method","modul","module/lazi","name","ngoninit","ngxpermissionsallowstubdirect","ngxpermissionsdirect","ngxpermissionsonly],[ngxpermissionsexcept","ngxpermissionsonly],[ngxpermissionsexcept]'},{'nam","ngxpermissionsrestrictstubdirect","oninit","onlyshould","page","result","return","role","root'},{'nam","see","selector","sourc","src/app/lazi","styleurl","templat","templateurl","test","test'},{'nam","tree","var","void","work"],"/components/LazyRoleIsolateTestComponent.html":["actual_compon","admin","angular/cor","app","appcompon","async","back","class","compon","component'},{'nam","component_templ","configservic","constructor","constructor(priv","constructor(rolesservic","defin","direct","disabl","dom","element","end","except","exceptshould","export","file","go","guest","guestttt","home'},{'nam","homecompon","html","implement","import","info","initi","initialloadcompon","isol","isolate'},{'nam","isolate/lazi","isolatecompon","lazi","lazycomponentcompon","lazyroleisolatetestcompon","lazyrolesasynctestcompon","legend","load'},{'nam","match","metadata","method","modul","name","ngoninit","ngx","ngxpermissionsallowstubdirect","ngxpermissionsconfigurationservic","ngxpermissionsdirect","ngxpermissionsonly],[ngxpermissionsexcept","ngxpermissionsonly],[ngxpermissionsexcept]'},{'nam","ngxpermissionsrestrictstubdirect","ngxpermissionsservic","ngxrolesservic","nice","oninit","onlyshould","page","permiss","permissionsservic","privat","render","renderer2","result","return","role","rolesservic","root'},{'nam","see","selector","someth","sourc","src/app/lazi","styleurl","templat","templateref","templateurl","test","test'},{'nam","test.component.css","test.component.html","test.component.t","test.component.ts:16","test.component.ts:9","test/lazi","tf","this.configservice.addpermissionstrategy('lol","this.configservice.setdefaultonunauthorizedstrategy('lol","this.permissionsservice.addpermission('admin","this.renderer.setattribute(tf.elementref.nativeelement.nexts","this.rolesservice.addrole('admin","tree","true","var","void","work","works!backshould"],"/components/LazyRolesAsyncTestComponent.html":["actual_compon","admin","angular/cor","app","appcompon","async","asynctest","asynctestservic","back","class","compon","component'},{'nam","component_templ","console.log(this.rolesservices.getrol","constructor","constructor(priv","constructor(rolesservic","defin","direct","dom","element","end","except","exceptshould","export","fals","file","go","guest","home'},{'nam","homecompon","html","implement","import","info","initi","initialloadcompon","isol","isolate'},{'nam","isolate/lazi","isolatecompon","la","lazi","lazycomponentcompon","lazyroleisolatetestcompon","lazyrolesasynctestcompon","legend","load'},{'nam","match","metadata","method","modul","name","ngoninit","ngx","ngxpermissionsallowstubdirect","ngxpermissionsdirect","ngxpermissionsonly],[ngxpermissionsexcept","ngxpermissionsonly],[ngxpermissionsexcept]'},{'nam","ngxpermissionsrestrictstubdirect","ngxrolesservic","oninit","onlyshould","page","permiss","privat","reject","resolv","result","return","role","rolesservic","root'},{'nam","see","selector","someth","sourc","src/app/lazi","styleurl","templat","templateurl","test","test'},{'nam","test.component.css","test.component.html","test.component.t","test.component.ts:10","test.component.ts:14","test.servic","test/lazi","this.asynctest.promisereject","this.asynctest.promiseresolvefals","this.asynctest.promiseresolvetru","this.rolesservices.addrole(\"admin_fals","this.rolesservices.addrole(\"admin_reject","this.rolesservices.addrole(\"admin_resolve_fals","this.rolesservices.addrole(\"admin_resolve_tru","this.rolesservices.addrole(\"admin_tru","tree","true","var","void","work","works!backshould"],"/directives/NgxPermissionsAllowStubDirective.html":["allow.directive.stub.t","allow.directive.stub.ts:10","allow.directive.stub.ts:12","allow.directive.stub.ts:13","allow.directive.stub.ts:14","allow.directive.stub.ts:16","allow.directive.stub.ts:17","allow.directive.stub.ts:19","allow.directive.stub.ts:20","allow.directive.stub.ts:27","allow.directive.stub.ts:36","allow.directive.stub.ts:8","allow.directive.stub.ts:9","angular/cor","class","constructor","constructor(priv","constructor(viewcontain","defin","direct","event","eventemitt","export","file","getauthorizedtempl","implement","import","info","input","match","metadata","method","new","ngoninit","ngxpermissionsallowstubdirect","ngxpermissionsels","ngxpermissionsexcept","ngxpermissionsexceptels","ngxpermissionsexceptthen","ngxpermissionsonli","ngxpermissionsonly],[ngxpermissionsexcept","ngxpermissionsonlyels","ngxpermissionsonlythen","ngxpermissionsthen","oninit","output","permissions/src/lib/testing/permiss","permissionsauthor","permissionsunauthor","privat","projects/ngx","result","return","selector","sourc","string","templateref","this.getauthorizedtempl","this.ngxpermissionsexceptthen","this.ngxpermissionsonlythen","this.ngxpermissionsthen","this.permissionsunauthorized.emit","this.templateref","this.viewcontainer.clear","this.viewcontainer.createembeddedview(this.getauthorizedtempl","type","viewcontain","viewcontainerref","void"],"/directives/NgxPermissionsDirective.html":["1","angular/cor","applystrategi","applystrategy(str","boolean","catch","caus","class","configurationservic","const","constructor","constructor(permissionsservic","currentauthorizedst","default","defin","direct","enums/predefin","event","eventemitt","export","fals","file","fire","first","firstmergeunusedrun","function)(this.templateref","getauthorisedtempl","handleauthorisedpermiss","handleauthorisedpermission(templ","handleunauthorisedpermiss","handleunauthorisedpermission(templ","haspermiss","hasrol","implement","import","info","initpermissionsubscript","input","isboolean","isboolean(this.currentauthorizedst","isfunct","isfunction(this.onlyauthorisedstrategydefin","isfunction(this.unauthorisedstrategydefin","isstr","isstring(this.onlyauthorisedstrategydefin","isstring(this.unauthorisedstrategydefin","match","merg","merge(this.permissionsservice.permiss","metadata","method","new","ngondestroy","ngoninit","ngxpermissionsauthorisedstrategi","ngxpermissionsconfigurationservic","ngxpermissionsdirect","ngxpermissionsels","ngxpermissionsexcept","ngxpermissionsexceptauthorisedstrategi","ngxpermissionsexceptels","ngxpermissionsexceptthen","ngxpermissionsexceptunauthorisedstrategi","ngxpermissionsonli","ngxpermissionsonly],[ngxpermissionsexcept","ngxpermissionsonlyauthorisedstrategi","ngxpermissionsonlyels","ngxpermissionsonlythen","ngxpermissionsonlyunauthorisedstrategi","ngxpermissionspredefinedstrategi","ngxpermissionspredefinedstrategies.remov","ngxpermissionspredefinedstrategies.show","ngxpermissionsservic","ngxpermissionsthen","ngxpermissionsunauthorisedstrategi","ngxrolesservic","noelseblockdefin","notemptyvalu","notemptyvalue(this.ngxpermissionsexcept","notemptyvalue(this.ngxpermissionsonli","nothenblockdefin","number","ondestroy","oninit","onlyauthorisedstrategydefin","output","permissionpr","permissions/src/lib/directive/permissions.directive.t","permissions/src/lib/directive/permissions.directive.ts:100","permissions/src/lib/directive/permissions.directive.ts:113","permissions/src/lib/directive/permissions.directive.ts:138","permissions/src/lib/directive/permissions.directive.ts:15","permissions/src/lib/directive/permissions.directive.ts:16","permissions/src/lib/directive/permissions.directive.ts:161","permissions/src/lib/directive/permissions.directive.ts:17","permissions/src/lib/directive/permissions.directive.ts:170","permissions/src/lib/directive/permissions.directive.ts:177","permissions/src/lib/directive/permissions.directive.ts:181","permissions/src/lib/directive/permissions.directive.ts:185","permissions/src/lib/directive/permissions.directive.ts:19","permissions/src/lib/directive/permissions.directive.ts:191","permissions/src/lib/directive/permissions.directive.ts:197","permissions/src/lib/directive/permissions.directive.ts:20","permissions/src/lib/directive/permissions.directive.ts:21","permissions/src/lib/directive/permissions.directive.ts:23","permissions/src/lib/directive/permissions.directive.ts:24","permissions/src/lib/directive/permissions.directive.ts:26","permissions/src/lib/directive/permissions.directive.ts:27","permissions/src/lib/directive/permissions.directive.ts:29","permissions/src/lib/directive/permissions.directive.ts:30","permissions/src/lib/directive/permissions.directive.ts:32","permissions/src/lib/directive/permissions.directive.ts:33","permissions/src/lib/directive/permissions.directive.ts:35","permissions/src/lib/directive/permissions.directive.ts:36","permissions/src/lib/directive/permissions.directive.ts:38","permissions/src/lib/directive/permissions.directive.ts:40","permissions/src/lib/directive/permissions.directive.ts:41","permissions/src/lib/directive/permissions.directive.ts:52","permissions/src/lib/directive/permissions.directive.ts:57","permissions/src/lib/directive/permissions.directive.ts:63","permissions/src/lib/directive/permissions.directive.ts:79","permissionsauthor","permissionsservic","permissionsunauthor","pipe(skip(this.firstmergeunusedrun","privat","projects/ngx","promise.al","properti","result","return","role","rolesservic","run","rxj","rxjs/oper","selector","service/configuration.servic","service/permissions.servic","service/roles.servic","showtemplateblockinview","showtemplateblockinview(templ","skip","sourc","str","strategi","strategies.enum","strategy(this.templateref","strategyfunct","string","subscrib","subscript","templat","templateref","this.applystrategy(this.configurationservice.onauthoriseddefaultstrategi","this.applystrategy(this.configurationservice.onunauthoriseddefaultstrategi","this.applystrategy(this.onlyauthorisedstrategydefin","this.applystrategy(this.unauthorisedstrategydefin","this.configurationservice.getstrategy(str","this.configurationservice.onauthoriseddefaultstrategi","this.configurationservice.onunauthoriseddefaultstrategi","this.currentauthorizedst","this.handleauthorisedpermission(this.getauthorisedtempl","this.handleauthorisedpermission(this.ngxpermissionsexceptthen","this.handleauthorisedpermission(this.ngxpermissionsonlythen","this.handleunauthorisedpermission(this.ngxpermissionsexceptels","this.handleunauthorisedpermission(this.ngxpermissionsonlyels","this.initpermissionsubscript","this.initpermissionsubscription.unsubscrib","this.ngxpermissionsauthorisedstrategi","this.ngxpermissionsels","this.ngxpermissionsexceptauthorisedstrategi","this.ngxpermissionsexceptels","this.ngxpermissionsexceptthen","this.ngxpermissionsexceptunauthorisedstrategi","this.ngxpermissionsonli","this.ngxpermissionsonlyauthorisedstrategi","this.ngxpermissionsonlythen","this.ngxpermissionsonlyunauthorisedstrategi","this.ngxpermissionsthen","this.ngxpermissionsunauthorisedstrategi","this.noelseblockdefin","this.nothenblockdefin","this.onlyauthorisedstrategydefin","this.permissionsauthorized.emit","this.permissionsservice.haspermission(this.ngxpermissionsexcept","this.permissionsservice.haspermission(this.ngxpermissionsonli","this.permissionsunauthorized.emit","this.rolesservice.hasonlyroles(this.ngxpermissionsexcept","this.rolesservice.hasonlyroles(this.ngxpermissionsonli","this.rolesservice.rol","this.showtemplateblockinview(templ","this.showtemplateblockinview(this.templateref","this.templateref","this.unauthorisedstrategydefin","this.validateexceptandonlypermiss","this.validateexceptonlypermiss","this.validateonlypermiss","this.viewcontainer.clear","this.viewcontainer.createembeddedview(templ","throw","true","twice","type","unauthorisedstrategydefin","utils/util","validateexceptandonlypermiss","validateexceptonlypermiss","validateonlypermiss","valu","viewcontain","viewcontainerref","void"],"/directives/NgxPermissionsRestrictStubDirective.html":["angular/cor","class","constructor","constructor(priv","constructor(viewcontain","defin","direct","event","eventemitt","export","file","getunauthorizedtempl","implement","import","info","input","match","metadata","method","new","ngoninit","ngxpermissionsels","ngxpermissionsexcept","ngxpermissionsexceptels","ngxpermissionsexceptthen","ngxpermissionsonli","ngxpermissionsonly],[ngxpermissionsexcept","ngxpermissionsonlyels","ngxpermissionsonlythen","ngxpermissionsrestrictstubdirect","ngxpermissionsthen","oninit","output","permissions/src/lib/testing/permiss","permissionsauthor","permissionsunauthor","privat","projects/ngx","restrict.directive.stub.t","restrict.directive.stub.ts:10","restrict.directive.stub.ts:12","restrict.directive.stub.ts:13","restrict.directive.stub.ts:14","restrict.directive.stub.ts:16","restrict.directive.stub.ts:17","restrict.directive.stub.ts:19","restrict.directive.stub.ts:20","restrict.directive.stub.ts:26","restrict.directive.stub.ts:35","restrict.directive.stub.ts:8","restrict.directive.stub.ts:9","result","return","selector","sourc","string","templateref","this.getunauthorizedtempl","this.ngxpermissionsels","this.ngxpermissionsexceptels","this.ngxpermissionsonlyels","this.permissionsunauthorized.emit","this.viewcontainer.clear","this.viewcontainer.createembeddedview(this.getunauthorizedtempl","type","viewcontain","viewcontainerref","void"],"/injectables/AsyncTestService.html":["angular/cor","async","asynctestservic","class","constructor","defin","export","file","import","info","inject","isolate/async","match","method","promise.reject","promise.resolve(fals","promise.resolve(tru","promisereject","promiseresolvefals","promiseresolvetru","public","result","return","role","sourc","src/app/lazi","test.service.t","test.service.ts:13","test.service.ts:17","test.service.ts:4","test.service.ts:9","void"],"/injectables/NgxPermissionsConfigurationService.html":["addpermissionstrategi","addpermissionstrategy(key","angular/cor","behaviorsubject","boolean","class","configurationstor","const","constructor","constructor(isol","defin","enums/predefin","error(`no","export","fals","file","found","func","getallstrategi","getstrategi","getstrategy(key","import","info","inject","inject(use_configuration_stor","injectiontoken","injectiontoken('use_configuration_stor","isol","key","match","method","name","new","ngxpermissionsconfigurationservic","ngxpermissionsconfigurationstor","ngxpermissionspredefinedstrategi","ngxpermissionspredefinedstrategies.remov","ngxpermissionspredefinedstrategies.show","observ","on","onauthoriseddefaultstrategi","onunauthoriseddefaultstrategi","permissions/src/lib/service/configuration.service.t","permissions/src/lib/service/configuration.service.ts:17","permissions/src/lib/service/configuration.service.ts:18","permissions/src/lib/service/configuration.service.ts:19","permissions/src/lib/service/configuration.service.ts:20","permissions/src/lib/service/configuration.service.ts:34","permissions/src/lib/service/configuration.service.ts:42","permissions/src/lib/service/configuration.service.ts:50","permissions/src/lib/service/configuration.service.ts:54","permissions/src/lib/service/configuration.service.ts:58","permissions/src/lib/service/configuration.service.ts:62","pleas","predefinedstrategi","predefinedstrategy(strategi","privat","projects/ngx","properti","public","remov","result","return","rxj","setdefaultonauthorizedstrategi","setdefaultonauthorizedstrategy(nam","setdefaultonunauthorizedstrategi","setdefaultonunauthorizedstrategy(nam","show","sourc","store/configuration.stor","strategi","strategies.enum","strategiessourc","strategyfunct","string","templateref","this.configurationstore.onauthoriseddefaultstrategi","this.configurationstore.onunauthoriseddefaultstrategi","this.configurationstore.strategiessourc","this.isol","this.onauthoriseddefaultstrategi","this.onunauthoriseddefaultstrategi","this.predefinedstrategy(nam","this.strategi","this.strategiessourc","this.strategiessource.asobserv","this.strategiessource.valu","throw","type","undefin","use_configuration_stor","void"],"/injectables/NgxPermissionsConfigurationStore.html":["angular/cor","behaviorsubject","class","constructor","defin","export","file","import","info","inject","match","new","ngxpermissionsconfigurationstor","observ","onauthoriseddefaultstrategi","onunauthoriseddefaultstrategi","permissions/src/lib/store/configuration.store.t","permissions/src/lib/store/configuration.store.ts:11","permissions/src/lib/store/configuration.store.ts:12","permissions/src/lib/store/configuration.store.ts:8","permissions/src/lib/store/configuration.store.ts:9","projects/ngx","properti","public","result","rxj","service/configuration.servic","sourc","strategi","strategiessourc","string","this.strategiessource.asobserv","undefin"],"/injectables/NgxPermissionsGuard.html":["0","_data","activatedroutesnapshot","angular/cor","angular/rout","any[]).pip","array.isarray(redirectto","boolean","canactiv","canactivate(rout","canactivatechild","canactivatechild(childrout","canload","canload(rout","checkonlypermiss","checkonlypermissions(purepermiss","class","const","constructor","constructor(permissionsservic","constructor(priv","data","data.every((_data","data.model","data.some((_data","defin","donthavepermiss","export","fail","failedpermiss","failedpermissionnam","fals","file","first","first((data","forkjoin","from(permissions.except","from(permissions.only).pip","function","function)(failedpermissionnam","function)(rout","guard.service.t","guard.service.ts:139","guard.service.ts:181","guard.service.ts:185","guard.service.ts:190","guard.service.ts:195","guard.service.ts:241","guard.service.ts:258","guard.service.ts:262","guard.service.ts:284","guard.service.ts:29","guard.service.ts:34","guard.service.ts:38","guard.service.ts:42","guard.service.ts:46","guard.service.ts:61","guard.service.ts:80","guard.service.ts:84","handleredirectoffailedpermiss","handleredirectoffailedpermission(permiss","hasnavigationcommandsasfunct","hasnavigationcommandsasfunction(redirectto","hasnavigationextrasasfunct","hasnavigationextrasasfunction(redirectto","haspermiss","haspermission.every((_data","haspermissions(rout","haspermissions.every((_data","implement","import","info","inject","interfac","isallfals","isfailedpermissionpropertyofredirectto","isfailedpermissionpropertyofredirectto(permiss","isfunct","isfunction((redirectto).navigationcommand","isfunction((redirectto).navigationextra","isfunction(permissions.except","isfunction(permissions.onli","isfunction(permissions.redirectto","isfunction(redirectto","isparameteravail","isparameteravailable(permiss","isplainobject","isplainobject(object","isplainobject(permissions.redirectto","isredirectionwithparamet","isredirectionwithparameters(object","match","mergemap","mergemap((data","mergemap((isallfals","mergemap((pass","method","model/permiss","navigationcommand","navigationextra","ngxpermissionsguard","ngxpermissionsrouterdata","ngxpermissionsservic","ngxredirecttonavigationparamet","ngxrolesservic","object.navigationcommand","object.navigationextra","observ","of(!isallfals","of(!pass","of(fals","of(tru","onlyredirectcheck","onlyredirectcheck(permiss","pass","passingexceptpermissionsvalid","passingexceptpermissionsvalidation(permiss","passingonlypermissionsvalid","passingonlypermissionsvalidation(permiss","permiss","permission.length","permissions.except","permissions.onli","permissions.redirectto","permissions.redirectto[failedpermiss","permissions/src/lib/router/permiss","permissionspr","permissionsservic","pipe","pipe(tap((haspermiss","privat","projects/ngx","promis","promise.al","purepermiss","redirectto","redirectto).navigationcommand","redirectto).navigationextra","redirecttoanotherrout","redirecttoanotherroute(redirectto","result","return","role","rolesservic","rout","route.data","route.data['permiss","router","routerstatesnapshot","rxj","rxjs/oper","service/permissions.servic","service/roles.servic","sourc","state","string","tap","tap((haspermiss","then(([permissionspr","this.checkonlypermissions(permiss","this.handleredirectoffailedpermission(permiss","this.hasnavigationcommandsasfunction(redirectto","this.hasnavigationextrasasfunction(redirectto","this.haspermissions(childrout","this.haspermissions(rout","this.isfailedpermissionpropertyofredirectto(permiss","this.isparameteravailable(permissions.except","this.isparameteravailable(permissions.onli","this.isredirectionwithparameters(permissions.redirectto","this.isredirectionwithparameters(redirectto","this.onlyredirectcheck(permiss","this.passingexceptpermissionsvalidation(permiss","this.passingonlypermissionsvalidation(permiss","this.permissionsservice.haspermission(data","this.permissionsservice.haspermission(permissions.except","this.permissionsservice.haspermission(permissions.onli","this.redirecttoanotherroute((permissions.redirectto","this.redirecttoanotherroute((permissions.redirectto)['default","this.redirecttoanotherroute((permissions.redirectto)[failedpermiss","this.redirecttoanotherroute(permissions.redirectto","this.rolesservice.hasonlyroles(data","this.rolesservice.hasonlyroles(permissions.except","this.rolesservice.hasonlyroles(permissions.onli","this.router.navig","this.router.navigate([redirectto","this.router.navigate(redirectto","this.transformpermission(purepermiss","topromis","transformpermiss","transformpermission(purepermiss","transformstringtoarray","transformstringtoarray(permissions.except","transformstringtoarray(permissions.onli","true","utils/util","void"],"/injectables/NgxPermissionsService.html":["0","addpermiss","addpermission(permiss","angular/cor","array.isarray(permiss","behaviorsubject","boolean","catcherror","check","class","const","constructor","constructor(isol","data","defin","delet","export","fals","file","first","first((data","flushpermiss","from(promises).pip","function","getpermiss","getpermission(nam","hasarraypermiss","hasarraypermission(permiss","haspermiss","haspermission(permiss","haspermissionvalidationfunct","haspermissionvalidationfunction(key","immutablevalu","import","info","inject","inject(use_permissions_stor","injectiontoken","injectiontoken('use_permissions_stor","isboolean","isboolean(promis","isfunct","isfunction(this.permissionssource.valu","isfunction(validationfunct","isol","key","loadpermiss","loadpermissions(permiss","map","map((data","match","mergeal","method","model/permission.model","name","new","newpermiss","ngxpermiss","ngxpermissionsobject","ngxpermissionsservic","ngxpermissionsstor","observ","observableinput","of(!!this.permissionssource.valu","of(fals","of(null).pip","of(promis","p","permiss","permission.length","permission.reduce((sourc","permissionnam","permissions.map((key","permissions.reduce((sourc","permissions/src/lib/service/permissions.service.t","permissions/src/lib/service/permissions.service.ts:101","permissions/src/lib/service/permissions.service.ts:126","permissions/src/lib/service/permissions.service.ts:18","permissions/src/lib/service/permissions.service.ts:19","permissions/src/lib/service/permissions.service.ts:32","permissions/src/lib/service/permissions.service.ts:36","permissions/src/lib/service/permissions.service.ts:45","permissions/src/lib/service/permissions.service.ts:53","permissions/src/lib/service/permissions.service.ts:67","permissions/src/lib/service/permissions.service.ts:75","permissions/src/lib/service/permissions.service.ts:79","permissions/src/lib/service/permissions.service.ts:83","permissionssourc","permissionsstor","permissionsstore.permissionssourc","privat","projects/ngx","promis","promise.resolve(tru","properti","public","reducepermiss","reducepermission(sourc","remov","removepermiss","removepermission(permissionnam","result","return","rxj","rxjs/oper","sourc","store/permissions.stor","string","switchmap","switchmap((promis","tap","this.hasarraypermission(permiss","this.haspermissionvalidationfunction(key","this.permiss","this.permissionssourc","this.permissionssource.asobserv","this.permissionssource.next","this.permissionssource.next(newpermiss","this.permissionssource.next(permiss","this.permissionssource.valu","this.reducepermission(sourc","this.reducepermission(this.permissionssource.valu","topromise().then((data","transformstringtoarray","transformstringtoarray(permiss","true","type","use_permissions_stor","utils/util","valid","validationfunct","validationfunction(key","void"],"/injectables/NgxPermissionsStore.html":["angular/cor","behaviorsubject","class","constructor","defin","export","file","import","info","inject","match","new","ngxpermissionsstor","observ","permiss","permissions/src/lib/store/permissions.store.t","permissions/src/lib/store/permissions.store.ts:7","permissions/src/lib/store/permissions.store.ts:8","permissionssourc","projects/ngx","properti","public","result","rxj","sourc","this.permissionssource.asobserv"],"/injectables/NgxRolesService.html":["0","addrol","addrole(nam","addroles(rolesobj","angular/cor","array.isarray(nam","array.isarray(roles[key].validationfunct","behaviorsubject","boolean","catcherror","class","const","constructor","constructor(isol","data","defin","delet","every((haspermiss","export","fals","file","first","first((data","first((haspermiss","flushrol","from(promises).pip","from(rolenames).pip","from(roles[key].validationfunction).pip","function","getrol","getrole(nam","hasonlyrol","hasonlyroles(nam","haspermiss","hasrol","hasrolekey","hasrolekey(rolenam","hasrolepermiss","hasrolepermission(rol","import","index","info","inject","inject(use_roles_stor","injectiontoken","injectiontoken('use_roles_stor","isboolean","isboolean(promis","isfunct","isfunction(this.rolessource.value[key].validationfunct","isol","ispromis","ispromise(this.rolessource.value[key].validationfunct","map","map((data","match","mergeal","mergemap","mergemap((key","mergemap((permiss","method","model/role.model","name","names.length","new","ngxpermissionsservic","ngxrole","ngxrolesobject","ngxrolesservic","ngxrolesstor","object.keys(rolesobj).foreach((key","observ","observableinput","of(fals","of(null).pip","of(promis","permissions.servic","permissions/src/lib/service/roles.service.t","permissions/src/lib/service/roles.service.ts:104","permissions/src/lib/service/roles.service.ts:16","permissions/src/lib/service/roles.service.ts:18","permissions/src/lib/service/roles.service.ts:29","permissions/src/lib/service/roles.service.ts:37","permissions/src/lib/service/roles.service.ts:43","permissions/src/lib/service/roles.service.ts:47","permissions/src/lib/service/roles.service.ts:55","permissions/src/lib/service/roles.service.ts:59","permissions/src/lib/service/roles.service.ts:63","permissions/src/lib/service/roles.service.ts:76","permissionsservic","privat","projects/ngx","promis","promise.all([this.hasrolekey(nam","promise.resolve(tru","properti","public","removerol","removerole(rolenam","result","return","role","rolenam","rolename.map((key","roles[key","roles[rolenam","rolesobj[key","rolessourc","rolesstor","rxj","rxjs/oper","sourc","store/roles.stor","string","switchmap","switchmap((promis","then(([hasrol","this.addrole(key","this.hasrolepermission(this.rolessource.valu","this.isol","this.permissionsservice.haspermission(permiss","this.rol","this.rolessourc","this.rolessource.asobserv","this.rolessource.next","this.rolessource.next(rol","this.rolessource.valu","this.rolessource.value[key","this.rolessource.value[key].validationfunct","this.rolessource.value[nam","this.rolesstore.rolessourc","topromis","topromise().then((data","transformstringtoarray","transformstringtoarray(nam","true","type","use_roles_stor","utils/util","validationfunct","void"],"/classes/AppPage.html":["apppag","browser","browser.get","class","defin","e2e/src/app.po.t","e2e/src/app.po.ts:4","e2e/src/app.po.ts:8","element","element(by.css('app","export","file","getparagraphtext","h1')).gettext","import","info","match","method","navigateto","protractor","result","return","root","sourc","void"],"/classes/NgxPermission.html":["class","constructor","constructor(nam","defin","export","file","function","info","match","name","ngxpermiss","permissions/src/lib/model/permission.model.t","permissions/src/lib/model/permission.model.ts:2","permissions/src/lib/model/permission.model.ts:3","projects/ngx","properti","result","sourc","string","this.nam","this.validationfunct","validationfunct"],"/classes/NgxRole.html":["class","constructor","constructor(nam","defin","export","file","function","info","match","name","ngxrole","permissions/src/lib/model/role.model.t","permissions/src/lib/model/role.model.ts:2","permissions/src/lib/model/role.model.ts:3","projects/ngx","properti","result","sourc","string","this.nam","this.validationfunct","validationfunct"],"/classes/NgxRolesStore.html":["behaviorsubject","class","defin","export","file","import","info","match","new","ngxrolesstor","observ","permissions/src/lib/store/roles.store.t","permissions/src/lib/store/roles.store.ts:5","permissions/src/lib/store/roles.store.ts:7","projects/ngx","properti","public","result","role","rolessourc","rxj","sourc","this.rolessource.asobserv"],"/interfaces/NgxPermissionsModuleConfig.html":["allow.directive.stub","angular/cor","boolean","class","compon","config.configurationisol","config.permissionsisol","config.rolesisol","configurationisol","data.model","declar","defin","directive/permissions.direct","enums/predefin","export","file","forchild(config","forroot(config","guard.servic","import","info","instanc","interfac","isol","lazi","load","match","model/permiss","model/role.model","modul","modulewithprovid","ngmodul","ngxpermissionsallowstubdirect","ngxpermissionsallowstubmodul","ngxpermissionsconfigurationservic","ngxpermissionsconfigurationstor","ngxpermissionsdirect","ngxpermissionsguard","ngxpermissionsmodul","ngxpermissionsmoduleconfig","ngxpermissionsrestrictstubdirect","ngxpermissionsrestrictstubmodul","ngxpermissionsservic","ngxpermissionsstor","ngxrolesservic","ngxrolesstor","permissions/src/lib/index.t","permissions/src/lib/index.ts:35","permissions/src/lib/index.ts:36","permissions/src/lib/index.ts:37","permissionsisol","projects/ngx","properti","provid","restrict.directive.stub","result","return","rolesisol","router","router/permiss","servic","service/configuration.servic","service/permissions.servic","service/roles.servic","sourc","static","store/configuration.stor","store/permissions.stor","store/roles.stor","strategies.enum","testing/permiss","type","use_configuration_stor","use_permissions_stor","use_roles_stor","usevalu","work"],"/interfaces/NgxPermissionsRouterData.html":["data.model.t","data.model.ts:2","data.model.ts:3","data.model.ts:4","defin","except","export","file","function","info","interfac","match","ngxpermissionsrouterdata","permissions/src/lib/model/permiss","projects/ngx","properti","redirectto","result","router","sourc","string","type"],"/interfaces/NgxRedirectToNavigationParameters.html":["0","_data","activatedroutesnapshot","angular/cor","angular/rout","any[]).pip","array.isarray(redirectto","boolean","canactiv","canactivate(rout","canactivatechild","canactivatechild(childrout","canload","canload(rout","checkonlypermissions(purepermiss","class","const","constructor(priv","data","data.every((_data","data.model","data.some((_data","defin","donthavepermiss","export","fail","failedpermiss","failedpermissionnam","fals","file","first","first((data","forkjoin","from(permissions.except","from(permissions.only).pip","function","function)(failedpermissionnam","function)(rout","guard.service.t","guard.service.ts:24","guard.service.ts:25","handleredirectoffailedpermiss","hasnavigationcommandsasfunction(redirectto","hasnavigationextrasasfunction(redirectto","haspermission.every((_data","haspermissions(rout","haspermissions.every((_data","implement","import","info","inject","interfac","isallfals","isfailedpermissionpropertyofredirectto(permiss","isfunct","isfunction((redirectto).navigationcommand","isfunction((redirectto).navigationextra","isfunction(permissions.except","isfunction(permissions.onli","isfunction(permissions.redirectto","isfunction(redirectto","isparameteravailable(permiss","isplainobject","isplainobject(object","isplainobject(permissions.redirectto","isredirectionwithparameters(object","match","mergemap","mergemap((data","mergemap((isallfals","mergemap((pass","model/permiss","navigationcommand","navigationextra","ngxpermissionsguard","ngxpermissionsrouterdata","ngxpermissionsservic","ngxredirecttonavigationparamet","ngxrolesservic","object.navigationcommand","object.navigationextra","observ","of(!isallfals","of(!pass","of(fals","of(tru","onlyredirectcheck(permiss","pass","passingexceptpermissionsvalidation(permiss","passingonlypermissionsvalid","permiss","permission.length","permissions.except","permissions.onli","permissions.redirectto","permissions.redirectto[failedpermiss","permissions/src/lib/router/permiss","permissionspr","permissionsservic","pipe","pipe(tap((haspermiss","privat","projects/ngx","promis","promise.al","properti","purepermiss","redirectto","redirectto).navigationcommand","redirectto).navigationextra","redirecttoanotherrout","result","return","role","rolesservic","rout","route.data","route.data['permiss","router","routerstatesnapshot","rxj","rxjs/oper","service/permissions.servic","service/roles.servic","sourc","state","string","tap","tap((haspermiss","then(([permissionspr","this.checkonlypermissions(permiss","this.handleredirectoffailedpermission(permiss","this.hasnavigationcommandsasfunction(redirectto","this.hasnavigationextrasasfunction(redirectto","this.haspermissions(childrout","this.haspermissions(rout","this.isfailedpermissionpropertyofredirectto(permiss","this.isparameteravailable(permissions.except","this.isparameteravailable(permissions.onli","this.isredirectionwithparameters(permissions.redirectto","this.isredirectionwithparameters(redirectto","this.onlyredirectcheck(permiss","this.passingexceptpermissionsvalidation(permiss","this.passingonlypermissionsvalidation(permiss","this.permissionsservice.haspermission(data","this.permissionsservice.haspermission(permissions.except","this.permissionsservice.haspermission(permissions.onli","this.redirecttoanotherroute((permissions.redirectto","this.redirecttoanotherroute((permissions.redirectto)['default","this.redirecttoanotherroute((permissions.redirectto)[failedpermiss","this.redirecttoanotherroute(permissions.redirectto","this.rolesservice.hasonlyroles(data","this.rolesservice.hasonlyroles(permissions.except","this.rolesservice.hasonlyroles(permissions.onli","this.router.navig","this.router.navigate([redirectto","this.router.navigate(redirectto","this.transformpermission(purepermiss","topromis","transformpermission(purepermiss","transformstringtoarray","transformstringtoarray(permissions.except","transformstringtoarray(permissions.onli","true","type","utils/util"],"/miscellaneous.html":["context","environ","function","isboolean","isboolean(valu","isfunct","isfunction(functiontocheck","isplainobject","isplainobject(valu","ispromis","ispromise(promis","isstr","isstring(valu","match","miscellan","ngxpermissionspredefinedstrategi","notemptyvalu","notemptyvalue(valu","permissions/src/lib/enums/predefin","permissions/src/lib/service/configuration.service.t","permissions/src/lib/service/permissions.service.t","permissions/src/lib/service/roles.service.t","permissions/src/lib/utils/utils.t","permissions/src/test.t","projects/ngx","requir","result","src/environments/environment.prod.t","src/environments/environment.t","src/test.t","strategies.enum.t","transformstringtoarray","transformstringtoarray(valu","undefin","use_configuration_stor","use_permissions_stor","use_roles_stor","variabl"],"/coverage.html":["0","0/12","0/13","0/18","0/3","0/4","0/5","0/6","0/7","1/14","1/3","1/4","25","33","7","appcompon","apppag","async","asynctestservic","class","compon","component.component.t","component/lazi","coverag","data.model.t","document","e2e/src/app.po.t","file","guard.service.t","homecompon","identifi","initialloadcompon","inject","interfac","isol","isolate/async","isolate/isolate/isolate.component.t","isolate/lazi","isolatecompon","lazycomponentcompon","lazyroleisolatetestcompon","lazyrolesasynctestcompon","load.component.t","load/initi","match","module/lazi","ngxpermiss","ngxpermissionsconfigurationservic","ngxpermissionsconfigurationstor","ngxpermissionsguard","ngxpermissionsmoduleconfig","ngxpermissionsrouterdata","ngxpermissionsservic","ngxpermissionsstor","ngxredirecttonavigationparamet","ngxrole","ngxrolesservic","ngxrolesstor","permissions/src/lib/index.t","permissions/src/lib/model/permiss","permissions/src/lib/model/permission.model.t","permissions/src/lib/model/role.model.t","permissions/src/lib/router/permiss","permissions/src/lib/service/configuration.service.t","permissions/src/lib/service/permissions.service.t","permissions/src/lib/service/roles.service.t","permissions/src/lib/store/configuration.store.t","permissions/src/lib/store/permissions.store.t","permissions/src/lib/store/roles.store.t","projects/ngx","result","role","router","src/app/app.component.t","src/app/home/home.component.t","src/app/initi","src/app/lazi","statement","test.component.t","test.service.t","test/lazi","type"]},"length":38},"tokenStore":{"root":{"0":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997},"/coverage.html":{"ref":"/coverage.html","tf":0.08227848101265822}},"/":{"1":{"2":{"docs":{"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}}},"3":{"docs":{"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}}},"8":{"docs":{"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}}},"docs":{}},"3":{"docs":{"/coverage.html":{"ref":"/coverage.html","tf":0.0379746835443038}}},"4":{"docs":{"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}}},"5":{"docs":{"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}}},"6":{"docs":{"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}}},"7":{"docs":{"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}}},"docs":{}}},"1":{"2":{"3":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}},"docs":{}},"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202}},"/":{"1":{"4":{"docs":{"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}}},"docs":{}},"3":{"docs":{"/coverage.html":{"ref":"/coverage.html","tf":0.0189873417721519}}},"4":{"docs":{"/coverage.html":{"ref":"/coverage.html","tf":0.02531645569620253}}},"docs":{}}},"2":{"5":{"docs":{"/coverage.html":{"ref":"/coverage.html","tf":0.02531645569620253}}},"docs":{"/index.html":{"ref":"/index.html","tf":0.002190100744634253},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.006711409395973154}},",":{"4":{"docs":{},",":{"5":{"docs":{},",":{"6":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}},"docs":{}}},"docs":{}}},"docs":{}},"/":{"4":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}},"docs":{}}},"3":{"3":{"docs":{"/coverage.html":{"ref":"/coverage.html","tf":0.0189873417721519}}},"docs":{"/overview.html":{"ref":"/overview.html","tf":0.012578616352201259}}},"4":{"2":{"docs":{"/index.html":{"ref":"/index.html","tf":0.002190100744634253}}},"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013},"/overview.html":{"ref":"/overview.html","tf":0.006289308176100629}},".":{"3":{"docs":{},".":{"2":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}},"docs":{}}},"docs":{}},"/":{"5":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}},"docs":{}}},"5":{"docs":{"/index.html":{"ref":"/index.html","tf":0.001314060446780552}},".":{"5":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}},"docs":{}}},"6":{"docs":{},".":{"0":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}},".":{"0":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}},"docs":{}}},"docs":{}}},"7":{"docs":{"/overview.html":{"ref":"/overview.html","tf":0.012578616352201259},"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}}},"9":{"docs":{"/overview.html":{"ref":"/overview.html","tf":0.006289308176100629}}},"docs":{},"a":{"docs":{},"b":{"docs":{},"i":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}},"o":{"docs":{},"v":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}},"c":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.002628120893561104}}}},"s":{"docs":{},"s":{"docs":{"/index.html":{"ref":"/index.html","tf":0.00788436268068331}}}}},"o":{"docs":{},"u":{"docs":{},"n":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}},"h":{"docs":{},"i":{"docs":{},"e":{"docs":{},"v":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}},"v":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0017520805957074025}},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"d":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"n":{"docs":{},"a":{"docs":{},"p":{"docs":{},"s":{"docs":{},"h":{"docs":{},"o":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.003942181340341655},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.014950166112956811},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0200445434298441}}}}}}}}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"n":{"docs":{},"a":{"docs":{},"p":{"docs":{},"s":{"docs":{},"h":{"docs":{},"o":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.002190100744634253}}}}}}}}}}}}}}}}}}}},"u":{"docs":{},"a":{"docs":{},"l":{"docs":{},"_":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.00819672131147541},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.007246376811594203},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.0045871559633027525},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.004608294930875576},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0032258064516129032},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.003105590062111801}}}}}}}}}}}}}},"d":{"docs":{},"d":{"docs":{"/index.html":{"ref":"/index.html","tf":0.001314060446780552},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577}},"d":{"docs":{},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506},"/modules/LazyIsolateRoutingModule.html":{"ref":"/modules/LazyIsolateRoutingModule.html","tf":0.01}}}}}},"i":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.010067114093959731},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"i":{"docs":{"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00411522633744856}}},"y":{"docs":{},"(":{"docs":{},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00823045267489712}}}}}}}}}}}}}},"(":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0017520805957074025},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.006191950464396285}},"e":{"docs":{},"(":{"docs":{},"'":{"docs":{},"a":{"docs":{},"d":{"docs":{},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{},"_":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.006191950464396285}}}}}},"s":{"docs":{},"(":{"docs":{},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{},"s":{"docs":{},"o":{"docs":{},"b":{"docs":{},"j":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.006191950464396285}}}}}}}}}}}}}}}}},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{"/index.html":{"ref":"/index.html","tf":0.00700832238282961},"/modules/LazyIsolateRoutingModule.html":{"ref":"/modules/LazyIsolateRoutingModule.html","tf":0.01},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.03355704697986577},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.009174311926605505},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.018433179723502304},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0064516129032258064},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.018633540372670808}},"n":{"docs":{},"n":{"docs":{},"n":{"docs":{},"n":{"docs":{},"n":{"docs":{},"n":{"docs":{"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.006711409395973154},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.009216589861751152}}}}}}}}}}}},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{},"a":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}},"l":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}}}}}}}},"l":{"docs":{},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{"/index.html":{"ref":"/index.html","tf":0.004818221638195357}},"/":{"docs":{},"d":{"docs":{},"e":{"docs":{},"n":{"docs":{},"i":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}},".":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},".":{"docs":{},"s":{"docs":{},"t":{"docs":{},"u":{"docs":{},"b":{"docs":{"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.009523809523809525},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.009523809523809525},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.009523809523809525},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.00975609756097561}},".":{"docs":{},"t":{"docs":{"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.005555555555555556}},"s":{"docs":{},":":{"1":{"0":{"docs":{"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.005555555555555556}}},"2":{"docs":{"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.005555555555555556}}},"3":{"docs":{"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.005555555555555556}}},"4":{"docs":{"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.005555555555555556}}},"6":{"docs":{"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.005555555555555556}}},"7":{"docs":{"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.005555555555555556}}},"9":{"docs":{"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.005555555555555556}}},"docs":{}},"2":{"0":{"docs":{"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.011111111111111112}}},"7":{"docs":{"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.005555555555555556}}},"docs":{}},"3":{"6":{"docs":{"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.005555555555555556}}},"docs":{}},"8":{"docs":{"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.005555555555555556}}},"9":{"docs":{"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.005555555555555556}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"n":{"docs":{},"g":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}},"w":{"docs":{},"a":{"docs":{},"y":{"docs":{"/index.html":{"ref":"/index.html","tf":0.001314060446780552}}}}}},"n":{"docs":{},"d":{"docs":{},"/":{"docs":{},"o":{"docs":{},"r":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}}},"g":{"docs":{},"u":{"docs":{},"l":{"docs":{},"a":{"docs":{},"r":{"2":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}},"4":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}},"docs":{"/index.html":{"ref":"/index.html","tf":0.006570302233902759}},"(":{"docs":{},"a":{"docs":{},"n":{"docs":{},"g":{"docs":{},"u":{"docs":{},"l":{"docs":{},"a":{"docs":{},"r":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}}},"/":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"m":{"docs":{},"o":{"docs":{},"n":{"docs":{"/modules/LazyIsolateModule.html":{"ref":"/modules/LazyIsolateModule.html","tf":0.012048192771084338},"/modules/LazyModule.html":{"ref":"/modules/LazyModule.html","tf":0.012658227848101266},"/modules/LazyRoleIsolateModule.html":{"ref":"/modules/LazyRoleIsolateModule.html","tf":0.010752688172043012},"/modules/LazyRolesAsyncIsolateModule.html":{"ref":"/modules/LazyRolesAsyncIsolateModule.html","tf":0.009259259259259259}},"/":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}}}},"r":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0030661410424879547},"/modules/AppModule.html":{"ref":"/modules/AppModule.html","tf":0.009174311926605505},"/modules/LazyIsolateModule.html":{"ref":"/modules/LazyIsolateModule.html","tf":0.012048192771084338},"/modules/LazyIsolateRoutingModule.html":{"ref":"/modules/LazyIsolateRoutingModule.html","tf":0.01},"/modules/LazyModule.html":{"ref":"/modules/LazyModule.html","tf":0.012658227848101266},"/modules/LazyRoleIsolateModule.html":{"ref":"/modules/LazyRoleIsolateModule.html","tf":0.010752688172043012},"/modules/LazyRolesAsyncIsolateModule.html":{"ref":"/modules/LazyRolesAsyncIsolateModule.html","tf":0.009259259259259259},"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.004761904761904762},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.00819672131147541},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.007246376811594203},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.0045871559633027525},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.004608294930875576},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0032258064516129032},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.003105590062111801},"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.005555555555555556},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101},"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.005714285714285714},"/injectables/AsyncTestService.html":{"ref":"/injectables/AsyncTestService.html","tf":0.013157894736842105},"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00411522633744856},"/injectables/NgxPermissionsConfigurationStore.html":{"ref":"/injectables/NgxPermissionsConfigurationStore.html","tf":0.013333333333333334},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192},"/injectables/NgxPermissionsStore.html":{"ref":"/injectables/NgxPermissionsStore.html","tf":0.02040816326530612},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.004878048780487805},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}},"p":{"docs":{},"l":{"docs":{},"a":{"docs":{},"t":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"m":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506},"/modules/AppModule.html":{"ref":"/modules/AppModule.html","tf":0.009174311926605505}}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.001314060446780552},"/modules/LazyIsolateRoutingModule.html":{"ref":"/modules/LazyIsolateRoutingModule.html","tf":0.01},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}}}}}},"o":{"docs":{},"n":{"docs":{},"y":{"docs":{},"m":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}},"t":{"docs":{},"h":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}},"e":{"docs":{},"r":{"docs":{},"a":{"docs":{},"l":{"docs":{},"s":{"docs":{},"o":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}},"o":{"docs":{},"n":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}}}}}},"y":{"docs":{},"t":{"docs":{},"h":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}},"[":{"docs":{},"]":{"docs":{},")":{"docs":{},".":{"docs":{},"p":{"docs":{},"i":{"docs":{},"p":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}}}}},"o":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.003504161191414805}}}},"p":{"docs":{},"p":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0017520805957074025},"/modules/AppModule.html":{"ref":"/modules/AppModule.html","tf":0.009174311926605505},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.03691275167785235},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.07377049180327869},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.06521739130434782},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.04128440366972477},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.041474654377880185},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.02903225806451613},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.027950310559006212}},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506},"/modules/AppModule.html":{"ref":"/modules/AppModule.html","tf":0.009174311926605505}},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},".":{"docs":{},"c":{"docs":{},"s":{"docs":{},"s":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.006711409395973154}}}}},"h":{"docs":{},"t":{"docs":{},"m":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.006711409395973154}}}}}}}}}}}}}}}},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},".":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}}}},"/":{"docs":{},"l":{"docs":{},"a":{"docs":{},"z":{"docs":{},"i":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}}}},"_":{"docs":{},"i":{"docs":{},"n":{"docs":{},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0017520805957074025}}}}}}}},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0017520805957074025},"/overview.html":{"ref":"/overview.html","tf":0.025157232704402517},"/modules/AppModule.html":{"ref":"/modules/AppModule.html","tf":0.11009174311926606},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":5.0134228187919465},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.00819672131147541},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.007246376811594203},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.0045871559633027525},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.004608294930875576},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0032258064516129032},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.003105590062111801},"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}}}}}}}},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{"/index.html":{"ref":"/index.html","tf":0.005256241787122208}},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"i":{"docs":{},"n":{"docs":{},"i":{"docs":{},"t":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"u":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}}}}}}}},"s":{"docs":{},"(":{"docs":{},"a":{"docs":{},"o":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}}}}}}},"y":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"i":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}},"y":{"docs":{},"(":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202}}}}}}}}}}}}}}}},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.001314060446780552},"/overview.html":{"ref":"/overview.html","tf":0.05660377358490566},"/modules.html":{"ref":"/modules.html","tf":0.02},"/modules/AppModule.html":{"ref":"/modules/AppModule.html","tf":5.155963302752293}}}}}}},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.005256241787122208},"/modules/LazyIsolateRoutingModule.html":{"ref":"/modules/LazyIsolateRoutingModule.html","tf":0.01}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0017520805957074025},"/overview.html":{"ref":"/overview.html","tf":0.018867924528301886},"/modules/AppModule.html":{"ref":"/modules/AppModule.html","tf":0.045871559633027525}}}}}}}}}}}}}},"p":{"docs":{},"a":{"docs":{},"g":{"docs":{"/classes/AppPage.html":{"ref":"/classes/AppPage.html","tf":5.052631578947368},"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}}}}}}},"r":{"docs":{},"r":{"docs":{},"a":{"docs":{},"y":{"docs":{"/index.html":{"ref":"/index.html","tf":0.003942181340341655}},".":{"docs":{},"i":{"docs":{},"s":{"docs":{},"a":{"docs":{},"r":{"docs":{},"r":{"docs":{},"a":{"docs":{},"y":{"docs":{},"(":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"t":{"docs":{},"o":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}}}}},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{},"s":{"docs":{},"[":{"docs":{},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{},"]":{"docs":{},".":{"docs":{},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"u":{"docs":{},"n":{"docs":{},"c":{"docs":{},"t":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}}}}}}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0055248618784530384}}}}}}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}}}}}}}}}}}}}}}}},"t":{"docs":{},"i":{"docs":{},"f":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}},"t":{"docs":{},"o":{"docs":{},"m":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{},"b":{"docs":{},"u":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}}}}}},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}},"g":{"docs":{},"u":{"docs":{},"a":{"docs":{},"r":{"docs":{},"d":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"(":{"docs":{},")":{"docs":{},".":{"docs":{},"t":{"docs":{},"h":{"docs":{},"e":{"docs":{},"n":{"docs":{},"(":{"docs":{},"(":{"docs":{},"o":{"docs":{},"b":{"docs":{},"j":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"r":{"docs":{"/index.html":{"ref":"/index.html","tf":0.001314060446780552},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.010067114093959731}},"i":{"docs":{},"s":{"docs":{"/index.html":{"ref":"/index.html","tf":0.001314060446780552}}}}}}},"o":{"docs":{},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}},"v":{"docs":{},"a":{"docs":{},"i":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.001314060446780552}}}}}},"s":{"docs":{},"y":{"docs":{},"n":{"docs":{},"c":{"docs":{"/modules/LazyRolesAsyncIsolateModule.html":{"ref":"/modules/LazyRolesAsyncIsolateModule.html","tf":0.05555555555555555},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.010067114093959731},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.00819672131147541},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.007246376811594203},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.0045871559633027525},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.004608294930875576},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0032258064516129032},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.052795031055900624},"/injectables/AsyncTestService.html":{"ref":"/injectables/AsyncTestService.html","tf":0.06578947368421052},"/coverage.html":{"ref":"/coverage.html","tf":0.02531645569620253}},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.006211180124223602}},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"i":{"docs":{},"c":{"docs":{"/modules/LazyRolesAsyncIsolateModule.html":{"ref":"/modules/LazyRolesAsyncIsolateModule.html","tf":0.05555555555555555},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.006211180124223602},"/injectables/AsyncTestService.html":{"ref":"/injectables/AsyncTestService.html","tf":5.026315789473684},"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}}}}}}}}}}}}}}}}},"b":{"docs":{},"a":{"docs":{},"c":{"docs":{},"k":{"docs":{"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.0045871559633027525},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.004608294930875576},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0032258064516129032},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.003105590062111801}},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}},"s":{"docs":{},"h":{"docs":{},"o":{"docs":{},"u":{"docs":{},"l":{"docs":{},"d":{"docs":{"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.004608294930875576}}}}}}}}}},"s":{"docs":{},"e":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0030661410424879547}}},"i":{"docs":{},"c":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}},"n":{"docs":{},"k":{"docs":{"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.00819672131147541}}}}},"e":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{"/index.html":{"ref":"/index.html","tf":0.001314060446780552}}}}},"l":{"docs":{},"o":{"docs":{},"n":{"docs":{},"g":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}},"w":{"docs":{"/index.html":{"ref":"/index.html","tf":0.001314060446780552}}}}},"t":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}},"h":{"docs":{},"a":{"docs":{},"v":{"docs":{},"i":{"docs":{},"o":{"docs":{},"r":{"docs":{},"s":{"docs":{},"u":{"docs":{},"b":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.012345679012345678},"/injectables/NgxPermissionsConfigurationStore.html":{"ref":"/injectables/NgxPermissionsConfigurationStore.html","tf":0.04},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.008287292817679558},"/injectables/NgxPermissionsStore.html":{"ref":"/injectables/NgxPermissionsStore.html","tf":0.04081632653061224},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.009287925696594427},"/classes/NgxRolesStore.html":{"ref":"/classes/NgxRolesStore.html","tf":0.05128205128205128}}}}}}}}}}}}}}}},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"k":{"docs":{"/index.html":{"ref":"/index.html","tf":0.001314060446780552},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.013422818791946308}}}}}},"o":{"docs":{},"o":{"docs":{},"t":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506},"/overview.html":{"ref":"/overview.html","tf":0.006289308176100629},"/modules/AppModule.html":{"ref":"/modules/AppModule.html","tf":0.027522935779816515},"/modules/LazyIsolateModule.html":{"ref":"/modules/LazyIsolateModule.html","tf":0.012048192771084338},"/modules/LazyIsolateRoutingModule.html":{"ref":"/modules/LazyIsolateRoutingModule.html","tf":0.01},"/modules/LazyModule.html":{"ref":"/modules/LazyModule.html","tf":0.012658227848101266},"/modules/LazyRoleIsolateModule.html":{"ref":"/modules/LazyRoleIsolateModule.html","tf":0.010752688172043012},"/modules/LazyRolesAsyncIsolateModule.html":{"ref":"/modules/LazyRolesAsyncIsolateModule.html","tf":0.009259259259259259},"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.004761904761904762}}}}}}}},"l":{"docs":{},"e":{"docs":{},"a":{"docs":{},"n":{"docs":{"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.014285714285714285},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.014285714285714285},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.014285714285714285},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.007339449541284404},"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.01646090534979424},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.024916943521594685},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.016574585635359115},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.018575851393188854},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.04390243902439024},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.026726057906458798}}}}}}},"t":{"docs":{},"h":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.013422818791946308}}}}},"r":{"docs":{},"o":{"docs":{},"w":{"docs":{},"s":{"docs":{"/modules.html":{"ref":"/modules.html","tf":0.18}},"e":{"docs":{},"r":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506},"/modules.html":{"ref":"/modules.html","tf":0.18},"/modules/AppModule.html":{"ref":"/modules/AppModule.html","tf":0.009174311926605505},"/classes/AppPage.html":{"ref":"/classes/AppPage.html","tf":0.02631578947368421}},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013},"/overview.html":{"ref":"/overview.html","tf":0.018867924528301886},"/modules/AppModule.html":{"ref":"/modules/AppModule.html","tf":0.045871559633027525}}}}}}},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{"/classes/AppPage.html":{"ref":"/classes/AppPage.html","tf":0.02631578947368421}}}}}}}}}}}},"u":{"docs":{},"i":{"docs":{},"l":{"docs":{},"d":{"docs":{"/index.html":{"ref":"/index.html","tf":0.002190100744634253}}}}},"l":{"docs":{},"b":{"docs":{"/index.html":{"ref":"/index.html","tf":0.002628120893561104}}}},"s":{"docs":{},"i":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}},"y":{"docs":{},"p":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0017520805957074025}}}},"n":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"v":{"docs":{"/index.html":{"ref":"/index.html","tf":0.00700832238282961},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0049833887043189366},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.004454342984409799}},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"c":{"docs":{},"h":{"docs":{},"i":{"docs":{},"l":{"docs":{},"d":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506},"/modules/LazyIsolateRoutingModule.html":{"ref":"/modules/LazyIsolateRoutingModule.html","tf":0.01},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0049833887043189366},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.004454342984409799}},"(":{"docs":{},"c":{"docs":{},"h":{"docs":{},"i":{"docs":{},"l":{"docs":{},"d":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0033222591362126247},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}}}}}}}}}}},"(":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0033222591362126247},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}}}}}}}}},"d":{"docs":{},"e":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"v":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"u":{"docs":{},"a":{"docs":{},"r":{"docs":{},"d":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506},"/modules/LazyIsolateRoutingModule.html":{"ref":"/modules/LazyIsolateRoutingModule.html","tf":0.01}}}}}}}}}}}}}}}}},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"t":{"docs":{},"a":{"docs":{},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{},"a":{"docs":{"/index.html":{"ref":"/index.html","tf":0.002628120893561104}}}}}}}}}}}},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0017520805957074025},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0049833887043189366},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.004454342984409799}},"(":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0033222591362126247},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{},"a":{"docs":{},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{},"a":{"docs":{"/index.html":{"ref":"/index.html","tf":0.002628120893561104}},"'":{"docs":{},",":{"docs":{},"'":{"docs":{},"c":{"docs":{},"a":{"docs":{},"n":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"t":{"docs":{},"a":{"docs":{},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{},"a":{"docs":{"/index.html":{"ref":"/index.html","tf":0.001314060446780552}}}}}}}}}}}}}}}}}},"(":{"docs":{},"r":{"docs":{},"e":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"e":{"docs":{},"d":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"n":{"docs":{},"v":{"docs":{},"o":{"docs":{},"i":{"docs":{},"c":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}},"e":{"docs":{},"s":{"docs":{},"'":{"docs":{},",":{"docs":{},"'":{"docs":{},"c":{"docs":{},"a":{"docs":{},"n":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{},"n":{"docs":{},"v":{"docs":{},"o":{"docs":{},"i":{"docs":{},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},"'":{"docs":{},",":{"docs":{},"'":{"docs":{},"c":{"docs":{},"a":{"docs":{},"n":{"docs":{},"u":{"docs":{},"p":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"i":{"docs":{},"m":{"docs":{},"a":{"docs":{},"g":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}},"s":{"docs":{},"e":{"docs":{"/index.html":{"ref":"/index.html","tf":0.003504161191414805}}}},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202}},"e":{"docs":{},"r":{"docs":{},"r":{"docs":{},"o":{"docs":{},"r":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0055248618784530384},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.006191950464396285}}}}}}}}}},"u":{"docs":{},"s":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}}}},"h":{"docs":{},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{"/index.html":{"ref":"/index.html","tf":0.001314060446780552}}}},"n":{"docs":{},"g":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}},"e":{"docs":{},"c":{"docs":{},"k":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0056942619360490585},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.006711409395973154},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192}},"o":{"docs":{},"n":{"docs":{},"l":{"docs":{},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"(":{"docs":{},"p":{"docs":{},"u":{"docs":{},"r":{"docs":{},"e":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0033222591362126247},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"l":{"docs":{},"d":{"docs":{"/index.html":{"ref":"/index.html","tf":0.001314060446780552}},"r":{"docs":{},"e":{"docs":{},"n":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013},"/modules/LazyIsolateRoutingModule.html":{"ref":"/modules/LazyIsolateRoutingModule.html","tf":0.01}}}}}}}}},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{"/index.html":{"ref":"/index.html","tf":0.004380201489268506},"/overview.html":{"ref":"/overview.html","tf":0.006289308176100629},"/modules/AppModule.html":{"ref":"/modules/AppModule.html","tf":0.009174311926605505},"/modules/LazyIsolateModule.html":{"ref":"/modules/LazyIsolateModule.html","tf":0.012048192771084338},"/modules/LazyIsolateRoutingModule.html":{"ref":"/modules/LazyIsolateRoutingModule.html","tf":0.01},"/modules/LazyModule.html":{"ref":"/modules/LazyModule.html","tf":0.012658227848101266},"/modules/LazyRoleIsolateModule.html":{"ref":"/modules/LazyRoleIsolateModule.html","tf":0.010752688172043012},"/modules/LazyRolesAsyncIsolateModule.html":{"ref":"/modules/LazyRolesAsyncIsolateModule.html","tf":0.009259259259259259},"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.014285714285714285},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.014285714285714285},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.014285714285714285},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.00819672131147541},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.007246376811594203},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.0045871559633027525},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.004608294930875576},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0032258064516129032},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.003105590062111801},"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.005555555555555556},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101},"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.005714285714285714},"/injectables/AsyncTestService.html":{"ref":"/injectables/AsyncTestService.html","tf":0.013157894736842105},"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00411522633744856},"/injectables/NgxPermissionsConfigurationStore.html":{"ref":"/injectables/NgxPermissionsConfigurationStore.html","tf":0.013333333333333334},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192},"/injectables/NgxPermissionsStore.html":{"ref":"/injectables/NgxPermissionsStore.html","tf":0.02040816326530612},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426},"/classes/AppPage.html":{"ref":"/classes/AppPage.html","tf":5.052631578947368},"/classes/NgxPermission.html":{"ref":"/classes/NgxPermission.html","tf":5.044444444444444},"/classes/NgxRole.html":{"ref":"/classes/NgxRole.html","tf":5.042553191489362},"/classes/NgxRolesStore.html":{"ref":"/classes/NgxRolesStore.html","tf":5.051282051282051},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.014634146341463415},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997},"/coverage.html":{"ref":"/coverage.html","tf":0.02531645569620253}}}}},"i":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}}},"u":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"_":{"docs":{},"a":{"docs":{},"p":{"docs":{},"p":{"docs":{},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"/overview.html":{"ref":"/overview.html","tf":0.006289308176100629},"/modules/AppModule.html":{"ref":"/modules/AppModule.html","tf":0.009174311926605505}},"e":{"docs":{},"_":{"docs":{},"b":{"docs":{},"o":{"docs":{},"o":{"docs":{},"t":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"docs":{"/overview.html":{"ref":"/overview.html","tf":0.006289308176100629},"/modules/AppModule.html":{"ref":"/modules/AppModule.html","tf":0.009174311926605505}}}}}}}}}}},"i":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{"/overview.html":{"ref":"/overview.html","tf":0.006289308176100629},"/modules/AppModule.html":{"ref":"/modules/AppModule.html","tf":0.009174311926605505}}}}}}}},"d":{"docs":{},"e":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"r":{"docs":{"/modules/AppModule.html":{"ref":"/modules/AppModule.html","tf":0.009174311926605505}}}}}}}}}}}}}}}}}},"l":{"docs":{},"a":{"docs":{},"z":{"docs":{},"y":{"docs":{},"i":{"docs":{},"s":{"docs":{},"o":{"docs":{},"l":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"/overview.html":{"ref":"/overview.html","tf":0.006289308176100629},"/modules/LazyIsolateModule.html":{"ref":"/modules/LazyIsolateModule.html","tf":0.012048192771084338}},"e":{"docs":{},"_":{"docs":{},"i":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{"/overview.html":{"ref":"/overview.html","tf":0.006289308176100629},"/modules/LazyIsolateModule.html":{"ref":"/modules/LazyIsolateModule.html","tf":0.012048192771084338}}}}}}}},"d":{"docs":{},"e":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"r":{"docs":{"/modules/LazyIsolateModule.html":{"ref":"/modules/LazyIsolateModule.html","tf":0.012048192771084338}}}}}}}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"/overview.html":{"ref":"/overview.html","tf":0.006289308176100629},"/modules/LazyIsolateRoutingModule.html":{"ref":"/modules/LazyIsolateRoutingModule.html","tf":0.01}},"e":{"docs":{},"_":{"docs":{},"e":{"docs":{},"x":{"docs":{},"p":{"docs":{},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{"/overview.html":{"ref":"/overview.html","tf":0.006289308176100629},"/modules/LazyIsolateRoutingModule.html":{"ref":"/modules/LazyIsolateRoutingModule.html","tf":0.01}}}}}}}},"i":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{"/overview.html":{"ref":"/overview.html","tf":0.006289308176100629},"/modules/LazyIsolateRoutingModule.html":{"ref":"/modules/LazyIsolateRoutingModule.html","tf":0.01}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"/overview.html":{"ref":"/overview.html","tf":0.006289308176100629},"/modules/LazyModule.html":{"ref":"/modules/LazyModule.html","tf":0.012658227848101266}},"e":{"docs":{},"_":{"docs":{},"i":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{"/overview.html":{"ref":"/overview.html","tf":0.006289308176100629},"/modules/LazyModule.html":{"ref":"/modules/LazyModule.html","tf":0.012658227848101266}}}}}}}},"d":{"docs":{},"e":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"r":{"docs":{"/modules/LazyModule.html":{"ref":"/modules/LazyModule.html","tf":0.012658227848101266}}}}}}}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{},"i":{"docs":{},"s":{"docs":{},"o":{"docs":{},"l":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"/overview.html":{"ref":"/overview.html","tf":0.006289308176100629},"/modules/LazyRoleIsolateModule.html":{"ref":"/modules/LazyRoleIsolateModule.html","tf":0.010752688172043012}},"e":{"docs":{},"_":{"docs":{},"i":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{"/overview.html":{"ref":"/overview.html","tf":0.006289308176100629},"/modules/LazyRoleIsolateModule.html":{"ref":"/modules/LazyRoleIsolateModule.html","tf":0.010752688172043012}}}}}}}},"d":{"docs":{},"e":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"r":{"docs":{"/modules/LazyRoleIsolateModule.html":{"ref":"/modules/LazyRoleIsolateModule.html","tf":0.010752688172043012}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"a":{"docs":{},"s":{"docs":{},"y":{"docs":{},"n":{"docs":{},"c":{"docs":{},"i":{"docs":{},"s":{"docs":{},"o":{"docs":{},"l":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"/overview.html":{"ref":"/overview.html","tf":0.006289308176100629},"/modules/LazyRolesAsyncIsolateModule.html":{"ref":"/modules/LazyRolesAsyncIsolateModule.html","tf":0.009259259259259259}},"e":{"docs":{},"_":{"docs":{},"i":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{"/overview.html":{"ref":"/overview.html","tf":0.006289308176100629},"/modules/LazyRolesAsyncIsolateModule.html":{"ref":"/modules/LazyRolesAsyncIsolateModule.html","tf":0.009259259259259259}}}}}}}},"d":{"docs":{},"e":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"r":{"docs":{"/modules/LazyRolesAsyncIsolateModule.html":{"ref":"/modules/LazyRolesAsyncIsolateModule.html","tf":0.009259259259259259}}}}}}}},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"v":{"docs":{},"i":{"docs":{},"d":{"docs":{"/modules/LazyRolesAsyncIsolateModule.html":{"ref":"/modules/LazyRolesAsyncIsolateModule.html","tf":0.009259259259259259}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"n":{"docs":{},"g":{"docs":{},"x":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{},"s":{"docs":{},"t":{"docs":{},"u":{"docs":{},"b":{"docs":{},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"/overview.html":{"ref":"/overview.html","tf":0.006289308176100629},"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.004761904761904762}},"e":{"docs":{},"_":{"docs":{},"e":{"docs":{},"x":{"docs":{},"p":{"docs":{},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{"/overview.html":{"ref":"/overview.html","tf":0.006289308176100629},"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.004761904761904762}}}}}}}},"d":{"docs":{},"e":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"r":{"docs":{"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.004761904761904762}}}}}}}}}}}}}}}}}}}}}}}},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"/overview.html":{"ref":"/overview.html","tf":0.006289308176100629},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.004761904761904762}},"e":{"docs":{},"_":{"docs":{},"e":{"docs":{},"x":{"docs":{},"p":{"docs":{},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{"/overview.html":{"ref":"/overview.html","tf":0.006289308176100629},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.004761904761904762}}}}}}}},"d":{"docs":{},"e":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"r":{"docs":{"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.004761904761904762}}}}}}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{},"c":{"docs":{},"t":{"docs":{},"s":{"docs":{},"t":{"docs":{},"u":{"docs":{},"b":{"docs":{},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"/overview.html":{"ref":"/overview.html","tf":0.006289308176100629},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.004761904761904762}},"e":{"docs":{},"_":{"docs":{},"e":{"docs":{},"x":{"docs":{},"p":{"docs":{},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{"/overview.html":{"ref":"/overview.html","tf":0.006289308176100629},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.004761904761904762}}}}}}}},"d":{"docs":{},"e":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"r":{"docs":{"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.004761904761904762}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0017520805957074025}}}},"m":{"docs":{},"a":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}},"b":{"docs":{},"i":{"docs":{},"n":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}},"e":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}},"m":{"docs":{},"o":{"docs":{},"n":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506},"/overview.html":{"ref":"/overview.html","tf":0.03773584905660377},"/modules/LazyIsolateModule.html":{"ref":"/modules/LazyIsolateModule.html","tf":0.060240963855421686},"/modules/LazyModule.html":{"ref":"/modules/LazyModule.html","tf":0.06329113924050633},"/modules/LazyRoleIsolateModule.html":{"ref":"/modules/LazyRoleIsolateModule.html","tf":0.053763440860215055},"/modules/LazyRolesAsyncIsolateModule.html":{"ref":"/modules/LazyRolesAsyncIsolateModule.html","tf":0.046296296296296294}}}}}}}}}},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.003942181340341655}}}},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}},"x":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0017520805957074025}}}}},"o":{"docs":{},"n":{"docs":{"/index.html":{"ref":"/index.html","tf":0.009198423127463863},"/overview.html":{"ref":"/overview.html","tf":0.006289308176100629},"/modules/LazyIsolateRoutingModule.html":{"ref":"/modules/LazyIsolateRoutingModule.html","tf":0.05},"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.004761904761904762},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":5.016778523489933},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":5.040983606557377},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":5.036231884057971},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":5.022935779816514},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":5.032258064516129},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":5.016129032258065},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":5.015527950310559},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.004878048780487805},"/coverage.html":{"ref":"/coverage.html","tf":0.04430379746835443}},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{"/modules/LazyModule.html":{"ref":"/modules/LazyModule.html","tf":0.012658227848101266}},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},".":{"docs":{},"c":{"docs":{},"s":{"docs":{},"s":{"docs":{"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.009216589861751152}}}}},"h":{"docs":{},"t":{"docs":{},"m":{"docs":{},"l":{"docs":{"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.009216589861751152}}}}}},"t":{"docs":{"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.004608294930875576},"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}},"s":{"docs":{},":":{"1":{"2":{"docs":{"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.004608294930875576}}},"docs":{}},"8":{"docs":{"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.004608294930875576}}},"docs":{}}}}}}}}}}}}}}},"/":{"docs":{},"l":{"docs":{},"a":{"docs":{},"z":{"docs":{},"i":{"docs":{"/modules/LazyModule.html":{"ref":"/modules/LazyModule.html","tf":0.012658227848101266},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.013824884792626729},"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}}}}}}},"'":{"docs":{},"}":{"docs":{},",":{"docs":{},"{":{"docs":{},"'":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.00819672131147541},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.007246376811594203},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.0045871559633027525},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.004608294930875576},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0032258064516129032},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.003105590062111801}}}}}}}}}},"_":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.00819672131147541},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.007246376811594203},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.0045871559633027525},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.004608294930875576},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0032258064516129032},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.003105590062111801}}}}}}}}}}}}}}},"n":{"docs":{},"f":{"docs":{},"i":{"docs":{},"g":{"docs":{},"u":{"docs":{},"r":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"i":{"docs":{},"s":{"docs":{},"o":{"docs":{},"l":{"docs":{"/modules/LazyRoleIsolateModule.html":{"ref":"/modules/LazyRoleIsolateModule.html","tf":0.010752688172043012},"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.004761904761904762},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.014634146341463415}}}}}},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"i":{"docs":{},"c":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202}}}}}}},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00823045267489712}}}}}}}}}}}}},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"i":{"docs":{},"g":{"docs":{},"u":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"i":{"docs":{},"s":{"docs":{},"o":{"docs":{},"l":{"docs":{"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.009523809523809525},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.009523809523809525},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.009523809523809525},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.00975609756097561}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"i":{"docs":{},"s":{"docs":{},"o":{"docs":{},"l":{"docs":{"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.009523809523809525},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.009523809523809525},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.009523809523809525},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.00975609756097561}}}}}}}}}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{},"s":{"docs":{},"i":{"docs":{},"s":{"docs":{},"o":{"docs":{},"l":{"docs":{"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.009523809523809525},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.009523809523809525},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.009523809523809525},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.00975609756097561}}}}}}}}}}}},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"i":{"docs":{},"c":{"docs":{"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0064516129032258064}}}}}}}}}}},"g":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.003504161191414805}}}}}},"s":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{},".":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"(":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}},"'":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577}}}}}}}},"u":{"docs":{},"n":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577}}}}}}}}}},"i":{"docs":{"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.007246376811594203}}}},"t":{"docs":{},"h":{"docs":{},"i":{"docs":{},"s":{"docs":{},".":{"docs":{},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"i":{"docs":{},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.003105590062111801}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.006570302233902759},"/modules/LazyIsolateRoutingModule.html":{"ref":"/modules/LazyIsolateRoutingModule.html","tf":0.01},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101},"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00411522633744856},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0049833887043189366},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.022099447513812154},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.01238390092879257},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0066815144766146995}},"r":{"docs":{},"u":{"docs":{},"c":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.02459016393442623},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.021739130434782608},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.013761467889908258},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.013824884792626729},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0032258064516129032},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.003105590062111801},"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.005555555555555556},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202},"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.005714285714285714},"/injectables/AsyncTestService.html":{"ref":"/injectables/AsyncTestService.html","tf":0.039473684210526314},"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00823045267489712},"/injectables/NgxPermissionsConfigurationStore.html":{"ref":"/injectables/NgxPermissionsConfigurationStore.html","tf":0.04},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0055248618784530384},"/injectables/NgxPermissionsStore.html":{"ref":"/injectables/NgxPermissionsStore.html","tf":0.061224489795918366},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.006191950464396285},"/classes/NgxPermission.html":{"ref":"/classes/NgxPermission.html","tf":0.022222222222222223},"/classes/NgxRole.html":{"ref":"/classes/NgxRole.html","tf":0.02127659574468085}},"(":{"docs":{},"p":{"docs":{},"r":{"docs":{},"i":{"docs":{},"v":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0032258064516129032},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.003105590062111801},"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.005555555555555556},"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.005714285714285714},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"i":{"docs":{},"c":{"docs":{"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"i":{"docs":{},"c":{"docs":{"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0032258064516129032},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.003105590062111801}}}}}}}}}}}}},"v":{"docs":{},"i":{"docs":{},"e":{"docs":{},"w":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"t":{"docs":{},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.005555555555555556},"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.005714285714285714}}}}}}}}}}}}},"i":{"docs":{},"s":{"docs":{},"o":{"docs":{},"l":{"docs":{"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00411522633744856},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}}}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"/classes/NgxPermission.html":{"ref":"/classes/NgxPermission.html","tf":0.044444444444444446},"/classes/NgxRole.html":{"ref":"/classes/NgxRole.html","tf":0.0425531914893617}}}}}}}}}}}}},"u":{"docs":{},"m":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}},"t":{"docs":{},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0030661410424879547}}}}},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0017520805957074025}}}},"x":{"docs":{},"t":{"docs":{"/miscellaneous.html":{"ref":"/miscellaneous.html","tf":0.0625}}}}},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.002190100744634253}}}}}},"v":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}}}},"r":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"d":{"docs":{"/index.html":{"ref":"/index.html","tf":0.001314060446780552}}}}}}}}}},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"a":{"docs":{},"g":{"docs":{"/coverage.html":{"ref":"/coverage.html","tf":10.00632911392405}}}}}}}},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577}}}}}},"u":{"docs":{},"r":{"docs":{},"r":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"z":{"docs":{},"e":{"docs":{},"d":{"docs":{},"s":{"docs":{},"t":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.005504587155963303}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"m":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0017520805957074025}},"i":{"docs":{},"s":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}}},"d":{"docs":{},"a":{"docs":{},"s":{"docs":{},"h":{"docs":{},"b":{"docs":{},"o":{"docs":{},"a":{"docs":{},"r":{"docs":{},"d":{"docs":{"/index.html":{"ref":"/index.html","tf":0.003942181340341655}}}}}}}}},"t":{"docs":{},"a":{"docs":{"/index.html":{"ref":"/index.html","tf":0.00788436268068331},"/modules/LazyIsolateRoutingModule.html":{"ref":"/modules/LazyIsolateRoutingModule.html","tf":0.04},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0049833887043189366},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.008287292817679558},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.009287925696594427},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0066815144766146995}},".":{"docs":{},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{},"l":{"docs":{"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.004761904761904762},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.004878048780487805},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}},".":{"docs":{},"t":{"docs":{"/interfaces/NgxPermissionsRouterData.html":{"ref":"/interfaces/NgxPermissionsRouterData.html","tf":0.02},"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}},"s":{"docs":{},":":{"2":{"docs":{"/interfaces/NgxPermissionsRouterData.html":{"ref":"/interfaces/NgxPermissionsRouterData.html","tf":0.02}}},"3":{"docs":{"/interfaces/NgxPermissionsRouterData.html":{"ref":"/interfaces/NgxPermissionsRouterData.html","tf":0.02}}},"4":{"docs":{"/interfaces/NgxPermissionsRouterData.html":{"ref":"/interfaces/NgxPermissionsRouterData.html","tf":0.02}}},"docs":{}}}}}}}}}},"e":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"y":{"docs":{},"(":{"docs":{},"(":{"docs":{},"_":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}}}}}}}},"s":{"docs":{},"o":{"docs":{},"m":{"docs":{},"e":{"docs":{},"(":{"docs":{},"(":{"docs":{},"_":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0033222591362126247},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.004454342984409799}}}}}}}}}}}}}}}},"y":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}},"e":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"r":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506},"/overview.html":{"ref":"/overview.html","tf":0.006289308176100629},"/modules/AppModule.html":{"ref":"/modules/AppModule.html","tf":0.027522935779816515},"/modules/LazyIsolateModule.html":{"ref":"/modules/LazyIsolateModule.html","tf":0.03614457831325301},"/modules/LazyIsolateRoutingModule.html":{"ref":"/modules/LazyIsolateRoutingModule.html","tf":0.01},"/modules/LazyModule.html":{"ref":"/modules/LazyModule.html","tf":0.0379746835443038},"/modules/LazyRoleIsolateModule.html":{"ref":"/modules/LazyRoleIsolateModule.html","tf":0.03225806451612903},"/modules/LazyRolesAsyncIsolateModule.html":{"ref":"/modules/LazyRolesAsyncIsolateModule.html","tf":0.027777777777777776},"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.023809523809523808},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.023809523809523808},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.023809523809523808},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.014634146341463415}}}}}},"f":{"docs":{},"a":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0030661410424879547},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}}}}},"i":{"docs":{},"n":{"docs":{"/index.html":{"ref":"/index.html","tf":0.008322382829610162},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.020134228187919462},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.01639344262295082},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.014492753623188406},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.009174311926605505},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.009216589861751152},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0064516129032258064},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.006211180124223602},"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.07222222222222222},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.062385321100917435},"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.07428571428571429},"/injectables/AsyncTestService.html":{"ref":"/injectables/AsyncTestService.html","tf":0.05263157894736842},"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.053497942386831275},"/injectables/NgxPermissionsConfigurationStore.html":{"ref":"/injectables/NgxPermissionsConfigurationStore.html","tf":0.06666666666666667},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.02823920265780731},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.03591160220994475},"/injectables/NgxPermissionsStore.html":{"ref":"/injectables/NgxPermissionsStore.html","tf":0.061224489795918366},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.03715170278637771},"/classes/AppPage.html":{"ref":"/classes/AppPage.html","tf":0.05263157894736842},"/classes/NgxPermission.html":{"ref":"/classes/NgxPermission.html","tf":0.06666666666666667},"/classes/NgxRole.html":{"ref":"/classes/NgxRole.html","tf":0.06382978723404255},"/classes/NgxRolesStore.html":{"ref":"/classes/NgxRolesStore.html","tf":0.05128205128205128},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.014634146341463415},"/interfaces/NgxPermissionsRouterData.html":{"ref":"/interfaces/NgxPermissionsRouterData.html","tf":0.06},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.004454342984409799}},"e":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}}},"i":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.002190100744634253}}}}}}},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}},"e":{"docs":{},"m":{"docs":{},"e":{"docs":{},"e":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}}},"m":{"docs":{},"o":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}},"n":{"docs":{},"i":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0017520805957074025}}}},"p":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0017520805957074025},"/overview.html":{"ref":"/overview.html","tf":0.006289308176100629},"/modules/AppModule.html":{"ref":"/modules/AppModule.html","tf":0.009174311926605505},"/modules/LazyIsolateModule.html":{"ref":"/modules/LazyIsolateModule.html","tf":0.012048192771084338},"/modules/LazyIsolateRoutingModule.html":{"ref":"/modules/LazyIsolateRoutingModule.html","tf":0.01},"/modules/LazyModule.html":{"ref":"/modules/LazyModule.html","tf":0.012658227848101266},"/modules/LazyRoleIsolateModule.html":{"ref":"/modules/LazyRoleIsolateModule.html","tf":0.010752688172043012},"/modules/LazyRolesAsyncIsolateModule.html":{"ref":"/modules/LazyRolesAsyncIsolateModule.html","tf":0.009259259259259259},"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.004761904761904762}}}}}},"s":{"docs":{},"c":{"docs":{},"r":{"docs":{},"i":{"docs":{},"p":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0017520805957074025}}}}}}},"i":{"docs":{},"r":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}},"t":{"docs":{},"a":{"docs":{},"i":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}},"v":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}},"e":{"docs":{},"l":{"docs":{},"o":{"docs":{},"p":{"docs":{"/index.html":{"ref":"/index.html","tf":0.001314060446780552}}}}}}}},"i":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"a":{"docs":{},"r":{"docs":{},"y":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"i":{"docs":{},"c":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}}}}}}}}}}}}},"f":{"docs":{},"f":{"docs":{},"e":{"docs":{},"r":{"docs":{"/index.html":{"ref":"/index.html","tf":0.002190100744634253}},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"i":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0030661410424879547},"/overview.html":{"ref":"/overview.html","tf":0.006289308176100629},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.006711409395973154},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.01639344262295082},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.014492753623188406},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.009174311926605505},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.009216589861751152},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0064516129032258064},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.006211180124223602},"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":5.016666666666667},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":5.005504587155963},"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":5.017142857142857}},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},"/":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},".":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.009523809523809525},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.009523809523809525},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.009523809523809525},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.00975609756097561}}}}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"p":{"docs":{},"l":{"docs":{},"a":{"docs":{},"y":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"u":{"docs":{},"i":{"docs":{},"s":{"docs":{},"h":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}}},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.016129032258064516}}}}}}},"o":{"docs":{},"c":{"docs":{},"u":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013},"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}}}}}}}},"n":{"docs":{},"'":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.001314060446780552}}}},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}},"h":{"docs":{},"a":{"docs":{},"v":{"docs":{},"e":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0033222591362126247},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.004454342984409799}}}}}}}}}}}}}}},"m":{"docs":{"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.00819672131147541},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.007246376811594203},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.0045871559633027525},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.004608294930875576},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0032258064516129032},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.003105590062111801}}}},"s":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}},".":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"(":{"docs":{},")":{"docs":{},".":{"docs":{},"t":{"docs":{},"h":{"docs":{},"e":{"docs":{},"n":{"docs":{},"(":{"docs":{},"(":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}}}}}}}}}}}}}},"y":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"/index.html":{"ref":"/index.html","tf":0.003504161191414805},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.006711409395973154}},"i":{"docs":{},"c":{"docs":{},"/":{"docs":{},":":{"docs":{},"i":{"docs":{},"d":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}}}}}}}}}},"e":{"2":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}},"e":{"docs":{},"/":{"docs":{},"s":{"docs":{},"r":{"docs":{},"c":{"docs":{},"/":{"docs":{},"a":{"docs":{},"p":{"docs":{},"p":{"docs":{},".":{"docs":{},"p":{"docs":{},"o":{"docs":{},".":{"docs":{},"t":{"docs":{"/classes/AppPage.html":{"ref":"/classes/AppPage.html","tf":0.02631578947368421},"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}},"s":{"docs":{},":":{"4":{"docs":{"/classes/AppPage.html":{"ref":"/classes/AppPage.html","tf":0.02631578947368421}}},"8":{"docs":{"/classes/AppPage.html":{"ref":"/classes/AppPage.html","tf":0.02631578947368421}}},"docs":{}}}}}}}}}}}}}}}}}},"docs":{},".":{"docs":{},"g":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}},"a":{"docs":{},"c":{"docs":{},"h":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}},"s":{"docs":{},"i":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}},"e":{"docs":{},"r":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}},"l":{"docs":{},"i":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}}}},"d":{"docs":{},"i":{"docs":{},"t":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},"i":{"docs":{},"c":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}},"e":{"docs":{},"v":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}},"m":{"docs":{},"e":{"docs":{},"e":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}},"o":{"docs":{},"r":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}}}},"l":{"docs":{},"e":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.006711409395973154},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.01639344262295082},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.014492753623188406},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.009174311926605505},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.009216589861751152},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0064516129032258064},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.006211180124223602},"/classes/AppPage.html":{"ref":"/classes/AppPage.html","tf":0.02631578947368421}},"(":{"docs":{},"b":{"docs":{},"y":{"docs":{},".":{"docs":{},"c":{"docs":{},"s":{"docs":{},"s":{"docs":{},"(":{"docs":{},"'":{"docs":{},"a":{"docs":{},"p":{"docs":{},"p":{"docs":{"/classes/AppPage.html":{"ref":"/classes/AppPage.html","tf":0.02631578947368421}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"e":{"docs":{},"b":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"k":{"docs":{"/index.html":{"ref":"/index.html","tf":0.002190100744634253}}}}}}}}}},"m":{"docs":{},"i":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}},"n":{"docs":{},"d":{"docs":{"/index.html":{"ref":"/index.html","tf":0.002190100744634253},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.009174311926605505},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.009216589861751152},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0064516129032258064},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.006211180124223602}}},"u":{"docs":{},"m":{"docs":{},"s":{"docs":{},"/":{"docs":{},"p":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{},"i":{"docs":{},"n":{"docs":{"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.004761904761904762},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101},"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00411522633744856},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.004878048780487805}}}}}}}}}}}}}},"v":{"docs":{},"i":{"docs":{},"r":{"docs":{},"o":{"docs":{},"n":{"docs":{"/miscellaneous.html":{"ref":"/miscellaneous.html","tf":0.0625}}}}}}}},"v":{"docs":{},"e":{"docs":{},"n":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}},"t":{"docs":{"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.011111111111111112},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202},"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.011428571428571429}},"e":{"docs":{},"m":{"docs":{},"i":{"docs":{},"t":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0017520805957074025},"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.027777777777777776},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.009174311926605505},"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.02857142857142857}}}}}}}}},"r":{"docs":{},"y":{"docs":{},"(":{"docs":{},"(":{"docs":{},"h":{"docs":{},"a":{"docs":{},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}}}}}}}}}}}}}}}}}},"x":{"docs":{},"a":{"docs":{},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.003504161191414805}}}}}},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.006570302233902759},"/modules/LazyIsolateRoutingModule.html":{"ref":"/modules/LazyIsolateRoutingModule.html","tf":0.04},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.040268456375838924},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.06422018348623854},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.06451612903225806},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.06451612903225806},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.049689440993788817},"/interfaces/NgxPermissionsRouterData.html":{"ref":"/interfaces/NgxPermissionsRouterData.html","tf":0.06}},"s":{"docs":{},"h":{"docs":{},"o":{"docs":{},"u":{"docs":{},"l":{"docs":{},"d":{"docs":{"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.009174311926605505},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.009216589861751152},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0064516129032258064},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.006211180124223602}}}}}}}}}}},"l":{"docs":{},"u":{"docs":{},"d":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}},"e":{"docs":{},"c":{"docs":{},"u":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}}},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}},"l":{"docs":{},"a":{"docs":{},"n":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}},"i":{"docs":{},"c":{"docs":{},"i":{"docs":{},"t":{"docs":{},"l":{"docs":{},"i":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}}}}}},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.010950503723171266},"/overview.html":{"ref":"/overview.html","tf":0.006289308176100629},"/modules/AppModule.html":{"ref":"/modules/AppModule.html","tf":0.01834862385321101},"/modules/LazyIsolateModule.html":{"ref":"/modules/LazyIsolateModule.html","tf":0.024096385542168676},"/modules/LazyIsolateRoutingModule.html":{"ref":"/modules/LazyIsolateRoutingModule.html","tf":0.03},"/modules/LazyModule.html":{"ref":"/modules/LazyModule.html","tf":0.02531645569620253},"/modules/LazyRoleIsolateModule.html":{"ref":"/modules/LazyRoleIsolateModule.html","tf":0.021505376344086023},"/modules/LazyRolesAsyncIsolateModule.html":{"ref":"/modules/LazyRolesAsyncIsolateModule.html","tf":0.018518518518518517},"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.10476190476190476},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.10476190476190476},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.10476190476190476},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.00819672131147541},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.007246376811594203},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.0045871559633027525},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.004608294930875576},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0032258064516129032},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.003105590062111801},"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.005555555555555556},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101},"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.005714285714285714},"/injectables/AsyncTestService.html":{"ref":"/injectables/AsyncTestService.html","tf":0.013157894736842105},"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.01646090534979424},"/injectables/NgxPermissionsConfigurationStore.html":{"ref":"/injectables/NgxPermissionsConfigurationStore.html","tf":0.013333333333333334},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.008287292817679558},"/injectables/NgxPermissionsStore.html":{"ref":"/injectables/NgxPermissionsStore.html","tf":0.02040816326530612},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.009287925696594427},"/classes/AppPage.html":{"ref":"/classes/AppPage.html","tf":0.02631578947368421},"/classes/NgxPermission.html":{"ref":"/classes/NgxPermission.html","tf":0.022222222222222223},"/classes/NgxRole.html":{"ref":"/classes/NgxRole.html","tf":0.02127659574468085},"/classes/NgxRolesStore.html":{"ref":"/classes/NgxRolesStore.html","tf":0.02564102564102564},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.0975609756097561},"/interfaces/NgxPermissionsRouterData.html":{"ref":"/interfaces/NgxPermissionsRouterData.html","tf":0.02},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}},"s":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0017520805957074025}}}}},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}},"c":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}}}}},"r":{"docs":{},"r":{"docs":{},"o":{"docs":{},"r":{"docs":{},"(":{"docs":{},"`":{"docs":{},"n":{"docs":{},"o":{"docs":{"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00823045267489712}}}}}}}}}}},"f":{"docs":{},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},"b":{"docs":{},"a":{"docs":{},"c":{"docs":{},"k":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}},"s":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0017520805957074025},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.009316770186335404},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202},"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00411522633744856},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.014950166112956811},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.013812154696132596},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.018575851393188854},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0200445434298441}}}},"m":{"docs":{},"i":{"docs":{},"l":{"docs":{},"i":{"docs":{},"a":{"docs":{},"r":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}},"i":{"docs":{},"l":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0033222591362126247},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.004454342984409799}},"e":{"docs":{},"d":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.02823920265780731},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0334075723830735}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0033222591362126247},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}}}}}}}}}}}}}},"e":{"docs":{},"a":{"docs":{},"t":{"docs":{},"u":{"docs":{},"r":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}},"i":{"docs":{},"l":{"docs":{},"e":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506},"/modules/AppModule.html":{"ref":"/modules/AppModule.html","tf":0.009174311926605505},"/modules/LazyIsolateModule.html":{"ref":"/modules/LazyIsolateModule.html","tf":0.012048192771084338},"/modules/LazyIsolateRoutingModule.html":{"ref":"/modules/LazyIsolateRoutingModule.html","tf":0.01},"/modules/LazyModule.html":{"ref":"/modules/LazyModule.html","tf":0.012658227848101266},"/modules/LazyRoleIsolateModule.html":{"ref":"/modules/LazyRoleIsolateModule.html","tf":0.010752688172043012},"/modules/LazyRolesAsyncIsolateModule.html":{"ref":"/modules/LazyRolesAsyncIsolateModule.html","tf":0.009259259259259259},"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.004761904761904762},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.00819672131147541},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.007246376811594203},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.0045871559633027525},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.004608294930875576},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0032258064516129032},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.003105590062111801},"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.005555555555555556},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101},"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.005714285714285714},"/injectables/AsyncTestService.html":{"ref":"/injectables/AsyncTestService.html","tf":0.013157894736842105},"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00411522633744856},"/injectables/NgxPermissionsConfigurationStore.html":{"ref":"/injectables/NgxPermissionsConfigurationStore.html","tf":0.013333333333333334},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192},"/injectables/NgxPermissionsStore.html":{"ref":"/injectables/NgxPermissionsStore.html","tf":0.02040816326530612},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426},"/classes/AppPage.html":{"ref":"/classes/AppPage.html","tf":0.02631578947368421},"/classes/NgxPermission.html":{"ref":"/classes/NgxPermission.html","tf":0.022222222222222223},"/classes/NgxRole.html":{"ref":"/classes/NgxRole.html","tf":0.02127659574468085},"/classes/NgxRolesStore.html":{"ref":"/classes/NgxRolesStore.html","tf":0.02564102564102564},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.004878048780487805},"/interfaces/NgxPermissionsRouterData.html":{"ref":"/interfaces/NgxPermissionsRouterData.html","tf":0.02},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997},"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}}}},"n":{"docs":{},"d":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}},"r":{"docs":{},"e":{"docs":{"/index.html":{"ref":"/index.html","tf":0.003504161191414805},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}},"s":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0033222591362126247},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.004454342984409799}},"m":{"docs":{},"e":{"docs":{},"r":{"docs":{},"g":{"docs":{},"e":{"docs":{},"u":{"docs":{},"n":{"docs":{},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"d":{"docs":{},"r":{"docs":{},"u":{"docs":{},"n":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.005504587155963303}}}}}}}}}}}}}}}},"(":{"docs":{},"(":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}},"h":{"docs":{},"a":{"docs":{},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}}}}}}}}}}}}}}}}}},"l":{"docs":{},"a":{"docs":{},"g":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}},"u":{"docs":{},"s":{"docs":{},"h":{"docs":{},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.009287925696594427}}}}},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.008287292817679558}}}}}}}}}}}}},"o":{"docs":{},"l":{"docs":{},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}}},"r":{"docs":{},"c":{"docs":{},"h":{"docs":{},"i":{"docs":{},"l":{"docs":{},"d":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}},"(":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"i":{"docs":{},"g":{"docs":{"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.004761904761904762},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.004878048780487805}}}}}}}}}}}}}},"m":{"docs":{"/index.html":{"ref":"/index.html","tf":0.001314060446780552}}},"r":{"docs":{},"o":{"docs":{},"o":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}},"(":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"i":{"docs":{},"g":{"docs":{"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.004761904761904762},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.004878048780487805}}}}}}}}}}}}},"k":{"docs":{},"j":{"docs":{},"o":{"docs":{},"i":{"docs":{},"n":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0049833887043189366},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0066815144766146995}}}}}}}},"u":{"docs":{},"n":{"docs":{},"d":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506},"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00823045267489712}}}}}},"r":{"docs":{},"e":{"docs":{},"e":{"docs":{},"l":{"docs":{},"i":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}},"o":{"docs":{},"m":{"docs":{},"(":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},".":{"docs":{},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}},"o":{"docs":{},"n":{"docs":{},"l":{"docs":{},"y":{"docs":{},")":{"docs":{},".":{"docs":{},"p":{"docs":{},"i":{"docs":{},"p":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"e":{"docs":{},"s":{"docs":{},")":{"docs":{},".":{"docs":{},"p":{"docs":{},"i":{"docs":{},"p":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}}}}}}}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"s":{"docs":{},")":{"docs":{},".":{"docs":{},"p":{"docs":{},"i":{"docs":{},"p":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}}}}}}}}}}}},"s":{"docs":{},"[":{"docs":{},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{},"]":{"docs":{},".":{"docs":{},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"u":{"docs":{},"n":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},")":{"docs":{},".":{"docs":{},"p":{"docs":{},"i":{"docs":{},"p":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"u":{"docs":{},"l":{"docs":{},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}},"n":{"docs":{},"c":{"docs":{"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.012345679012345678}},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"/index.html":{"ref":"/index.html","tf":0.012264564169951819},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.008305647840531562},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.013812154696132596},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.009287925696594427},"/classes/NgxPermission.html":{"ref":"/classes/NgxPermission.html","tf":0.044444444444444446},"/classes/NgxRole.html":{"ref":"/classes/NgxRole.html","tf":0.0425531914893617},"/interfaces/NgxPermissionsRouterData.html":{"ref":"/interfaces/NgxPermissionsRouterData.html","tf":0.04},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.011135857461024499},"/miscellaneous.html":{"ref":"/miscellaneous.html","tf":0.015625}},"/":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"i":{"docs":{},"c":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}},")":{"docs":{},"(":{"docs":{},"t":{"docs":{},"h":{"docs":{},"i":{"docs":{},"s":{"docs":{},".":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"e":{"docs":{},"f":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202}}}}}}}}}}}}}}}}}},"f":{"docs":{},"a":{"docs":{},"i":{"docs":{},"l":{"docs":{},"e":{"docs":{},"d":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0033222591362126247},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.004454342984409799}}}}}}}}}}}}}}}},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{},"e":{"docs":{},"r":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.001314060446780552}},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.011049723756906077}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"(":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0055248618784530384}}}}}}}}}}}}}}},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"g":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"docs":{},"h":{"docs":{},"t":{"docs":{},"e":{"docs":{},"x":{"docs":{},"t":{"docs":{"/classes/AppPage.html":{"ref":"/classes/AppPage.html","tf":0.07894736842105263}}}}}}}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.01238390092879257}},"e":{"docs":{},"(":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.006191950464396285}}}}}}}}}},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"z":{"docs":{},"e":{"docs":{},"d":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.016666666666666666}}}}}}}}}},"s":{"docs":{},"e":{"docs":{},"d":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.005504587155963303}}}}}}}}}}}}}}}},"l":{"docs":{},"l":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"i":{"docs":{"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.012345679012345678}}}}}}}}}}}}},"u":{"docs":{},"n":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"z":{"docs":{},"e":{"docs":{},"d":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.017142857142857144}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"i":{"docs":{"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00411522633744856}}},"y":{"docs":{},"(":{"docs":{},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00823045267489712}}}}}}}}}}}}}}}},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},"n":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}},"o":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.026845637583892617},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.03669724770642202},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.03686635944700461},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.04516129032258064},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.043478260869565216}},"n":{"docs":{},"n":{"docs":{},"a":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}},"o":{"docs":{},"d":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}},"g":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}},"r":{"docs":{},"a":{"docs":{},"n":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}},"e":{"docs":{},"a":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}},"o":{"docs":{},"u":{"docs":{},"p":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}}},"u":{"docs":{},"a":{"docs":{},"r":{"docs":{},"d":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0056942619360490585}},".":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"i":{"docs":{},"c":{"docs":{"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.009523809523809525},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.009523809523809525},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.009523809523809525},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.00975609756097561}},"e":{"docs":{},".":{"docs":{},"t":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997},"/coverage.html":{"ref":"/coverage.html","tf":0.012658227848101266}},"s":{"docs":{},":":{"1":{"3":{"9":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123}}},"docs":{}},"8":{"1":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123}}},"5":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123}}},"docs":{}},"9":{"0":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123}}},"5":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123}}},"docs":{}},"docs":{}},"2":{"4":{"1":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123}}},"docs":{"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}},"5":{"8":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123}}},"docs":{"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}},"6":{"2":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123}}},"docs":{}},"8":{"4":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123}}},"docs":{}},"9":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123}}},"docs":{}},"3":{"4":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123}}},"8":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123}}},"docs":{}},"4":{"2":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123}}},"6":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123}}},"docs":{}},"6":{"1":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123}}},"docs":{}},"8":{"0":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123}}},"4":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123}}},"docs":{}},"docs":{}}}}}}}}}}}}}}}},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.001314060446780552},"/modules/LazyIsolateRoutingModule.html":{"ref":"/modules/LazyIsolateRoutingModule.html","tf":0.02},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.006711409395973154},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.01834862385321101},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.009216589861751152},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.012903225806451613},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.018633540372670808}},"t":{"docs":{},"t":{"docs":{},"t":{"docs":{"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.009174311926605505},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0064516129032258064}}}}}}}}},"g":{"docs":{},"g":{"docs":{},"g":{"docs":{},"g":{"docs":{},"g":{"docs":{},"g":{"docs":{},"g":{"docs":{},"g":{"docs":{},"g":{"8":{"7":{"6":{"8":{"7":{"6":{"8":{"7":{"6":{"8":{"7":{"docs":{},"g":{"docs":{},"g":{"docs":{},"g":{"docs":{},"g":{"docs":{},"g":{"docs":{},"g":{"docs":{},"g":{"docs":{},"g":{"docs":{},"g":{"docs":{},"g":{"docs":{"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.006711409395973154}}}}}}}}}}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}},"h":{"1":{"docs":{},"'":{"docs":{},")":{"docs":{},")":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"t":{"docs":{},"e":{"docs":{},"x":{"docs":{},"t":{"docs":{"/classes/AppPage.html":{"ref":"/classes/AppPage.html","tf":0.02631578947368421}}}}}}}}}}}}}},"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"i":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}},"e":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"s":{"docs":{},"e":{"docs":{},"d":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"(":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202}}}}}}}}}}}}}}}}}}}}}}}}}}}},"u":{"docs":{},"n":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"s":{"docs":{},"e":{"docs":{},"d":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"(":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"o":{"docs":{},"f":{"docs":{},"f":{"docs":{},"a":{"docs":{},"i":{"docs":{},"l":{"docs":{},"e":{"docs":{},"d":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0033222591362126247},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"(":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"v":{"docs":{},"e":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.01238390092879257}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{},"e":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"y":{"docs":{},"(":{"docs":{},"(":{"docs":{},"_":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}}}}}}}}},"s":{"docs":{},"(":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0033222591362126247},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}},".":{"docs":{},"e":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"y":{"docs":{},"(":{"docs":{},"(":{"docs":{},"_":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}}}}}}}}}},"(":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0055248618784530384}}}}}}}}}},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"u":{"docs":{},"n":{"docs":{},"c":{"docs":{},"t":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"(":{"docs":{},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}},"e":{"docs":{},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}},"(":{"docs":{},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.006191950464396285}}}}}}}}}}}}},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"(":{"docs":{},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.006191950464396285}}}}}}}}}}}}}}}}}}}},"n":{"docs":{},"a":{"docs":{},"v":{"docs":{},"i":{"docs":{},"g":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"m":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"s":{"docs":{},"a":{"docs":{},"s":{"docs":{},"f":{"docs":{},"u":{"docs":{},"n":{"docs":{},"c":{"docs":{},"t":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"(":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"t":{"docs":{},"o":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0033222591362126247},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"e":{"docs":{},"x":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"s":{"docs":{},"a":{"docs":{},"s":{"docs":{},"f":{"docs":{},"u":{"docs":{},"n":{"docs":{},"c":{"docs":{},"t":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"(":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"t":{"docs":{},"o":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0033222591362126247},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"a":{"docs":{},"r":{"docs":{},"r":{"docs":{},"a":{"docs":{},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"(":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"n":{"docs":{},"l":{"docs":{},"y":{"docs":{},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}},"e":{"docs":{},"s":{"docs":{},"(":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.006191950464396285}}}}}}}}}}}}}}}}},"e":{"docs":{},"r":{"docs":{},"e":{"docs":{"/index.html":{"ref":"/index.html","tf":0.001314060446780552}}}}},"i":{"docs":{},"g":{"docs":{},"h":{"docs":{},"e":{"docs":{},"r":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}},"o":{"docs":{},"m":{"docs":{},"e":{"docs":{"/index.html":{"ref":"/index.html","tf":0.003942181340341655},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.013422818791946308},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.03278688524590164}},"/":{"docs":{},":":{"docs":{},"i":{"docs":{},"s":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}},"h":{"docs":{},"o":{"docs":{},"m":{"docs":{},"e":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{"/index.html":{"ref":"/index.html","tf":0.001314060446780552},"/modules/AppModule.html":{"ref":"/modules/AppModule.html","tf":0.009174311926605505}}}}}}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0056942619360490585},"/modules/AppModule.html":{"ref":"/modules/AppModule.html","tf":0.05504587155963303},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":5.032786885245901},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.007246376811594203},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.0045871559633027525},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.004608294930875576},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0032258064516129032},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.003105590062111801},"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}}}}}}}},"'":{"docs":{},"}":{"docs":{},",":{"docs":{},"{":{"docs":{},"'":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.00819672131147541},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.007246376811594203},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.0045871559633027525},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.004608294930875576},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0032258064516129032},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.003105590062111801}}}}}}}}}},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},".":{"docs":{},"c":{"docs":{},"s":{"docs":{},"s":{"docs":{"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.01639344262295082}}}}},"h":{"docs":{},"t":{"docs":{},"m":{"docs":{},"l":{"docs":{"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.01639344262295082}}}}}}}}}}}}}}}}}}}},"t":{"docs":{},"m":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.006711409395973154},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.01639344262295082},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.014492753623188406},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.009174311926605505},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.009216589861751152},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0064516129032258064},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.006211180124223602}}}},"t":{"docs":{},"p":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}},":":{"docs":{},"/":{"docs":{},"/":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{},"h":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},":":{"4":{"2":{"0":{"0":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}}},"c":{"docs":{},"l":{"docs":{},"i":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}}}}},"s":{"docs":{},":":{"docs":{},"/":{"docs":{},"/":{"docs":{},"g":{"docs":{},"i":{"docs":{},"t":{"docs":{},"h":{"docs":{},"u":{"docs":{},"b":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"/":{"docs":{},"a":{"docs":{},"n":{"docs":{},"g":{"docs":{},"u":{"docs":{},"l":{"docs":{},"a":{"docs":{},"r":{"docs":{},"/":{"docs":{},"a":{"docs":{},"n":{"docs":{},"g":{"docs":{},"u":{"docs":{},"l":{"docs":{},"a":{"docs":{},"r":{"docs":{},"/":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"/":{"1":{"5":{"6":{"7":{"0":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"d":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"i":{"docs":{},"f":{"docs":{},"i":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506},"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}}}}}}}}},"f":{"docs":{},"(":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"v":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"n":{"docs":{},"a":{"docs":{},"p":{"docs":{},"s":{"docs":{},"h":{"docs":{},"o":{"docs":{},"t":{"docs":{},".":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"m":{"docs":{},"s":{"docs":{},"[":{"docs":{},"'":{"docs":{},"i":{"docs":{},"d":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"m":{"docs":{},"a":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}},"p":{"docs":{},"l":{"docs":{},"e":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.004380201489268506},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.006711409395973154},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.01639344262295082},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.014492753623188406},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.009174311926605505},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.009216589861751152},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0064516129032258064},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.006211180124223602},"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.011111111111111112},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202},"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.011428571428571429},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.018396846254927726},"/modules/AppModule.html":{"ref":"/modules/AppModule.html","tf":0.07339449541284404},"/modules/LazyIsolateModule.html":{"ref":"/modules/LazyIsolateModule.html","tf":0.08433734939759036},"/modules/LazyIsolateRoutingModule.html":{"ref":"/modules/LazyIsolateRoutingModule.html","tf":0.05},"/modules/LazyModule.html":{"ref":"/modules/LazyModule.html","tf":0.0759493670886076},"/modules/LazyRoleIsolateModule.html":{"ref":"/modules/LazyRoleIsolateModule.html","tf":0.06451612903225806},"/modules/LazyRolesAsyncIsolateModule.html":{"ref":"/modules/LazyRolesAsyncIsolateModule.html","tf":0.06481481481481481},"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.06666666666666667},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.06666666666666667},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.06666666666666667},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.006711409395973154},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.00819672131147541},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.007246376811594203},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.013761467889908258},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.004608294930875576},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0064516129032258064},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.009316770186335404},"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.005555555555555556},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.014678899082568808},"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.005714285714285714},"/injectables/AsyncTestService.html":{"ref":"/injectables/AsyncTestService.html","tf":0.013157894736842105},"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.01646090534979424},"/injectables/NgxPermissionsConfigurationStore.html":{"ref":"/injectables/NgxPermissionsConfigurationStore.html","tf":0.04},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.013289036544850499},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.016574585635359115},"/injectables/NgxPermissionsStore.html":{"ref":"/injectables/NgxPermissionsStore.html","tf":0.04081632653061224},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.021671826625386997},"/classes/AppPage.html":{"ref":"/classes/AppPage.html","tf":0.02631578947368421},"/classes/NgxRolesStore.html":{"ref":"/classes/NgxRolesStore.html","tf":0.02564102564102564},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.06829268292682927},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.017817371937639197}},"a":{"docs":{},"n":{"docs":{},"t":{"docs":{},"a":{"docs":{},"b":{"docs":{},"o":{"docs":{},"v":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}}},"i":{"docs":{},"f":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}},"n":{"docs":{},"o":{"docs":{},"t":{"docs":{},"i":{"docs":{},"c":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}}}}}}},"m":{"docs":{},"u":{"docs":{},"t":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0055248618784530384}}}}}}}}}}}}}},"n":{"docs":{},"c":{"docs":{},"l":{"docs":{},"u":{"docs":{},"d":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}},"d":{"docs":{},"e":{"docs":{},"x":{"docs":{"/index.html":{"ref":"/index.html","tf":5},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}}}},"i":{"docs":{},"v":{"docs":{},"i":{"docs":{},"d":{"docs":{},"u":{"docs":{"/index.html":{"ref":"/index.html","tf":0.002190100744634253}}}}}}}},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.002190100744634253},"/overview.html":{"ref":"/overview.html","tf":0.006289308176100629},"/injectables/AsyncTestService.html":{"ref":"/injectables/AsyncTestService.html","tf":5.0394736842105265},"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":5.016460905349795},"/injectables/NgxPermissionsConfigurationStore.html":{"ref":"/injectables/NgxPermissionsConfigurationStore.html","tf":5.04},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":5.004983388704319},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":5.011049723756906},"/injectables/NgxPermissionsStore.html":{"ref":"/injectables/NgxPermissionsStore.html","tf":5.061224489795919},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":5.012383900928793},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.004454342984409799},"/coverage.html":{"ref":"/coverage.html","tf":0.04430379746835443}},"o":{"docs":{},"r":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}},"(":{"docs":{},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"_":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"i":{"docs":{},"g":{"docs":{},"u":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"_":{"docs":{},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00411522633744856}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"_":{"docs":{},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192}}}}}}}}}}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{},"s":{"docs":{},"_":{"docs":{},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}}}}}}}}}}}}}}}}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"t":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"n":{"docs":{"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00411522633744856},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}},"(":{"docs":{},"'":{"docs":{},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"_":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"i":{"docs":{},"g":{"docs":{},"u":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"_":{"docs":{},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00411522633744856}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"_":{"docs":{},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192}}}}}}}}}}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{},"s":{"docs":{},"_":{"docs":{},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"i":{"docs":{},"d":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}},"t":{"docs":{},"a":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.002190100744634253}}},"n":{"docs":{},"c":{"docs":{"/index.html":{"ref":"/index.html","tf":0.001314060446780552},"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.004761904761904762},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.004878048780487805}}}}},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}},"t":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}},"r":{"docs":{},"f":{"docs":{},"a":{"docs":{},"c":{"docs":{"/index.html":{"ref":"/index.html","tf":0.001314060446780552},"/overview.html":{"ref":"/overview.html","tf":0.006289308176100629},"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.004761904761904762},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":5.009756097560976},"/interfaces/NgxPermissionsRouterData.html":{"ref":"/interfaces/NgxPermissionsRouterData.html","tf":5.04},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":5.00445434298441},"/coverage.html":{"ref":"/coverage.html","tf":0.0189873417721519}}}}},"n":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}},"p":{"docs":{},"r":{"docs":{},"e":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}},"r":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"c":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.002628120893561104}}}}}}}}},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"d":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}}},"o":{"docs":{},"i":{"docs":{},"c":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}},"k":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}},"f":{"docs":{},"o":{"docs":{"/modules/AppModule.html":{"ref":"/modules/AppModule.html","tf":0.009174311926605505},"/modules/LazyIsolateModule.html":{"ref":"/modules/LazyIsolateModule.html","tf":0.012048192771084338},"/modules/LazyIsolateRoutingModule.html":{"ref":"/modules/LazyIsolateRoutingModule.html","tf":0.01},"/modules/LazyModule.html":{"ref":"/modules/LazyModule.html","tf":0.012658227848101266},"/modules/LazyRoleIsolateModule.html":{"ref":"/modules/LazyRoleIsolateModule.html","tf":0.010752688172043012},"/modules/LazyRolesAsyncIsolateModule.html":{"ref":"/modules/LazyRolesAsyncIsolateModule.html","tf":0.009259259259259259},"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.004761904761904762},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.00819672131147541},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.007246376811594203},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.0045871559633027525},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.004608294930875576},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0032258064516129032},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.003105590062111801},"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.005555555555555556},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101},"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.005714285714285714},"/injectables/AsyncTestService.html":{"ref":"/injectables/AsyncTestService.html","tf":0.013157894736842105},"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00411522633744856},"/injectables/NgxPermissionsConfigurationStore.html":{"ref":"/injectables/NgxPermissionsConfigurationStore.html","tf":0.013333333333333334},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192},"/injectables/NgxPermissionsStore.html":{"ref":"/injectables/NgxPermissionsStore.html","tf":0.02040816326530612},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426},"/classes/AppPage.html":{"ref":"/classes/AppPage.html","tf":0.02631578947368421},"/classes/NgxPermission.html":{"ref":"/classes/NgxPermission.html","tf":0.022222222222222223},"/classes/NgxRole.html":{"ref":"/classes/NgxRole.html","tf":0.02127659574468085},"/classes/NgxRolesStore.html":{"ref":"/classes/NgxRolesStore.html","tf":0.02564102564102564},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.004878048780487805},"/interfaces/NgxPermissionsRouterData.html":{"ref":"/interfaces/NgxPermissionsRouterData.html","tf":0.02},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{"/modules/AppModule.html":{"ref":"/modules/AppModule.html","tf":0.009174311926605505},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.00819672131147541},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.06521739130434782},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.0045871559633027525},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.004608294930875576},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0032258064516129032},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.003105590062111801}},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{"/modules/AppModule.html":{"ref":"/modules/AppModule.html","tf":0.05504587155963303},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.00819672131147541},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":5.028985507246377},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.0045871559633027525},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.004608294930875576},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0032258064516129032},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.003105590062111801},"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}}}}}}}}}}}}}}},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"u":{"docs":{},"b":{"docs":{},"s":{"docs":{},"c":{"docs":{},"r":{"docs":{},"i":{"docs":{},"p":{"docs":{},"t":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.005504587155963303}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"u":{"docs":{},"t":{"docs":{"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.05555555555555555},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.029357798165137616},"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.05714285714285714}}}}}},"s":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}},"l":{"docs":{},"l":{"docs":{},"f":{"docs":{},"a":{"docs":{},"l":{"docs":{},"s":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}}},"o":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013},"/modules/LazyIsolateModule.html":{"ref":"/modules/LazyIsolateModule.html","tf":0.012048192771084338},"/modules/LazyIsolateRoutingModule.html":{"ref":"/modules/LazyIsolateRoutingModule.html","tf":0.01},"/modules/LazyRoleIsolateModule.html":{"ref":"/modules/LazyRoleIsolateModule.html","tf":0.03225806451612903},"/modules/LazyRolesAsyncIsolateModule.html":{"ref":"/modules/LazyRolesAsyncIsolateModule.html","tf":0.009259259259259259},"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.004761904761904762},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.013422818791946308},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.00819672131147541},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.007246376811594203},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.05963302752293578},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.03225806451612903},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.07419354838709677},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.034161490683229816},"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00411522633744856},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0055248618784530384},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.004878048780487805},"/coverage.html":{"ref":"/coverage.html","tf":0.012658227848101266}},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506},"/modules/LazyIsolateModule.html":{"ref":"/modules/LazyIsolateModule.html","tf":0.07228915662650602},"/modules/LazyIsolateRoutingModule.html":{"ref":"/modules/LazyIsolateRoutingModule.html","tf":0.06},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.00819672131147541},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.007246376811594203},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":5.018348623853211},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.004608294930875576},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0032258064516129032},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.003105590062111801},"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}}}}}}}},".":{"docs":{},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},".":{"docs":{},"t":{"docs":{"/modules/LazyIsolateModule.html":{"ref":"/modules/LazyIsolateModule.html","tf":0.012048192771084338},"/modules/LazyRoleIsolateModule.html":{"ref":"/modules/LazyRoleIsolateModule.html","tf":0.010752688172043012},"/modules/LazyRolesAsyncIsolateModule.html":{"ref":"/modules/LazyRolesAsyncIsolateModule.html","tf":0.009259259259259259}}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},".":{"docs":{},"c":{"docs":{},"s":{"docs":{},"s":{"docs":{"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.009174311926605505}}}}},"h":{"docs":{},"t":{"docs":{},"m":{"docs":{},"l":{"docs":{"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.009174311926605505}}}}}}}}}}}}}}}}},"/":{"docs":{},"i":{"docs":{},"s":{"docs":{},"o":{"docs":{},"l":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{"/modules/LazyIsolateModule.html":{"ref":"/modules/LazyIsolateModule.html","tf":0.012048192771084338},"/modules/LazyIsolateRoutingModule.html":{"ref":"/modules/LazyIsolateRoutingModule.html","tf":0.01}}}}}}}}},"/":{"docs":{},"i":{"docs":{},"s":{"docs":{},"o":{"docs":{},"l":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},".":{"docs":{},"t":{"docs":{"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.0045871559633027525},"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}},"s":{"docs":{},":":{"1":{"0":{"docs":{"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.0045871559633027525}}},"4":{"docs":{"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.0045871559633027525}}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"l":{"docs":{},"a":{"docs":{},"z":{"docs":{},"i":{"docs":{"/modules/LazyIsolateModule.html":{"ref":"/modules/LazyIsolateModule.html","tf":0.012048192771084338},"/modules/LazyIsolateRoutingModule.html":{"ref":"/modules/LazyIsolateRoutingModule.html","tf":0.01},"/modules/LazyRoleIsolateModule.html":{"ref":"/modules/LazyRoleIsolateModule.html","tf":0.010752688172043012},"/modules/LazyRolesAsyncIsolateModule.html":{"ref":"/modules/LazyRolesAsyncIsolateModule.html","tf":0.009259259259259259},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.00967741935483871},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.009316770186335404},"/coverage.html":{"ref":"/coverage.html","tf":0.012658227848101266}}}}}},"a":{"docs":{},"s":{"docs":{},"y":{"docs":{},"n":{"docs":{},"c":{"docs":{"/injectables/AsyncTestService.html":{"ref":"/injectables/AsyncTestService.html","tf":0.06578947368421052},"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}}}}}}}},"'":{"docs":{},"}":{"docs":{},",":{"docs":{},"{":{"docs":{},"'":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.00819672131147541},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.007246376811594203},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.0045871559633027525},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.004608294930875576},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0032258064516129032},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.003105590062111801}}}}}}}}}},"a":{"docs":{},"d":{"docs":{},"d":{"docs":{"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577}}}}},"l":{"docs":{},"a":{"docs":{},"z":{"docs":{},"i":{"docs":{"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.006711409395973154}}}}}}}}}}},"b":{"docs":{},"o":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{},"a":{"docs":{},"n":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426},"/miscellaneous.html":{"ref":"/miscellaneous.html","tf":0.015625}},"(":{"docs":{},"t":{"docs":{},"h":{"docs":{},"i":{"docs":{},"s":{"docs":{},".":{"docs":{},"c":{"docs":{},"u":{"docs":{},"r":{"docs":{},"r":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"z":{"docs":{},"e":{"docs":{},"d":{"docs":{},"s":{"docs":{},"t":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202}}}}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}}}}}}}},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{"/miscellaneous.html":{"ref":"/miscellaneous.html","tf":0.015625}}}}}}}}}}}}}},"f":{"docs":{},"u":{"docs":{},"n":{"docs":{},"c":{"docs":{},"t":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997},"/miscellaneous.html":{"ref":"/miscellaneous.html","tf":0.015625}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"(":{"docs":{},"t":{"docs":{},"h":{"docs":{},"i":{"docs":{},"s":{"docs":{},".":{"docs":{},"o":{"docs":{},"n":{"docs":{},"l":{"docs":{},"y":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"s":{"docs":{},"e":{"docs":{},"d":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"y":{"docs":{},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{},"i":{"docs":{},"n":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"u":{"docs":{},"n":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"s":{"docs":{},"e":{"docs":{},"d":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"y":{"docs":{},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{},"i":{"docs":{},"n":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}}}}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"s":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{},"e":{"docs":{},".":{"docs":{},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192}}}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{},"e":{"docs":{},".":{"docs":{},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{},"e":{"docs":{},"[":{"docs":{},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{},"]":{"docs":{},".":{"docs":{},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"u":{"docs":{},"n":{"docs":{},"c":{"docs":{},"t":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"(":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"t":{"docs":{},"o":{"docs":{},")":{"docs":{},".":{"docs":{},"n":{"docs":{},"a":{"docs":{},"v":{"docs":{},"i":{"docs":{},"g":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"m":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}}},"e":{"docs":{},"x":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},".":{"docs":{},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}},"o":{"docs":{},"n":{"docs":{},"l":{"docs":{},"i":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"t":{"docs":{},"o":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.008305647840531562},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.011135857461024499}}}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"t":{"docs":{},"o":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}}}}}},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"u":{"docs":{},"n":{"docs":{},"c":{"docs":{},"t":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192}}}}}}}}}}}}}}}}},"f":{"docs":{},"u":{"docs":{},"n":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"t":{"docs":{},"o":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"c":{"docs":{},"k":{"docs":{"/miscellaneous.html":{"ref":"/miscellaneous.html","tf":0.015625}}}}}}}}}}}}}}}}}}}}}}}}},"a":{"docs":{},"i":{"docs":{},"l":{"docs":{},"e":{"docs":{},"d":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{},"y":{"docs":{},"o":{"docs":{},"f":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"t":{"docs":{},"o":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123}},"(":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0033222591362126247},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101},"/miscellaneous.html":{"ref":"/miscellaneous.html","tf":0.015625}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"(":{"docs":{},"t":{"docs":{},"h":{"docs":{},"i":{"docs":{},"s":{"docs":{},".":{"docs":{},"o":{"docs":{},"n":{"docs":{},"l":{"docs":{},"y":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"s":{"docs":{},"e":{"docs":{},"d":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"y":{"docs":{},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{},"i":{"docs":{},"n":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"u":{"docs":{},"n":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"s":{"docs":{},"e":{"docs":{},"d":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"y":{"docs":{},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{},"i":{"docs":{},"n":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{"/miscellaneous.html":{"ref":"/miscellaneous.html","tf":0.015625}}}}}}}}}}}}},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"i":{"docs":{},"l":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123}},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},"(":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0033222591362126247},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}}}}}}}}}}}}}}}}}}}}},"l":{"docs":{},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{},"o":{"docs":{},"b":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997},"/miscellaneous.html":{"ref":"/miscellaneous.html","tf":0.015625}},"(":{"docs":{},"o":{"docs":{},"b":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},".":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"t":{"docs":{},"o":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0033222591362126247},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.004454342984409799}}}}}}}}}}}}}}}}}}}}}}}},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{"/miscellaneous.html":{"ref":"/miscellaneous.html","tf":0.015625}}}}}}}}}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426},"/miscellaneous.html":{"ref":"/miscellaneous.html","tf":0.015625}},"e":{"docs":{},"(":{"docs":{},"t":{"docs":{},"h":{"docs":{},"i":{"docs":{},"s":{"docs":{},".":{"docs":{},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{},"e":{"docs":{},".":{"docs":{},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{},"e":{"docs":{},"[":{"docs":{},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{},"]":{"docs":{},".":{"docs":{},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"u":{"docs":{},"n":{"docs":{},"c":{"docs":{},"t":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{"/miscellaneous.html":{"ref":"/miscellaneous.html","tf":0.015625}}}}}}}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"w":{"docs":{},"i":{"docs":{},"t":{"docs":{},"h":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123}},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"(":{"docs":{},"o":{"docs":{},"b":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0033222591362126247},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"t":{"docs":{},"'":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}},"e":{"docs":{},"r":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}},"j":{"docs":{},"o":{"docs":{},"h":{"docs":{},"n":{"docs":{},"i":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0017520805957074025}}}}}},"s":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}},"k":{"docs":{},"a":{"docs":{},"r":{"docs":{},"m":{"docs":{},"a":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}},"e":{"docs":{},"y":{"docs":{"/index.html":{"ref":"/index.html","tf":0.001314060446780552},"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.012345679012345678},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.013812154696132596}}}},"h":{"docs":{},"y":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"k":{"docs":{},"o":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}},"n":{"docs":{},"o":{"docs":{},"w":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}},"l":{"docs":{},"a":{"docs":{"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.006211180124223602}},"z":{"docs":{},"i":{"docs":{"/index.html":{"ref":"/index.html","tf":0.002628120893561104},"/modules/LazyIsolateModule.html":{"ref":"/modules/LazyIsolateModule.html","tf":0.012048192771084338},"/modules/LazyModule.html":{"ref":"/modules/LazyModule.html","tf":0.02531645569620253},"/modules/LazyRoleIsolateModule.html":{"ref":"/modules/LazyRoleIsolateModule.html","tf":0.021505376344086023},"/modules/LazyRolesAsyncIsolateModule.html":{"ref":"/modules/LazyRolesAsyncIsolateModule.html","tf":0.018518518518518517},"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.004761904761904762},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.02348993288590604},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.02459016393442623},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.021739130434782608},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.06880733944954129},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.0967741935483871},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.06774193548387097},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.06521739130434782},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.004878048780487805}}},"y":{"docs":{},"i":{"docs":{},"s":{"docs":{},"o":{"docs":{},"l":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"d":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},"d":{"docs":{},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}}}}}}},"a":{"docs":{},"s":{"docs":{},"y":{"docs":{},"n":{"docs":{},"c":{"docs":{},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{},"s":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"/overview.html":{"ref":"/overview.html","tf":0.018867924528301886},"/modules/LazyRolesAsyncIsolateModule.html":{"ref":"/modules/LazyRolesAsyncIsolateModule.html","tf":0.046296296296296294}}}}}}}}}}}}}}}}}}}}}}}},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"/overview.html":{"ref":"/overview.html","tf":0.050314465408805034},"/modules.html":{"ref":"/modules.html","tf":0.02},"/modules/LazyIsolateModule.html":{"ref":"/modules/LazyIsolateModule.html","tf":5.144578313253012}}}}}}},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{},"s":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"/overview.html":{"ref":"/overview.html","tf":0.018867924528301886},"/modules/LazyRoleIsolateModule.html":{"ref":"/modules/LazyRoleIsolateModule.html","tf":0.053763440860215055}}}}}}}}}}}}}}}}},"u":{"docs":{},"t":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"/overview.html":{"ref":"/overview.html","tf":0.03773584905660377},"/modules.html":{"ref":"/modules.html","tf":0.02},"/modules/LazyIsolateModule.html":{"ref":"/modules/LazyIsolateModule.html","tf":0.07228915662650602},"/modules/LazyIsolateRoutingModule.html":{"ref":"/modules/LazyIsolateRoutingModule.html","tf":5.07}}}}}}}}}}}}}}}}}}}}},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},"d":{"docs":{},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}}}}}},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"/overview.html":{"ref":"/overview.html","tf":0.050314465408805034},"/modules.html":{"ref":"/modules.html","tf":0.02},"/modules/LazyModule.html":{"ref":"/modules/LazyModule.html","tf":5.151898734177215}}}}}}},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{},"i":{"docs":{},"s":{"docs":{},"o":{"docs":{},"l":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"/overview.html":{"ref":"/overview.html","tf":0.050314465408805034},"/modules.html":{"ref":"/modules.html","tf":0.02},"/modules/LazyRoleIsolateModule.html":{"ref":"/modules/LazyRoleIsolateModule.html","tf":5.129032258064516}}}}}}},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{"/modules/LazyRoleIsolateModule.html":{"ref":"/modules/LazyRoleIsolateModule.html","tf":0.06451612903225806},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.00819672131147541},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.007246376811594203},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.0045871559633027525},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.004608294930875576},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":5.012903225806451},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.003105590062111801},"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"a":{"docs":{},"s":{"docs":{},"y":{"docs":{},"n":{"docs":{},"c":{"docs":{},"i":{"docs":{},"s":{"docs":{},"o":{"docs":{},"l":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"/overview.html":{"ref":"/overview.html","tf":0.050314465408805034},"/modules.html":{"ref":"/modules.html","tf":0.02},"/modules/LazyRolesAsyncIsolateModule.html":{"ref":"/modules/LazyRolesAsyncIsolateModule.html","tf":5.12962962962963}}}}}}}}}}}}}},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{"/modules/LazyRolesAsyncIsolateModule.html":{"ref":"/modules/LazyRolesAsyncIsolateModule.html","tf":0.05555555555555555},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.00819672131147541},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.007246376811594203},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.0045871559633027525},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.004608294930875576},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0032258064516129032},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":5.012422360248447},"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}}}}}}}}}}}}}}}}}}}},"u":{"docs":{},"t":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"/overview.html":{"ref":"/overview.html","tf":0.018867924528301886},"/modules/LazyModule.html":{"ref":"/modules/LazyModule.html","tf":0.06329113924050633}}}}}}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{"/modules/LazyModule.html":{"ref":"/modules/LazyModule.html","tf":0.0759493670886076},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.00819672131147541},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.007246376811594203},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.0045871559633027525},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":5.018433179723503},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0032258064516129032},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.003105590062111801},"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}}}}}}}}}}}}}}}}}}}},"e":{"docs":{},"a":{"docs":{},"v":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}},"t":{"docs":{},"'":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}},"v":{"docs":{},"e":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{"/overview.html":{"ref":"/overview.html","tf":0.006289308176100629},"/modules/AppModule.html":{"ref":"/modules/AppModule.html","tf":0.009174311926605505},"/modules/LazyIsolateModule.html":{"ref":"/modules/LazyIsolateModule.html","tf":0.012048192771084338},"/modules/LazyIsolateRoutingModule.html":{"ref":"/modules/LazyIsolateRoutingModule.html","tf":0.01},"/modules/LazyModule.html":{"ref":"/modules/LazyModule.html","tf":0.012658227848101266},"/modules/LazyRoleIsolateModule.html":{"ref":"/modules/LazyRoleIsolateModule.html","tf":0.010752688172043012},"/modules/LazyRolesAsyncIsolateModule.html":{"ref":"/modules/LazyRolesAsyncIsolateModule.html","tf":0.009259259259259259},"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.004761904761904762},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.00819672131147541},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.007246376811594203},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.0045871559633027525},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.004608294930875576},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0032258064516129032},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.003105590062111801}}}}}}},"i":{"docs":{},"b":{"docs":{},"r":{"docs":{},"a":{"docs":{},"r":{"docs":{},"i":{"docs":{"/index.html":{"ref":"/index.html","tf":0.005256241787122208}}}}}}},"c":{"docs":{},"e":{"docs":{},"n":{"docs":{},"s":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}}},"s":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},"i":{"docs":{},"c":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}},"e":{"docs":{},"v":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}},"m":{"docs":{},"e":{"docs":{},"e":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}},"s":{"docs":{},"o":{"docs":{},"n":{"docs":{},"g":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}}}}},"t":{"docs":{},"t":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{"/index.html":{"ref":"/index.html","tf":0.003942181340341655},"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.004761904761904762},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.010067114093959731},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.028985507246376812},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.004878048780487805}},"c":{"docs":{},"h":{"docs":{},"i":{"docs":{},"l":{"docs":{},"d":{"docs":{},"r":{"docs":{},"e":{"docs":{},"n":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"t":{"docs":{"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577}}}}}}},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"(":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"i":{"docs":{},"c":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{"/modules/AppModule.html":{"ref":"/modules/AppModule.html","tf":0.009174311926605505}},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},".":{"docs":{},"c":{"docs":{},"s":{"docs":{},"s":{"docs":{"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.014492753623188406}}}}},"h":{"docs":{},"t":{"docs":{},"m":{"docs":{},"l":{"docs":{"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.014492753623188406}}}}}},"t":{"docs":{"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.007246376811594203},"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}},"s":{"docs":{},":":{"1":{"2":{"docs":{"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.007246376811594203}}},"docs":{}},"8":{"docs":{"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.007246376811594203}}},"docs":{}}}}}}}}}}}}}}},"/":{"docs":{},"i":{"docs":{},"n":{"docs":{},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{"/modules/AppModule.html":{"ref":"/modules/AppModule.html","tf":0.009174311926605505},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.021739130434782608},"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}}}}}}}},"'":{"docs":{},"}":{"docs":{},",":{"docs":{},"{":{"docs":{},"'":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.00819672131147541},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.007246376811594203},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.0045871559633027525},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.004608294930875576},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0032258064516129032},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.003105590062111801}}}}}}}}}}}},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.001314060446780552}}}}},"g":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}},"i":{"docs":{},"c":{"docs":{"/index.html":{"ref":"/index.html","tf":0.002190100744634253}}},"n":{"docs":{"/index.html":{"ref":"/index.html","tf":0.002628120893561104}}}},"e":{"docs":{"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.007246376811594203}}}},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}},"w":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"l":{"docs":{},"c":{"docs":{},"a":{"docs":{},"s":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}}}}}}}},"m":{"docs":{"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.007246376811594203}},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}},"i":{"docs":{},"n":{"docs":{"/index.html":{"ref":"/index.html","tf":0.001314060446780552}}}},"k":{"docs":{},"e":{"docs":{"/index.html":{"ref":"/index.html","tf":0.005256241787122208}}}},"n":{"docs":{},"a":{"docs":{},"g":{"docs":{"/index.html":{"ref":"/index.html","tf":0.003942181340341655}}}},"i":{"docs":{},"p":{"docs":{},"u":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}},"u":{"docs":{},"a":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}}},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{"/index.html":{"ref":"/index.html","tf":0.001314060446780552},"/overview.html":{"ref":"/overview.html","tf":0.012578616352201259},"/modules.html":{"ref":"/modules.html","tf":0.04},"/modules/AppModule.html":{"ref":"/modules/AppModule.html","tf":0.01834862385321101},"/modules/LazyIsolateModule.html":{"ref":"/modules/LazyIsolateModule.html","tf":0.024096385542168676},"/modules/LazyIsolateRoutingModule.html":{"ref":"/modules/LazyIsolateRoutingModule.html","tf":0.02},"/modules/LazyModule.html":{"ref":"/modules/LazyModule.html","tf":0.02531645569620253},"/modules/LazyRoleIsolateModule.html":{"ref":"/modules/LazyRoleIsolateModule.html","tf":0.021505376344086023},"/modules/LazyRolesAsyncIsolateModule.html":{"ref":"/modules/LazyRolesAsyncIsolateModule.html","tf":0.018518518518518517},"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.009523809523809525},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.009523809523809525},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.009523809523809525},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.006711409395973154},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.01639344262295082},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.014492753623188406},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.009174311926605505},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.009216589861751152},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0064516129032258064},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.006211180124223602},"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.011111111111111112},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202},"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.011428571428571429},"/injectables/AsyncTestService.html":{"ref":"/injectables/AsyncTestService.html","tf":0.02631578947368421},"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00823045267489712},"/injectables/NgxPermissionsConfigurationStore.html":{"ref":"/injectables/NgxPermissionsConfigurationStore.html","tf":0.02666666666666667},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0033222591362126247},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0055248618784530384},"/injectables/NgxPermissionsStore.html":{"ref":"/injectables/NgxPermissionsStore.html","tf":0.04081632653061224},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.006191950464396285},"/classes/AppPage.html":{"ref":"/classes/AppPage.html","tf":0.05263157894736842},"/classes/NgxPermission.html":{"ref":"/classes/NgxPermission.html","tf":0.044444444444444446},"/classes/NgxRole.html":{"ref":"/classes/NgxRole.html","tf":0.0425531914893617},"/classes/NgxRolesStore.html":{"ref":"/classes/NgxRolesStore.html","tf":0.05128205128205128},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.00975609756097561},"/interfaces/NgxPermissionsRouterData.html":{"ref":"/interfaces/NgxPermissionsRouterData.html","tf":0.04},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.004454342984409799},"/miscellaneous.html":{"ref":"/miscellaneous.html","tf":0.03125},"/coverage.html":{"ref":"/coverage.html","tf":0.012658227848101266}}}}},"p":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0055248618784530384},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.006191950464396285}},"(":{"docs":{},"(":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}}}}}}}}}},"e":{"docs":{},"a":{"docs":{},"n":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}},"e":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{"/index.html":{"ref":"/index.html","tf":0.005256241787122208},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.00819672131147541},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.007246376811594203},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.0045871559633027525},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.004608294930875576},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0032258064516129032},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.003105590062111801},"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.005555555555555556},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101},"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.005714285714285714},"/injectables/AsyncTestService.html":{"ref":"/injectables/AsyncTestService.html","tf":0.013157894736842105},"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00411522633744856},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426},"/classes/AppPage.html":{"ref":"/classes/AppPage.html","tf":0.02631578947368421}}}}},"a":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.00819672131147541},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.007246376811594203},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.0045871559633027525},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.004608294930875576},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0032258064516129032},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.003105590062111801},"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.005555555555555556},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101},"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.005714285714285714}}}}}}}},"r":{"docs":{},"g":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202}},"e":{"docs":{},"(":{"docs":{},"t":{"docs":{},"h":{"docs":{},"i":{"docs":{},"s":{"docs":{},".":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"i":{"docs":{},"c":{"docs":{},"e":{"docs":{},".":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"m":{"docs":{},"a":{"docs":{},"p":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}},"(":{"docs":{},"(":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0033222591362126247},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.004454342984409799}}}}}},"i":{"docs":{},"s":{"docs":{},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},"f":{"docs":{},"a":{"docs":{},"l":{"docs":{},"s":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}}}}},"p":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}}}}}}}}},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}}}}}}}}}},"a":{"docs":{},"l":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0055248618784530384},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.006191950464396285}}}}}}}},"i":{"docs":{},"n":{"docs":{},"i":{"docs":{},"m":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}},"s":{"docs":{},"s":{"docs":{"/index.html":{"ref":"/index.html","tf":0.001314060446780552}}},"c":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"a":{"docs":{},"n":{"docs":{"/miscellaneous.html":{"ref":"/miscellaneous.html","tf":10.015625}}}}}}}}},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{"/index.html":{"ref":"/index.html","tf":0.002190100744634253}}},"l":{"docs":{},"/":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.004761904761904762},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.004878048780487805},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{},"l":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192}}}}}}}}}}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{},".":{"docs":{},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{},"l":{"docs":{"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.004761904761904762},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.004878048780487805}}}}}}}}}}}}}}},"i":{"docs":{},"f":{"docs":{},"i":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}},"u":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0030661410424879547},"/overview.html":{"ref":"/overview.html","tf":0.012578616352201259},"/modules.html":{"ref":"/modules.html","tf":10.02},"/modules/AppModule.html":{"ref":"/modules/AppModule.html","tf":5.018348623853211},"/modules/LazyIsolateModule.html":{"ref":"/modules/LazyIsolateModule.html","tf":5.024096385542169},"/modules/LazyIsolateRoutingModule.html":{"ref":"/modules/LazyIsolateRoutingModule.html","tf":5.02},"/modules/LazyModule.html":{"ref":"/modules/LazyModule.html","tf":5.025316455696203},"/modules/LazyRoleIsolateModule.html":{"ref":"/modules/LazyRoleIsolateModule.html","tf":5.021505376344086},"/modules/LazyRolesAsyncIsolateModule.html":{"ref":"/modules/LazyRolesAsyncIsolateModule.html","tf":5.018518518518518},"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":5.014285714285714},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":5.014285714285714},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":5.014285714285714},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.009174311926605505},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.018433179723502304},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0064516129032258064},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.006211180124223602},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.004878048780487805}},"e":{"docs":{},".":{"docs":{},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"#":{"docs":{},"l":{"docs":{},"a":{"docs":{},"z":{"docs":{},"y":{"docs":{},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}}}}}}}}},".":{"docs":{},"t":{"docs":{"/modules/LazyModule.html":{"ref":"/modules/LazyModule.html","tf":0.012658227848101266}}}}}}}}}}},"/":{"docs":{},"l":{"docs":{},"a":{"docs":{},"z":{"docs":{},"i":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013},"/modules/LazyModule.html":{"ref":"/modules/LazyModule.html","tf":0.012658227848101266},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.013824884792626729},"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}}}}}}},"w":{"docs":{},"i":{"docs":{},"t":{"docs":{},"h":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"v":{"docs":{},"i":{"docs":{},"d":{"docs":{"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.014285714285714285},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.014285714285714285},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.014285714285714285},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.014634146341463415}}}}}}}}}}}},"l":{"docs":{},"a":{"docs":{},"z":{"docs":{},"i":{"docs":{"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577}}}}}}}}}},"n":{"docs":{},"t":{"docs":{},"h":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}},"r":{"docs":{},"e":{"docs":{"/index.html":{"ref":"/index.html","tf":0.002190100744634253}}}}},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{},"i":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}},"p":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.00700832238282961}}}}}}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{"/index.html":{"ref":"/index.html","tf":0.003942181340341655},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.010067114093959731},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.02459016393442623},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.021739130434782608},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.013761467889908258},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.013824884792626729},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.00967741935483871},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.009316770186335404},"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.024691358024691357},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.024861878453038673},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.02476780185758514},"/classes/NgxPermission.html":{"ref":"/classes/NgxPermission.html","tf":0.08888888888888889},"/classes/NgxRole.html":{"ref":"/classes/NgxRole.html","tf":0.0851063829787234}},"s":{"docs":{},".":{"docs":{},"l":{"docs":{},"e":{"docs":{},"n":{"docs":{},"g":{"docs":{},"t":{"docs":{},"h":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}}}}}}}}}}}},"v":{"docs":{},"i":{"docs":{},"g":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"(":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"m":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}}}}}}},"t":{"docs":{},"o":{"docs":{"/classes/AppPage.html":{"ref":"/classes/AppPage.html","tf":0.07894736842105263}}}}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"m":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0030661410424879547},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0066815144766146995}}}}}}}}},"e":{"docs":{},"x":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{"/index.html":{"ref":"/index.html","tf":0.003942181340341655},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.006644518272425249},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.013363028953229399}}}}}}}}}}}}}}}},"e":{"docs":{},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"a":{"docs":{},"r":{"docs":{},"i":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}},"e":{"docs":{},"d":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0017520805957074025}}}},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}},"w":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506},"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.011111111111111112},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202},"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.011428571428571429},"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.01646090534979424},"/injectables/NgxPermissionsConfigurationStore.html":{"ref":"/injectables/NgxPermissionsConfigurationStore.html","tf":0.013333333333333334},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0055248618784530384},"/injectables/NgxPermissionsStore.html":{"ref":"/injectables/NgxPermissionsStore.html","tf":0.02040816326530612},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.006191950464396285},"/classes/NgxRolesStore.html":{"ref":"/classes/NgxRolesStore.html","tf":0.02564102564102564}},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192}}}}}}}}}},"x":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}},"g":{"2":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}},"docs":{"/index.html":{"ref":"/index.html","tf":0.002628120893561104}},"i":{"docs":{},"f":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.00788436268068331},"/modules/AppModule.html":{"ref":"/modules/AppModule.html","tf":0.01834862385321101},"/modules/LazyIsolateModule.html":{"ref":"/modules/LazyIsolateModule.html","tf":0.024096385542168676},"/modules/LazyIsolateRoutingModule.html":{"ref":"/modules/LazyIsolateRoutingModule.html","tf":0.02},"/modules/LazyModule.html":{"ref":"/modules/LazyModule.html","tf":0.02531645569620253},"/modules/LazyRoleIsolateModule.html":{"ref":"/modules/LazyRoleIsolateModule.html","tf":0.021505376344086023},"/modules/LazyRolesAsyncIsolateModule.html":{"ref":"/modules/LazyRolesAsyncIsolateModule.html","tf":0.018518518518518517},"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.02857142857142857},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.02857142857142857},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.02857142857142857},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.02926829268292683}}}}}}},"o":{"docs":{},"n":{"docs":{},"i":{"docs":{},"n":{"docs":{},"i":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.010067114093959731},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.02459016393442623},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.021739130434782608},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.013761467889908258},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.013824884792626729},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.00967741935483871},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.009316770186335404},"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.016666666666666666},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.005504587155963303},"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.017142857142857144}}}}}},"d":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"o":{"docs":{},"y":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.005504587155963303}}}}}}}}}}},"x":{"docs":{"/index.html":{"ref":"/index.html","tf":0.003942181340341655},"/modules/AppModule.html":{"ref":"/modules/AppModule.html","tf":0.009174311926605505},"/modules/LazyIsolateModule.html":{"ref":"/modules/LazyIsolateModule.html","tf":0.012048192771084338},"/modules/LazyIsolateRoutingModule.html":{"ref":"/modules/LazyIsolateRoutingModule.html","tf":0.01},"/modules/LazyModule.html":{"ref":"/modules/LazyModule.html","tf":0.012658227848101266},"/modules/LazyRoleIsolateModule.html":{"ref":"/modules/LazyRoleIsolateModule.html","tf":0.010752688172043012},"/modules/LazyRolesAsyncIsolateModule.html":{"ref":"/modules/LazyRolesAsyncIsolateModule.html","tf":0.009259259259259259},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.009174311926605505},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0032258064516129032},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.003105590062111801}},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.008287292817679558},"/classes/NgxPermission.html":{"ref":"/classes/NgxPermission.html","tf":5.044444444444444},"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"e":{"docs":{},"l":{"docs":{},"s":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506},"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.011111111111111112},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202},"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.011428571428571429}}}},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.001314060446780552},"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.011111111111111112},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202},"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.011428571428571429}},"e":{"docs":{},"l":{"docs":{},"s":{"docs":{"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.011111111111111112},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202},"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.011428571428571429}}}}},"t":{"docs":{},"h":{"docs":{},"e":{"docs":{},"n":{"docs":{"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.011111111111111112},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202},"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.011428571428571429}}}}}},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"s":{"docs":{},"e":{"docs":{},"d":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"i":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202}}}}}}}}}}}}}}}}}}}},"u":{"docs":{},"n":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"s":{"docs":{},"e":{"docs":{},"d":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"i":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202}}}}}}}}}}}}}}}}}}}}}}}}}}}},"g":{"docs":{},"u":{"docs":{},"a":{"docs":{},"r":{"docs":{},"d":{"docs":{"/index.html":{"ref":"/index.html","tf":0.009636443276390714},"/modules/LazyIsolateRoutingModule.html":{"ref":"/modules/LazyIsolateRoutingModule.html","tf":0.02},"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.014285714285714285},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.014285714285714285},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.014285714285714285},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":5.003322259136213},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.014634146341463415},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997},"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}}}}}}},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0017520805957074025},"/overview.html":{"ref":"/overview.html","tf":0.018867924528301886},"/modules.html":{"ref":"/modules.html","tf":0.02},"/modules/AppModule.html":{"ref":"/modules/AppModule.html","tf":0.009174311926605505},"/modules/LazyIsolateModule.html":{"ref":"/modules/LazyIsolateModule.html","tf":0.012048192771084338},"/modules/LazyModule.html":{"ref":"/modules/LazyModule.html","tf":0.012658227848101266},"/modules/LazyRoleIsolateModule.html":{"ref":"/modules/LazyRoleIsolateModule.html","tf":0.010752688172043012},"/modules/LazyRolesAsyncIsolateModule.html":{"ref":"/modules/LazyRolesAsyncIsolateModule.html","tf":0.009259259259259259},"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.014285714285714285},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":5.042857142857143},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.014285714285714285},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.014634146341463415}},"e":{"docs":{},".":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"c":{"docs":{},"h":{"docs":{},"i":{"docs":{},"l":{"docs":{},"d":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013},"/overview.html":{"ref":"/overview.html","tf":0.018867924528301886},"/modules/LazyModule.html":{"ref":"/modules/LazyModule.html","tf":0.05063291139240506},"/modules/LazyRoleIsolateModule.html":{"ref":"/modules/LazyRoleIsolateModule.html","tf":0.010752688172043012},"/modules/LazyRolesAsyncIsolateModule.html":{"ref":"/modules/LazyRolesAsyncIsolateModule.html","tf":0.009259259259259259}},"(":{"docs":{},"a":{"docs":{},"r":{"docs":{},"g":{"docs":{"/overview.html":{"ref":"/overview.html","tf":0.031446540880503145},"/modules/LazyIsolateModule.html":{"ref":"/modules/LazyIsolateModule.html","tf":0.03614457831325301},"/modules/LazyRoleIsolateModule.html":{"ref":"/modules/LazyRoleIsolateModule.html","tf":0.03225806451612903},"/modules/LazyRolesAsyncIsolateModule.html":{"ref":"/modules/LazyRolesAsyncIsolateModule.html","tf":0.027777777777777776}}}}},"{":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"i":{"docs":{},"s":{"docs":{},"o":{"docs":{},"l":{"docs":{"/modules/LazyIsolateModule.html":{"ref":"/modules/LazyIsolateModule.html","tf":0.012048192771084338}}}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"o":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506},"/overview.html":{"ref":"/overview.html","tf":0.018867924528301886},"/modules/AppModule.html":{"ref":"/modules/AppModule.html","tf":0.03669724770642202}}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"i":{"docs":{},"g":{"docs":{"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.014285714285714285},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.014285714285714285},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.014285714285714285},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":5.019512195121951},"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}}}}}}}}}}}}}},"o":{"docs":{},"n":{"docs":{},"l":{"docs":{},"i":{"docs":{"/index.html":{"ref":"/index.html","tf":0.001314060446780552},"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.011111111111111112},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202},"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.011428571428571429}}},"y":{"docs":{},"]":{"docs":{},",":{"docs":{},"[":{"docs":{},"n":{"docs":{},"g":{"docs":{},"x":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.00819672131147541},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.007246376811594203},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.0045871559633027525},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.004608294930875576},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0032258064516129032},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.003105590062111801},"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.011111111111111112},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202},"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.011428571428571429}},"]":{"docs":{},"'":{"docs":{},"}":{"docs":{},",":{"docs":{},"{":{"docs":{},"'":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.006711409395973154},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.01639344262295082},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.014492753623188406},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.009174311926605505},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.009216589861751152},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0064516129032258064},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.006211180124223602}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"e":{"docs":{},"l":{"docs":{},"s":{"docs":{"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.011111111111111112},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202},"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.011428571428571429}}}}},"t":{"docs":{},"h":{"docs":{},"e":{"docs":{},"n":{"docs":{"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.011111111111111112},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202},"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.011428571428571429}}}}}},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"s":{"docs":{},"e":{"docs":{},"d":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"i":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202}}}}}}}}}}}}}}}}}}}},"u":{"docs":{},"n":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"s":{"docs":{},"e":{"docs":{},"d":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"i":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202}}}}}}}}}}}}}}}}}}}}}}}}},"b":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.019337016574585635}}}}}}}},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"i":{"docs":{},"c":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0030661410424879547},"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.014285714285714285},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.014285714285714285},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.014285714285714285},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.006711409395973154},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.0045871559633027525},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0064516129032258064},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0033222591362126247},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":5.005524861878453},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.006191950464396285},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.014634146341463415},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.004454342984409799},"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}},"e":{"docs":{},".":{"docs":{},"f":{"docs":{},"l":{"docs":{},"u":{"docs":{},"s":{"docs":{},"h":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{},"a":{"docs":{},"l":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"n":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}}}}}}}}}}}}}}}}}}}},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}}}}},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"(":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"$":{"docs":{},".":{"docs":{},"s":{"docs":{},"u":{"docs":{},"b":{"docs":{},"s":{"docs":{},"c":{"docs":{},"r":{"docs":{},"i":{"docs":{},"b":{"docs":{},"e":{"docs":{},"(":{"docs":{},"(":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"m":{"docs":{},"o":{"docs":{},"v":{"docs":{},"e":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"(":{"docs":{},"'":{"docs":{},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"'":{"docs":{},")":{"docs":{},";":{"docs":{},"r":{"docs":{},"e":{"docs":{},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{},"e":{"docs":{},"v":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.009523809523809525},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.009523809523809525},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.009523809523809525},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0055248618784530384},"/injectables/NgxPermissionsStore.html":{"ref":"/injectables/NgxPermissionsStore.html","tf":5.040816326530612},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.00975609756097561},"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}}}}}},"t":{"docs":{},"h":{"docs":{},"e":{"docs":{},"n":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506},"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.011111111111111112},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202},"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.011428571428571429}}}}}},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{},"s":{"docs":{},"t":{"docs":{},"u":{"docs":{},"b":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"/overview.html":{"ref":"/overview.html","tf":0.025157232704402517},"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.05714285714285714},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.014285714285714285},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.014285714285714285},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.00819672131147541},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.007246376811594203},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.0045871559633027525},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.004608294930875576},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0032258064516129032},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.003105590062111801},"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":5.011111111111111},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.014634146341463415}}}}}}}},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"/overview.html":{"ref":"/overview.html","tf":0.018867924528301886},"/modules.html":{"ref":"/modules.html","tf":0.02},"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":5.033333333333333},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.004761904761904762},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.004878048780487805}}}}}}}}}}}}}}},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"s":{"docs":{},"e":{"docs":{},"d":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"i":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202}}}}}}}}}}}}}}}}}}}},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"/overview.html":{"ref":"/overview.html","tf":0.025157232704402517},"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.014285714285714285},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.05714285714285714},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.014285714285714285},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.00819672131147541},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.007246376811594203},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.0045871559633027525},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.004608294930875576},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0032258064516129032},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.003105590062111801},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":5.003669724770642},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.014634146341463415}}}}}}}},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{},"c":{"docs":{},"t":{"docs":{},"s":{"docs":{},"t":{"docs":{},"u":{"docs":{},"b":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"/overview.html":{"ref":"/overview.html","tf":0.025157232704402517},"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.014285714285714285},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.014285714285714285},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.05714285714285714},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.00819672131147541},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.007246376811594203},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.0045871559633027525},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.004608294930875576},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0032258064516129032},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.003105590062111801},"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":5.011428571428572},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.014634146341463415}}}}}}}},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"/overview.html":{"ref":"/overview.html","tf":0.018867924528301886},"/modules.html":{"ref":"/modules.html","tf":0.02},"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":5.033333333333333},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.004878048780487805}}}}}}}}}}}}}}}}}},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.011627906976744186},"/interfaces/NgxPermissionsRouterData.html":{"ref":"/interfaces/NgxPermissionsRouterData.html","tf":5.04},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.015590200445434299},"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}}}}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"i":{"docs":{},"g":{"docs":{},"u":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"i":{"docs":{},"c":{"docs":{"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.014285714285714285},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.014285714285714285},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.014285714285714285},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0064516129032258064},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202},"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":5.008230452674897},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.014634146341463415},"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}}}}}}},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.009523809523809525},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.009523809523809525},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.009523809523809525},"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00823045267489712},"/injectables/NgxPermissionsConfigurationStore.html":{"ref":"/injectables/NgxPermissionsConfigurationStore.html","tf":5.026666666666666},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.00975609756097561},"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{},"i":{"docs":{},"n":{"docs":{},"e":{"docs":{},"d":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"i":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101},"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00411522633744856},"/miscellaneous.html":{"ref":"/miscellaneous.html","tf":0.03125}},"e":{"docs":{},"s":{"docs":{},".":{"docs":{},"r":{"docs":{},"e":{"docs":{},"m":{"docs":{},"o":{"docs":{},"v":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101},"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00411522633744856}}}}}}},"s":{"docs":{},"h":{"docs":{},"o":{"docs":{},"w":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101},"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00411522633744856}}}}}}}}}}}}}}}}}}}}}}}}}}},"u":{"docs":{},"n":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"s":{"docs":{},"e":{"docs":{},"d":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"i":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.006191950464396285},"/classes/NgxRole.html":{"ref":"/classes/NgxRole.html","tf":5.042553191489362},"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}},"s":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"i":{"docs":{},"c":{"docs":{"/index.html":{"ref":"/index.html","tf":0.002190100744634253},"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.014285714285714285},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.014285714285714285},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.014285714285714285},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.0045871559633027525},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0064516129032258064},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.006211180124223602},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0033222591362126247},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":5.006191950464396},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.014634146341463415},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.004454342984409799},"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}},"e":{"docs":{},".":{"docs":{},"a":{"docs":{},"d":{"docs":{},"d":{"docs":{},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{},"(":{"docs":{},"'":{"docs":{},"g":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.001314060446780552}}}}}}}}}}}}}}}},"f":{"docs":{},"l":{"docs":{},"u":{"docs":{},"s":{"docs":{},"h":{"docs":{},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{},"s":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{},"a":{"docs":{},"l":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"n":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}}}}}}}}}}}}}},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}},"e":{"docs":{},"(":{"docs":{},"'":{"docs":{},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"'":{"docs":{},")":{"docs":{},";":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"m":{"docs":{},"o":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{},"(":{"docs":{},"'":{"docs":{},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"'":{"docs":{},")":{"docs":{},";":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{},"s":{"docs":{},"$":{"docs":{},".":{"docs":{},"s":{"docs":{},"u":{"docs":{},"b":{"docs":{},"s":{"docs":{},"c":{"docs":{},"r":{"docs":{},"i":{"docs":{},"b":{"docs":{},"e":{"docs":{},"(":{"docs":{},"(":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.009523809523809525},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.009523809523809525},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.009523809523809525},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.006191950464396285},"/classes/NgxRolesStore.html":{"ref":"/classes/NgxRolesStore.html","tf":5.051282051282051},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.00975609756097561},"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}}}}}},"o":{"docs":{},"b":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.009287925696594427}}}}}}}}}}}},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"t":{"docs":{},"o":{"docs":{},"n":{"docs":{},"a":{"docs":{},"v":{"docs":{},"i":{"docs":{},"g":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0049833887043189366},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":5.008908685968819},"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"t":{"docs":{},"e":{"docs":{"/index.html":{"ref":"/index.html","tf":0.003942181340341655}},"i":{"docs":{},"t":{"docs":{},"'":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}},"r":{"docs":{},"e":{"docs":{},"m":{"docs":{},"e":{"docs":{},"m":{"docs":{},"b":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}},"u":{"docs":{},"s":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}},"m":{"docs":{},"p":{"docs":{},"t":{"docs":{},"y":{"docs":{},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101},"/miscellaneous.html":{"ref":"/miscellaneous.html","tf":0.015625}},"e":{"docs":{},"(":{"docs":{},"t":{"docs":{},"h":{"docs":{},"i":{"docs":{},"s":{"docs":{},".":{"docs":{},"n":{"docs":{},"g":{"docs":{},"x":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}}}}}}},"o":{"docs":{},"n":{"docs":{},"l":{"docs":{},"i":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}}}}}}}}}}}}}}}}}}}}}}}},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{"/miscellaneous.html":{"ref":"/miscellaneous.html","tf":0.015625}}}}}}}}}}}}}}}}},"i":{"docs":{},"c":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}},"h":{"docs":{},"e":{"docs":{},"n":{"docs":{},"b":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"k":{"docs":{},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{},"i":{"docs":{},"n":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.005504587155963303}}}}}}}}}}}}}}}},"w":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}},"e":{"docs":{},"l":{"docs":{},"s":{"docs":{},"e":{"docs":{},"b":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"k":{"docs":{},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{},"i":{"docs":{},"n":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.005504587155963303}}}}}}}}}}}}}}}}},"p":{"docs":{},"m":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}},"i":{"docs":{},"c":{"docs":{},"e":{"docs":{"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0032258064516129032}}}}},"u":{"docs":{},"m":{"docs":{},"b":{"docs":{},"e":{"docs":{},"r":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}}}}}}},"o":{"docs":{},"b":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.00700832238282961}},".":{"docs":{},"n":{"docs":{},"a":{"docs":{},"v":{"docs":{},"i":{"docs":{},"g":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"m":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}}},"e":{"docs":{},"x":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}}}}}}}}}}},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{},"s":{"docs":{},"(":{"docs":{},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{},"s":{"docs":{},"o":{"docs":{},"b":{"docs":{},"j":{"docs":{},")":{"docs":{},".":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"c":{"docs":{},"h":{"docs":{},"(":{"docs":{},"(":{"docs":{},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013},"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00823045267489712},"/injectables/NgxPermissionsConfigurationStore.html":{"ref":"/injectables/NgxPermissionsConfigurationStore.html","tf":0.02666666666666667},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.006644518272425249},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.008287292817679558},"/injectables/NgxPermissionsStore.html":{"ref":"/injectables/NgxPermissionsStore.html","tf":0.04081632653061224},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.009287925696594427},"/classes/NgxRolesStore.html":{"ref":"/classes/NgxRolesStore.html","tf":0.05128205128205128},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.008908685968819599}},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},"i":{"docs":{},"n":{"docs":{},"p":{"docs":{},"u":{"docs":{},"t":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0055248618784530384},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.006191950464396285}}}}}}}}}}}}}}}},"l":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}},"e":{"docs":{},"k":{"docs":{},"s":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"r":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}}},"n":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0030661410424879547},"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00823045267489712}},"c":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}},"i":{"docs":{},"n":{"docs":{},"i":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.010067114093959731},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.02459016393442623},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.021739130434782608},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.013761467889908258},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.013824884792626729},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.00967741935483871},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.009316770186335404},"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.016666666666666666},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.005504587155963303},"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.017142857142857144}}}}}},"l":{"docs":{},"y":{"docs":{},"/":{"docs":{},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}},"s":{"docs":{},"h":{"docs":{},"o":{"docs":{},"u":{"docs":{},"l":{"docs":{},"d":{"docs":{"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.0045871559633027525},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.004608294930875576},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.00967741935483871},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.009316770186335404}}}}}}}},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"s":{"docs":{},"e":{"docs":{},"d":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"y":{"docs":{},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{},"i":{"docs":{},"n":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.005504587155963303}}}}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"c":{"docs":{},"k":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123}},"(":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0033222591362126247},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}}}}}}}}}}}}}}}}}}},"d":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"o":{"docs":{},"y":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.005504587155963303}}}}}}}}},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"s":{"docs":{},"e":{"docs":{},"d":{"docs":{},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{},"a":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"i":{"docs":{"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.012345679012345678},"/injectables/NgxPermissionsConfigurationStore.html":{"ref":"/injectables/NgxPermissionsConfigurationStore.html","tf":0.04}}}}}}}}}}}}}}}}}}}}}}}}}}},"u":{"docs":{},"n":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"s":{"docs":{},"e":{"docs":{},"d":{"docs":{},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{},"a":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"i":{"docs":{"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.012345679012345678},"/injectables/NgxPermissionsConfigurationStore.html":{"ref":"/injectables/NgxPermissionsConfigurationStore.html","tf":0.04}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"a":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"t":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"n":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}}}},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}}}},"r":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{"/index.html":{"ref":"/index.html","tf":0.002190100744634253}}}}}},"t":{"docs":{},"h":{"docs":{},"e":{"docs":{},"r":{"docs":{},"w":{"docs":{},"i":{"docs":{},"s":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}}}}}},"u":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506},"/overview.html":{"ref":"/overview.html","tf":0.006289308176100629},"/modules/AppModule.html":{"ref":"/modules/AppModule.html","tf":0.009174311926605505},"/modules/LazyIsolateModule.html":{"ref":"/modules/LazyIsolateModule.html","tf":0.012048192771084338},"/modules/LazyIsolateRoutingModule.html":{"ref":"/modules/LazyIsolateRoutingModule.html","tf":0.01},"/modules/LazyModule.html":{"ref":"/modules/LazyModule.html","tf":0.012658227848101266},"/modules/LazyRoleIsolateModule.html":{"ref":"/modules/LazyRoleIsolateModule.html","tf":0.010752688172043012},"/modules/LazyRolesAsyncIsolateModule.html":{"ref":"/modules/LazyRolesAsyncIsolateModule.html","tf":0.009259259259259259},"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.004761904761904762}},"p":{"docs":{},"u":{"docs":{},"t":{"docs":{"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.022222222222222223},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.007339449541284404},"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.022857142857142857}}}}}}},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}},"v":{"docs":{},"i":{"docs":{},"e":{"docs":{},"w":{"docs":{"/index.html":{"ref":"/index.html","tf":0.001314060446780552},"/overview.html":{"ref":"/overview.html","tf":10.0062893081761}}}}}}}}},"f":{"docs":{},"(":{"docs":{},"!":{"docs":{},"i":{"docs":{},"s":{"docs":{},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},"f":{"docs":{},"a":{"docs":{},"l":{"docs":{},"s":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}}}}},"p":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}},"!":{"docs":{},"t":{"docs":{},"h":{"docs":{},"i":{"docs":{},"s":{"docs":{},".":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"s":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{},"e":{"docs":{},".":{"docs":{},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"f":{"docs":{},"a":{"docs":{},"l":{"docs":{},"s":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0033222591362126247},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.009287925696594427},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.004454342984409799}}}}}},"t":{"docs":{},"r":{"docs":{},"u":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}},"n":{"docs":{},"u":{"docs":{},"l":{"docs":{},"l":{"docs":{},")":{"docs":{},".":{"docs":{},"p":{"docs":{},"i":{"docs":{},"p":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}}}}}}}}}}},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}}}}}}}}}}},"p":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.011049723756906077}},"a":{"docs":{},"g":{"docs":{},"e":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.013422818791946308},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.03669724770642202},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.03686635944700461},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.04516129032258064},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.043478260869565216}},".":{"docs":{},"i":{"docs":{},"n":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}},"i":{"docs":{},"r":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}},"r":{"docs":{},"a":{"docs":{},"m":{"docs":{"/index.html":{"ref":"/index.html","tf":0.001314060446780552}},"e":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.003942181340341655}}}}}},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}},"s":{"docs":{},"s":{"docs":{"/index.html":{"ref":"/index.html","tf":0.004380201489268506},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"d":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123}},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"(":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0033222591362126247},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"n":{"docs":{},"l":{"docs":{},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"d":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0033222591362126247},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"(":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"t":{"docs":{},"h":{"docs":{"/index.html":{"ref":"/index.html","tf":0.00788436268068331},"/modules/LazyIsolateRoutingModule.html":{"ref":"/modules/LazyIsolateRoutingModule.html","tf":0.05}}}}},"e":{"docs":{},"r":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"m":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}},"m":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/index.html":{"ref":"/index.html","tf":0.05081033727551467},"/modules/AppModule.html":{"ref":"/modules/AppModule.html","tf":0.009174311926605505},"/modules/LazyIsolateModule.html":{"ref":"/modules/LazyIsolateModule.html","tf":0.012048192771084338},"/modules/LazyIsolateRoutingModule.html":{"ref":"/modules/LazyIsolateRoutingModule.html","tf":0.05},"/modules/LazyModule.html":{"ref":"/modules/LazyModule.html","tf":0.012658227848101266},"/modules/LazyRoleIsolateModule.html":{"ref":"/modules/LazyRoleIsolateModule.html","tf":0.010752688172043012},"/modules/LazyRolesAsyncIsolateModule.html":{"ref":"/modules/LazyRolesAsyncIsolateModule.html","tf":0.009259259259259259},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.009174311926605505},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0032258064516129032},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.003105590062111801},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.011627906976744186},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.04143646408839779},"/injectables/NgxPermissionsStore.html":{"ref":"/injectables/NgxPermissionsStore.html","tf":0.061224489795918366},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.015590200445434299}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"/":{"docs":{},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.001314060446780552}}}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"/index.html":{"ref":"/index.html","tf":0.002628120893561104},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192}},"e":{"docs":{},"a":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}},"b":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}},"c":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}},"s":{"docs":{},"/":{"docs":{},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.001314060446780552}}}}},"s":{"docs":{},"r":{"docs":{},"c":{"docs":{},"/":{"docs":{},"l":{"docs":{},"i":{"docs":{},"b":{"docs":{},"/":{"docs":{},"i":{"docs":{},"n":{"docs":{},"d":{"docs":{},"e":{"docs":{},"x":{"docs":{},".":{"docs":{},"t":{"docs":{"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.004761904761904762},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.004878048780487805},"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}},"s":{"docs":{},":":{"3":{"5":{"docs":{"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.004878048780487805}}},"6":{"docs":{"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.004878048780487805}}},"7":{"docs":{"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.004878048780487805}}},"docs":{}},"docs":{}}}}}}}}}},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"/":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.07777777777777778},"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.08}}}}}}}}}}}}}}}}},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},"/":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},".":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},".":{"docs":{},"t":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}},"s":{"docs":{},":":{"1":{"0":{"0":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}},"docs":{}},"1":{"3":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}},"docs":{}},"3":{"8":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}},"docs":{}},"5":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}},"6":{"1":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}},"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}},"7":{"0":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}},"7":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}},"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}},"8":{"1":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}},"5":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}},"docs":{}},"9":{"1":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}},"7":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}},"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}},"docs":{}},"2":{"0":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}},"1":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}},"3":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}},"4":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}},"6":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}},"7":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}},"9":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}},"docs":{}},"3":{"0":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}},"2":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}},"3":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}},"5":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}},"6":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}},"8":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}},"docs":{}},"4":{"0":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}},"1":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202}}},"docs":{}},"5":{"2":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}},"7":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}},"docs":{}},"6":{"3":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}},"docs":{}},"7":{"9":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"i":{"docs":{},"c":{"docs":{},"e":{"docs":{},"/":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"i":{"docs":{},"g":{"docs":{},"u":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"i":{"docs":{},"c":{"docs":{},"e":{"docs":{},".":{"docs":{},"t":{"docs":{"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00411522633744856},"/miscellaneous.html":{"ref":"/miscellaneous.html","tf":0.015625},"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}},"s":{"docs":{},":":{"1":{"7":{"docs":{"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00411522633744856}}},"8":{"docs":{"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00411522633744856}}},"9":{"docs":{"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00411522633744856}}},"docs":{}},"2":{"0":{"docs":{"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00823045267489712}}},"docs":{}},"3":{"4":{"docs":{"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00411522633744856}}},"docs":{}},"4":{"2":{"docs":{"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00411522633744856}}},"docs":{}},"5":{"0":{"docs":{"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00411522633744856}}},"4":{"docs":{"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00411522633744856}}},"8":{"docs":{"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00411522633744856}}},"docs":{}},"6":{"2":{"docs":{"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00411522633744856}}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},".":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"i":{"docs":{},"c":{"docs":{},"e":{"docs":{},".":{"docs":{},"t":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192},"/miscellaneous.html":{"ref":"/miscellaneous.html","tf":0.015625},"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}},"s":{"docs":{},":":{"1":{"0":{"1":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192}}},"docs":{}},"2":{"6":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192}}},"docs":{}},"8":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192}}},"9":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0055248618784530384}}},"docs":{}},"3":{"2":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192}}},"6":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192}}},"docs":{}},"4":{"5":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192}}},"docs":{}},"5":{"3":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192}}},"docs":{}},"6":{"7":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192}}},"docs":{}},"7":{"5":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192}}},"9":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192}}},"docs":{}},"8":{"3":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192}}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{},"s":{"docs":{},".":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"i":{"docs":{},"c":{"docs":{},"e":{"docs":{},".":{"docs":{},"t":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426},"/miscellaneous.html":{"ref":"/miscellaneous.html","tf":0.015625},"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}},"s":{"docs":{},":":{"1":{"0":{"4":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}}},"docs":{}},"6":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}}},"8":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.006191950464396285}}},"docs":{}},"2":{"9":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}}},"docs":{}},"3":{"7":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}}},"docs":{}},"4":{"3":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}}},"7":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}}},"docs":{}},"5":{"5":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}}},"9":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}}},"docs":{}},"6":{"3":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}}},"docs":{}},"7":{"6":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},"/":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"i":{"docs":{},"g":{"docs":{},"u":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},".":{"docs":{},"t":{"docs":{"/injectables/NgxPermissionsConfigurationStore.html":{"ref":"/injectables/NgxPermissionsConfigurationStore.html","tf":0.013333333333333334},"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}},"s":{"docs":{},":":{"1":{"1":{"docs":{"/injectables/NgxPermissionsConfigurationStore.html":{"ref":"/injectables/NgxPermissionsConfigurationStore.html","tf":0.013333333333333334}}},"2":{"docs":{"/injectables/NgxPermissionsConfigurationStore.html":{"ref":"/injectables/NgxPermissionsConfigurationStore.html","tf":0.02666666666666667}}},"docs":{}},"8":{"docs":{"/injectables/NgxPermissionsConfigurationStore.html":{"ref":"/injectables/NgxPermissionsConfigurationStore.html","tf":0.013333333333333334}}},"9":{"docs":{"/injectables/NgxPermissionsConfigurationStore.html":{"ref":"/injectables/NgxPermissionsConfigurationStore.html","tf":0.013333333333333334}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},".":{"docs":{},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},".":{"docs":{},"t":{"docs":{"/injectables/NgxPermissionsStore.html":{"ref":"/injectables/NgxPermissionsStore.html","tf":0.02040816326530612},"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}},"s":{"docs":{},":":{"7":{"docs":{"/injectables/NgxPermissionsStore.html":{"ref":"/injectables/NgxPermissionsStore.html","tf":0.02040816326530612}}},"8":{"docs":{"/injectables/NgxPermissionsStore.html":{"ref":"/injectables/NgxPermissionsStore.html","tf":0.04081632653061224}}},"docs":{}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{},"s":{"docs":{},".":{"docs":{},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},".":{"docs":{},"t":{"docs":{"/classes/NgxRolesStore.html":{"ref":"/classes/NgxRolesStore.html","tf":0.02564102564102564},"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}},"s":{"docs":{},":":{"5":{"docs":{"/classes/NgxRolesStore.html":{"ref":"/classes/NgxRolesStore.html","tf":0.02564102564102564}}},"7":{"docs":{"/classes/NgxRolesStore.html":{"ref":"/classes/NgxRolesStore.html","tf":0.02564102564102564}}},"docs":{}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"/":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.029900332225913623},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0066815144766146995},"/coverage.html":{"ref":"/coverage.html","tf":0.012658227848101266}}}}}}}}}}}}}}}},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{},"l":{"docs":{},"/":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/interfaces/NgxPermissionsRouterData.html":{"ref":"/interfaces/NgxPermissionsRouterData.html","tf":0.08},"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{},"l":{"docs":{},".":{"docs":{},"t":{"docs":{"/classes/NgxPermission.html":{"ref":"/classes/NgxPermission.html","tf":0.022222222222222223},"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}},"s":{"docs":{},":":{"2":{"docs":{"/classes/NgxPermission.html":{"ref":"/classes/NgxPermission.html","tf":0.022222222222222223}}},"3":{"docs":{"/classes/NgxPermission.html":{"ref":"/classes/NgxPermission.html","tf":0.044444444444444446}}},"docs":{}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{},".":{"docs":{},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{},"l":{"docs":{},".":{"docs":{},"t":{"docs":{"/classes/NgxRole.html":{"ref":"/classes/NgxRole.html","tf":0.02127659574468085},"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}},"s":{"docs":{},":":{"2":{"docs":{"/classes/NgxRole.html":{"ref":"/classes/NgxRole.html","tf":0.02127659574468085}}},"3":{"docs":{"/classes/NgxRole.html":{"ref":"/classes/NgxRole.html","tf":0.0425531914893617}}},"docs":{}}}}}}}}}}}}}}}}}}}}},"e":{"docs":{},"n":{"docs":{},"u":{"docs":{},"m":{"docs":{},"s":{"docs":{},"/":{"docs":{},"p":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{},"i":{"docs":{},"n":{"docs":{"/miscellaneous.html":{"ref":"/miscellaneous.html","tf":0.015625}}}}}}}}}}}}}}}},"u":{"docs":{},"t":{"docs":{},"i":{"docs":{},"l":{"docs":{},"s":{"docs":{},"/":{"docs":{},"u":{"docs":{},"t":{"docs":{},"i":{"docs":{},"l":{"docs":{},"s":{"docs":{},".":{"docs":{},"t":{"docs":{"/miscellaneous.html":{"ref":"/miscellaneous.html","tf":0.015625}}}}}}}}}}}}}}}}}}},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},".":{"docs":{},"t":{"docs":{"/miscellaneous.html":{"ref":"/miscellaneous.html","tf":0.015625}}}}}}}}}}}}},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506},"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.011111111111111112},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202},"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.011428571428571429}}}}}}}},"i":{"docs":{},"s":{"docs":{},"o":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013},"/modules/LazyRoleIsolateModule.html":{"ref":"/modules/LazyRoleIsolateModule.html","tf":0.010752688172043012},"/modules/LazyRolesAsyncIsolateModule.html":{"ref":"/modules/LazyRolesAsyncIsolateModule.html","tf":0.009259259259259259},"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.004761904761904762},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.014634146341463415}}}}}},"o":{"docs":{},"b":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.002190100744634253}},"[":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"/index.html":{"ref":"/index.html","tf":0.001314060446780552}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"i":{"docs":{},"c":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0064516129032258064},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.006191950464396285},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.008287292817679558},"/injectables/NgxPermissionsStore.html":{"ref":"/injectables/NgxPermissionsStore.html","tf":0.061224489795918366}}}}}},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0055248618784530384}},"e":{"docs":{},".":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"s":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192}}}}}}}}}}}}}}}}}}}}}}}},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}},"e":{"docs":{},"[":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}}}}}}}}}}}}},"u":{"docs":{},"n":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506},"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.011111111111111112},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202},"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.011428571428571429}}}}}}}}}},".":{"docs":{},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0049833887043189366},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0066815144766146995}}}}}}}},"o":{"docs":{},"n":{"docs":{},"l":{"docs":{},"i":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.008305647840531562},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.011135857461024499}}}}}},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"t":{"docs":{},"o":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.006644518272425249},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.008908685968819599}},"[":{"docs":{},"f":{"docs":{},"a":{"docs":{},"i":{"docs":{},"l":{"docs":{},"e":{"docs":{},"d":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}}}}}}}}}}}}}}}}},"u":{"docs":{},"c":{"docs":{},"e":{"docs":{},"(":{"docs":{},"(":{"docs":{},"s":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192}}}}}}}}}}}}}}},"m":{"docs":{},"a":{"docs":{},"p":{"docs":{},"(":{"docs":{},"(":{"docs":{},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192}}}}}}}}}},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"i":{"docs":{},"c":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}}}}}}}}},"p":{"docs":{},"r":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0033222591362126247},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.004454342984409799}}}}},"p":{"docs":{},"r":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202}}}},".":{"docs":{},"l":{"docs":{},"e":{"docs":{},"n":{"docs":{},"g":{"docs":{},"t":{"docs":{},"h":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"c":{"docs":{},"e":{"docs":{},"(":{"docs":{},"(":{"docs":{},"s":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192}}}}}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"p":{"docs":{},"e":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}},"(":{"docs":{},"s":{"docs":{},"k":{"docs":{},"i":{"docs":{},"p":{"docs":{},"(":{"docs":{},"t":{"docs":{},"h":{"docs":{},"i":{"docs":{},"s":{"docs":{},".":{"docs":{},"f":{"docs":{},"i":{"docs":{},"r":{"docs":{},"s":{"docs":{},"t":{"docs":{},"m":{"docs":{},"e":{"docs":{},"r":{"docs":{},"g":{"docs":{},"e":{"docs":{},"u":{"docs":{},"n":{"docs":{},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"d":{"docs":{},"r":{"docs":{},"u":{"docs":{},"n":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"t":{"docs":{},"a":{"docs":{},"p":{"docs":{},"(":{"docs":{},"(":{"docs":{},"h":{"docs":{},"a":{"docs":{},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}}}}}}}}}}}}}}},"l":{"docs":{},"u":{"docs":{},"n":{"docs":{},"k":{"docs":{},"e":{"docs":{},"r":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}},"e":{"docs":{},"a":{"docs":{},"s":{"docs":{"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00823045267489712}}}}}},"o":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0017520805957074025}}}}}},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{},"i":{"docs":{},"n":{"docs":{},"e":{"docs":{},"d":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"i":{"docs":{"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00411522633744856}}},"y":{"docs":{},"(":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"i":{"docs":{"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00823045267489712}}}}}}}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"v":{"docs":{},"a":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.00967741935483871},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.003105590062111801},"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.016666666666666666},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.06422018348623854},"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.011428571428571429},"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.024691358024691357},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.046511627906976744},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.027624309392265192},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.02786377708978328},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0334075723830735}}}},"i":{"docs":{},"l":{"docs":{},"e":{"docs":{},"g":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}},"o":{"docs":{},"d":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}},"u":{"docs":{},"c":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}},"g":{"docs":{},"r":{"docs":{},"a":{"docs":{},"m":{"docs":{},"m":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}},"s":{"docs":{},"/":{"docs":{},"n":{"docs":{},"g":{"docs":{},"x":{"docs":{"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.004761904761904762},"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.07777777777777778},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.06422018348623854},"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.08},"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.04938271604938271},"/injectables/NgxPermissionsConfigurationStore.html":{"ref":"/injectables/NgxPermissionsConfigurationStore.html","tf":0.08},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.029900332225913623},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.03867403314917127},"/injectables/NgxPermissionsStore.html":{"ref":"/injectables/NgxPermissionsStore.html","tf":0.08163265306122448},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.04024767801857585},"/classes/NgxPermission.html":{"ref":"/classes/NgxPermission.html","tf":0.08888888888888889},"/classes/NgxRole.html":{"ref":"/classes/NgxRole.html","tf":0.0851063829787234},"/classes/NgxRolesStore.html":{"ref":"/classes/NgxRolesStore.html","tf":0.07692307692307693},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.01951219512195122},"/interfaces/NgxPermissionsRouterData.html":{"ref":"/interfaces/NgxPermissionsRouterData.html","tf":0.08},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0066815144766146995},"/miscellaneous.html":{"ref":"/miscellaneous.html","tf":0.09375},"/coverage.html":{"ref":"/coverage.html","tf":0.0759493670886076}}}}}}}}}}},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{"/index.html":{"ref":"/index.html","tf":0.001314060446780552},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.006644518272425249},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.016574585635359115},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.021671826625386997},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.008908685968819599}},"e":{"docs":{},".":{"docs":{},"r":{"docs":{},"e":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013},"/injectables/AsyncTestService.html":{"ref":"/injectables/AsyncTestService.html","tf":0.013157894736842105}}}}}},"s":{"docs":{},"o":{"docs":{},"l":{"docs":{},"v":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}},"e":{"docs":{},"(":{"docs":{},"f":{"docs":{},"a":{"docs":{},"l":{"docs":{},"s":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013},"/injectables/AsyncTestService.html":{"ref":"/injectables/AsyncTestService.html","tf":0.013157894736842105}}}}}},"t":{"docs":{},"r":{"docs":{},"u":{"docs":{"/injectables/AsyncTestService.html":{"ref":"/injectables/AsyncTestService.html","tf":0.013157894736842105},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}}}}}}}}}}}}},"a":{"docs":{},"l":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0033222591362126247},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.004454342984409799}},"l":{"docs":{},"(":{"docs":{},"[":{"docs":{},"t":{"docs":{},"h":{"docs":{},"i":{"docs":{},"s":{"docs":{},".":{"docs":{},"h":{"docs":{},"a":{"docs":{},"s":{"docs":{},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{},"(":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}}}}}}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"/injectables/AsyncTestService.html":{"ref":"/injectables/AsyncTestService.html","tf":0.039473684210526314}}}}}},"s":{"docs":{},"o":{"docs":{},"l":{"docs":{},"v":{"docs":{},"e":{"docs":{},"f":{"docs":{},"a":{"docs":{},"l":{"docs":{},"s":{"docs":{"/injectables/AsyncTestService.html":{"ref":"/injectables/AsyncTestService.html","tf":0.039473684210526314}}}}}},"t":{"docs":{},"r":{"docs":{},"u":{"docs":{"/injectables/AsyncTestService.html":{"ref":"/injectables/AsyncTestService.html","tf":0.039473684210526314}}}}}}}}}}}}}}}},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"l":{"docs":{},"i":{"docs":{"/index.html":{"ref":"/index.html","tf":0.001314060446780552}}}},"t":{"docs":{},"i":{"docs":{"/index.html":{"ref":"/index.html","tf":0.007446342531756461},"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.004761904761904762},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101},"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00411522633744856},"/injectables/NgxPermissionsConfigurationStore.html":{"ref":"/injectables/NgxPermissionsConfigurationStore.html","tf":0.013333333333333334},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192},"/injectables/NgxPermissionsStore.html":{"ref":"/injectables/NgxPermissionsStore.html","tf":0.02040816326530612},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426},"/classes/NgxPermission.html":{"ref":"/classes/NgxPermission.html","tf":0.022222222222222223},"/classes/NgxRole.html":{"ref":"/classes/NgxRole.html","tf":0.02127659574468085},"/classes/NgxRolesStore.html":{"ref":"/classes/NgxRolesStore.html","tf":0.02564102564102564},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.00975609756097561},"/interfaces/NgxPermissionsRouterData.html":{"ref":"/interfaces/NgxPermissionsRouterData.html","tf":0.02},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506},"/classes/AppPage.html":{"ref":"/classes/AppPage.html","tf":0.02631578947368421}}}}}}}}},"v":{"docs":{},"i":{"docs":{},"d":{"docs":{"/index.html":{"ref":"/index.html","tf":0.002628120893561104},"/overview.html":{"ref":"/overview.html","tf":0.006289308176100629},"/modules/AppModule.html":{"ref":"/modules/AppModule.html","tf":0.01834862385321101},"/modules/LazyIsolateModule.html":{"ref":"/modules/LazyIsolateModule.html","tf":0.012048192771084338},"/modules/LazyIsolateRoutingModule.html":{"ref":"/modules/LazyIsolateRoutingModule.html","tf":0.02},"/modules/LazyModule.html":{"ref":"/modules/LazyModule.html","tf":0.012658227848101266},"/modules/LazyRoleIsolateModule.html":{"ref":"/modules/LazyRoleIsolateModule.html","tf":0.010752688172043012},"/modules/LazyRolesAsyncIsolateModule.html":{"ref":"/modules/LazyRolesAsyncIsolateModule.html","tf":0.027777777777777776},"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.047619047619047616},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.047619047619047616},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.047619047619047616},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.04390243902439024}}}}}}},"s":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}},".":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"(":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}}}}}}}}}}}}}}}}},"u":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}},"b":{"docs":{},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.020134228187919462},"/injectables/AsyncTestService.html":{"ref":"/injectables/AsyncTestService.html","tf":0.07894736842105263},"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.06584362139917696},"/injectables/NgxPermissionsConfigurationStore.html":{"ref":"/injectables/NgxPermissionsConfigurationStore.html","tf":0.10666666666666667},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.04419889502762431},"/injectables/NgxPermissionsStore.html":{"ref":"/injectables/NgxPermissionsStore.html","tf":0.08163265306122448},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.04953560371517028},"/classes/NgxRolesStore.html":{"ref":"/classes/NgxRolesStore.html","tf":0.10256410256410256}}}}}},"r":{"docs":{},"e":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0049833887043189366},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0066815144766146995}}}}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{},"d":{"docs":{},"o":{"docs":{},"c":{"docs":{},"u":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}}},"i":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}},"m":{"docs":{"/index.html":{"ref":"/index.html","tf":5}}}}},"c":{"docs":{},"e":{"docs":{},"i":{"docs":{},"v":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.011388523872098117}},"t":{"docs":{},"o":{"docs":{"/index.html":{"ref":"/index.html","tf":0.00700832238282961},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0049833887043189366},"/interfaces/NgxPermissionsRouterData.html":{"ref":"/interfaces/NgxPermissionsRouterData.html","tf":0.06},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0066815144766146995}},"f":{"docs":{},"u":{"docs":{},"n":{"docs":{},"c":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}},"(":{"docs":{},"r":{"docs":{},"e":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"e":{"docs":{},"d":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}}}}}}}}}}}}}}}}}}}}},")":{"docs":{},".":{"docs":{},"n":{"docs":{},"a":{"docs":{},"v":{"docs":{},"i":{"docs":{},"g":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"m":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.006644518272425249},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.008908685968819599}}}}}}}}},"e":{"docs":{},"x":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.006644518272425249},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.008908685968819599}}}}}}}}}}}}}}}}}}},"a":{"docs":{},"n":{"docs":{},"o":{"docs":{},"t":{"docs":{},"h":{"docs":{},"e":{"docs":{},"r":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0033222591362126247},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}},"e":{"docs":{},"(":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"t":{"docs":{},"o":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"u":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0055248618784530384}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"(":{"docs":{},"s":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192}}}}}}}}}}}}}}}}}}}}}},"f":{"docs":{},"e":{"docs":{},"r":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.006211180124223602}},"e":{"docs":{},"d":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"/index.html":{"ref":"/index.html","tf":0.001314060446780552}}}}}}}}}}}}}}}}}}}}},"l":{"docs":{},"i":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}},"m":{"docs":{},"e":{"docs":{},"m":{"docs":{},"b":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}},"o":{"docs":{},"v":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0030661410424879547},"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00823045267489712},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0055248618784530384}},"e":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"(":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0055248618784530384}}}}}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}},"e":{"docs":{},"(":{"docs":{},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.006191950464396285}}}}}}}}}}}}}}}}}},"p":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{"/index.html":{"ref":"/index.html","tf":0.003504161191414805}}}}}},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0030661410424879547}}}}},"i":{"docs":{},"r":{"docs":{"/index.html":{"ref":"/index.html","tf":0.001314060446780552},"/miscellaneous.html":{"ref":"/miscellaneous.html","tf":0.0625}}}}}},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{"/index.html":{"ref":"/index.html","tf":0.002190100744634253}}}},"t":{"docs":{"/overview.html":{"ref":"/overview.html","tf":0.006289308176100629},"/modules/AppModule.html":{"ref":"/modules/AppModule.html","tf":0.009174311926605505},"/modules/LazyIsolateModule.html":{"ref":"/modules/LazyIsolateModule.html","tf":0.012048192771084338},"/modules/LazyIsolateRoutingModule.html":{"ref":"/modules/LazyIsolateRoutingModule.html","tf":0.01},"/modules/LazyModule.html":{"ref":"/modules/LazyModule.html","tf":0.012658227848101266},"/modules/LazyRoleIsolateModule.html":{"ref":"/modules/LazyRoleIsolateModule.html","tf":0.010752688172043012},"/modules/LazyRolesAsyncIsolateModule.html":{"ref":"/modules/LazyRolesAsyncIsolateModule.html","tf":0.009259259259259259},"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.004761904761904762}}}},"o":{"docs":{},"l":{"docs":{},"v":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.012422360248447204}}}},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}},"r":{"docs":{},"i":{"docs":{},"c":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}},".":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},".":{"docs":{},"s":{"docs":{},"t":{"docs":{},"u":{"docs":{},"b":{"docs":{"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.009523809523809525},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.009523809523809525},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.009523809523809525},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.00975609756097561}},".":{"docs":{},"t":{"docs":{"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.005714285714285714}},"s":{"docs":{},":":{"1":{"0":{"docs":{"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.005714285714285714}}},"2":{"docs":{"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.005714285714285714}}},"3":{"docs":{"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.005714285714285714}}},"4":{"docs":{"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.005714285714285714}}},"6":{"docs":{"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.005714285714285714}}},"7":{"docs":{"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.005714285714285714}}},"9":{"docs":{"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.005714285714285714}}},"docs":{}},"2":{"0":{"docs":{"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.011428571428571429}}},"6":{"docs":{"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.005714285714285714}}},"docs":{}},"3":{"5":{"docs":{"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.005714285714285714}}},"docs":{}},"8":{"docs":{"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.005714285714285714}}},"9":{"docs":{"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.005714285714285714}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.002628120893561104},"/overview.html":{"ref":"/overview.html","tf":0.012578616352201259},"/modules.html":{"ref":"/modules.html","tf":0.04},"/modules/AppModule.html":{"ref":"/modules/AppModule.html","tf":0.01834862385321101},"/modules/LazyIsolateModule.html":{"ref":"/modules/LazyIsolateModule.html","tf":0.024096385542168676},"/modules/LazyIsolateRoutingModule.html":{"ref":"/modules/LazyIsolateRoutingModule.html","tf":0.02},"/modules/LazyModule.html":{"ref":"/modules/LazyModule.html","tf":0.02531645569620253},"/modules/LazyRoleIsolateModule.html":{"ref":"/modules/LazyRoleIsolateModule.html","tf":0.021505376344086023},"/modules/LazyRolesAsyncIsolateModule.html":{"ref":"/modules/LazyRolesAsyncIsolateModule.html","tf":0.018518518518518517},"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.009523809523809525},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.009523809523809525},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.009523809523809525},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.006711409395973154},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.01639344262295082},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.014492753623188406},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.009174311926605505},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.009216589861751152},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0064516129032258064},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.006211180124223602},"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.011111111111111112},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202},"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.011428571428571429},"/injectables/AsyncTestService.html":{"ref":"/injectables/AsyncTestService.html","tf":0.02631578947368421},"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00823045267489712},"/injectables/NgxPermissionsConfigurationStore.html":{"ref":"/injectables/NgxPermissionsConfigurationStore.html","tf":0.02666666666666667},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0033222591362126247},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0055248618784530384},"/injectables/NgxPermissionsStore.html":{"ref":"/injectables/NgxPermissionsStore.html","tf":0.04081632653061224},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.006191950464396285},"/classes/AppPage.html":{"ref":"/classes/AppPage.html","tf":0.05263157894736842},"/classes/NgxPermission.html":{"ref":"/classes/NgxPermission.html","tf":0.044444444444444446},"/classes/NgxRole.html":{"ref":"/classes/NgxRole.html","tf":0.0425531914893617},"/classes/NgxRolesStore.html":{"ref":"/classes/NgxRolesStore.html","tf":0.05128205128205128},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.00975609756097561},"/interfaces/NgxPermissionsRouterData.html":{"ref":"/interfaces/NgxPermissionsRouterData.html","tf":0.04},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.004454342984409799},"/miscellaneous.html":{"ref":"/miscellaneous.html","tf":0.03125},"/coverage.html":{"ref":"/coverage.html","tf":0.012658227848101266}}}}}},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{},"e":{"docs":{},"v":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}},"u":{"docs":{},"r":{"docs":{},"n":{"docs":{"/index.html":{"ref":"/index.html","tf":0.015330705212439772},"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.009523809523809525},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.009523809523809525},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.009523809523809525},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.013422818791946308},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.00819672131147541},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.007246376811594203},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.0045871559633027525},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.004608294930875576},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0032258064516129032},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.018633540372670808},"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.016666666666666666},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.04954128440366973},"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.017142857142857144},"/injectables/AsyncTestService.html":{"ref":"/injectables/AsyncTestService.html","tf":0.07894736842105263},"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.037037037037037035},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.08637873754152824},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.055248618784530384},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.06191950464396285},"/classes/AppPage.html":{"ref":"/classes/AppPage.html","tf":0.10526315789473684},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.00975609756097561},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0801781737193764}}}}}},"n":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0064516129032258064}},"e":{"docs":{},"r":{"2":{"docs":{"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0064516129032258064}}},"docs":{}}}}}}}},"i":{"docs":{},"g":{"docs":{},"h":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{"/index.html":{"ref":"/index.html","tf":0.018834866403854577},"/modules/LazyRoleIsolateModule.html":{"ref":"/modules/LazyRoleIsolateModule.html","tf":0.053763440860215055},"/modules/LazyRolesAsyncIsolateModule.html":{"ref":"/modules/LazyRolesAsyncIsolateModule.html","tf":0.046296296296296294},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.020134228187919462},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.01639344262295082},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.014492753623188406},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.009174311926605505},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.009216589861751152},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.054838709677419356},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.052795031055900624},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202},"/injectables/AsyncTestService.html":{"ref":"/injectables/AsyncTestService.html","tf":0.06578947368421052},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.006644518272425249},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.015479876160990712},"/classes/NgxRolesStore.html":{"ref":"/classes/NgxRolesStore.html","tf":0.07692307692307693},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.008908685968819599},"/coverage.html":{"ref":"/coverage.html","tf":0.04430379746835443}},"/":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}}}}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.006191950464396285}},"e":{"docs":{},".":{"docs":{},"m":{"docs":{},"a":{"docs":{},"p":{"docs":{},"(":{"docs":{},"(":{"docs":{},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}}}}}}}}}}}}}}},"s":{"docs":{},"/":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}}}}}}},"i":{"docs":{},"s":{"docs":{},"o":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013},"/modules/LazyIsolateModule.html":{"ref":"/modules/LazyIsolateModule.html","tf":0.012048192771084338},"/modules/LazyRoleIsolateModule.html":{"ref":"/modules/LazyRoleIsolateModule.html","tf":0.010752688172043012},"/modules/LazyRolesAsyncIsolateModule.html":{"ref":"/modules/LazyRolesAsyncIsolateModule.html","tf":0.009259259259259259},"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.004761904761904762},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.014634146341463415}}}}}},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"i":{"docs":{},"c":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0032258064516129032},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.003105590062111801},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0033222591362126247},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.009287925696594427},"/classes/NgxRolesStore.html":{"ref":"/classes/NgxRolesStore.html","tf":0.07692307692307693}}}}}},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.006191950464396285}}}}}},"[":{"docs":{},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}}}}},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}}}}}}}}}},"o":{"docs":{},"b":{"docs":{},"j":{"docs":{},"[":{"docs":{},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}}}}}}}}}}}},"o":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.006711409395973154},"/classes/AppPage.html":{"ref":"/classes/AppPage.html","tf":0.02631578947368421}},"'":{"docs":{},"}":{"docs":{},",":{"docs":{},"{":{"docs":{},"'":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.00819672131147541},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.007246376811594203},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.0045871559633027525},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.004608294930875576},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0032258064516129032},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.003105590062111801}}}}}}}}}}}},"u":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.011388523872098117},"/modules/LazyIsolateRoutingModule.html":{"ref":"/modules/LazyIsolateRoutingModule.html","tf":0.02},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0681063122923588},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0757238307349666}},"e":{"docs":{},"'":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}},".":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"m":{"docs":{},"s":{"docs":{},"[":{"docs":{},"'":{"docs":{},"i":{"docs":{},"d":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}}}}}}}}},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}},"[":{"docs":{},"'":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}}}}}}}}}},"r":{"docs":{"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.004761904761904762},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.008305647840531562},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.004878048780487805},"/interfaces/NgxPermissionsRouterData.html":{"ref":"/interfaces/NgxPermissionsRouterData.html","tf":0.08},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.008908685968819599},"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}},".":{"docs":{},"n":{"docs":{},"a":{"docs":{},"v":{"docs":{},"i":{"docs":{},"g":{"docs":{"/index.html":{"ref":"/index.html","tf":0.001314060446780552}}}}}}}},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.005256241787122208},"/overview.html":{"ref":"/overview.html","tf":0.025157232704402517},"/modules/LazyIsolateRoutingModule.html":{"ref":"/modules/LazyIsolateRoutingModule.html","tf":0.06}},"e":{"docs":{},".":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"r":{"docs":{},"o":{"docs":{},"o":{"docs":{},"t":{"docs":{},"(":{"docs":{},"a":{"docs":{},"p":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.003942181340341655}}}}}}}}}}}}}},"c":{"docs":{},"h":{"docs":{},"i":{"docs":{},"l":{"docs":{},"d":{"docs":{},"(":{"docs":{},"a":{"docs":{},"r":{"docs":{},"g":{"docs":{"/overview.html":{"ref":"/overview.html","tf":0.018867924528301886},"/modules/LazyIsolateRoutingModule.html":{"ref":"/modules/LazyIsolateRoutingModule.html","tf":0.03}}}},"p":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"/modules/LazyIsolateRoutingModule.html":{"ref":"/modules/LazyIsolateRoutingModule.html","tf":0.01}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"n":{"docs":{},"a":{"docs":{},"p":{"docs":{},"s":{"docs":{},"h":{"docs":{},"o":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.004818221638195357},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.014950166112956811},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0200445434298441}}}}}}}}}}}}}}},"/":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.009523809523809525},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.009523809523809525},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.009523809523809525},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.00975609756097561}}}}}}}}}}},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"n":{"docs":{},"a":{"docs":{},"p":{"docs":{},"s":{"docs":{},"h":{"docs":{},"o":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.001314060446780552}}}}}}}}}}}}}},"l":{"docs":{},"a":{"docs":{},"z":{"docs":{},"i":{"docs":{"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577}}}}}}}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},".":{"docs":{},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"/modules/AppModule.html":{"ref":"/modules/AppModule.html","tf":0.009174311926605505},"/modules/LazyIsolateModule.html":{"ref":"/modules/LazyIsolateModule.html","tf":0.012048192771084338},"/modules/LazyModule.html":{"ref":"/modules/LazyModule.html","tf":0.012658227848101266},"/modules/LazyRoleIsolateModule.html":{"ref":"/modules/LazyRoleIsolateModule.html","tf":0.010752688172043012},"/modules/LazyRolesAsyncIsolateModule.html":{"ref":"/modules/LazyRolesAsyncIsolateModule.html","tf":0.009259259259259259}},"e":{"docs":{},".":{"docs":{},"t":{"docs":{"/modules/LazyIsolateRoutingModule.html":{"ref":"/modules/LazyIsolateRoutingModule.html","tf":0.01}}}}}}}}}}}}}}}}},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0056942619360490585}},"(":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}},"n":{"docs":{"/index.html":{"ref":"/index.html","tf":0.003504161191414805},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}}},"x":{"docs":{},"j":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101},"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00411522633744856},"/injectables/NgxPermissionsConfigurationStore.html":{"ref":"/injectables/NgxPermissionsConfigurationStore.html","tf":0.013333333333333334},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192},"/injectables/NgxPermissionsStore.html":{"ref":"/injectables/NgxPermissionsStore.html","tf":0.02040816326530612},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426},"/classes/NgxRolesStore.html":{"ref":"/classes/NgxRolesStore.html","tf":0.02564102564102564},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}},"s":{"docs":{},"/":{"docs":{},"o":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}}}}},"s":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0017520805957074025}}}},"v":{"docs":{},"e":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"u":{"docs":{},"m":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}}}},"e":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"d":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0017520805957074025}}}}},"u":{"docs":{},"r":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}},"e":{"docs":{"/index.html":{"ref":"/index.html","tf":0.006570302233902759},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.087248322147651},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.045871559633027525},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.03686635944700461},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.03225806451612903},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.037267080745341616}},"m":{"docs":{},"e":{"docs":{},"e":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}},"l":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.040268456375838924},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.09836065573770492},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.08695652173913043},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.05504587155963303},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.055299539170506916},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.03870967741935484},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.037267080745341616},"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.011111111111111112},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202},"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.011428571428571429}}}}}}}},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}},"r":{"docs":{},"v":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}},"e":{"docs":{},"r":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}},"/":{"docs":{},"b":{"docs":{},"r":{"docs":{},"o":{"docs":{},"w":{"docs":{},"s":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}}},"i":{"docs":{},"c":{"docs":{"/index.html":{"ref":"/index.html","tf":0.004818221638195357},"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.004761904761904762},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.004878048780487805}},"e":{"docs":{},"/":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"i":{"docs":{},"g":{"docs":{},"u":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"i":{"docs":{},"c":{"docs":{"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.009523809523809525},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.009523809523809525},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.009523809523809525},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101},"/injectables/NgxPermissionsConfigurationStore.html":{"ref":"/injectables/NgxPermissionsConfigurationStore.html","tf":0.013333333333333334},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.00975609756097561}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},".":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"i":{"docs":{},"c":{"docs":{"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.009523809523809525},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.009523809523809525},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.009523809523809525},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.00975609756097561},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{},"s":{"docs":{},".":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"i":{"docs":{},"c":{"docs":{"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.009523809523809525},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.009523809523809525},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.009523809523809525},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.00975609756097561},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.003504161191414805}},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{},"a":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{},"o":{"docs":{},"n":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"z":{"docs":{},"e":{"docs":{},"d":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"i":{"docs":{"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00411522633744856}}},"y":{"docs":{},"(":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00823045267489712}}}}}}}}}}}}}}}}}}}}}}}},"u":{"docs":{},"n":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"z":{"docs":{},"e":{"docs":{},"d":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"i":{"docs":{"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00411522633744856}}},"y":{"docs":{},"(":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00823045267489712}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}}},"h":{"docs":{},"a":{"docs":{},"r":{"docs":{},"e":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}},"d":{"docs":{},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0017520805957074025}}}}}}}}}}},"o":{"docs":{},"w":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013},"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00823045267489712}},"/":{"docs":{},"h":{"docs":{},"i":{"docs":{},"d":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}},"n":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"b":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"k":{"docs":{},"i":{"docs":{},"n":{"docs":{},"v":{"docs":{},"i":{"docs":{},"e":{"docs":{},"w":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}},"(":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"d":{"docs":{},"e":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}},"m":{"docs":{},"i":{"docs":{},"l":{"docs":{},"a":{"docs":{},"r":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}},"l":{"docs":{},"i":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}}}}},"p":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}},"i":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}},"f":{"docs":{},"i":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}},"n":{"docs":{},"g":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.005256241787122208}},"e":{"docs":{},"/":{"docs":{},"m":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{},"i":{"docs":{},"p":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}}}}}}},"t":{"docs":{},"e":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}},"u":{"docs":{},"a":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}}}},"k":{"docs":{},"i":{"docs":{},"p":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202}},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"c":{"docs":{},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"g":{"docs":{"/index.html":{"ref":"/index.html","tf":0.001314060446780552}}}}}}}}}}}}}}}}},"u":{"docs":{},"l":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}}},"m":{"docs":{},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506},"/modules/AppModule.html":{"ref":"/modules/AppModule.html","tf":0.009174311926605505},"/modules/LazyIsolateModule.html":{"ref":"/modules/LazyIsolateModule.html","tf":0.012048192771084338},"/modules/LazyIsolateRoutingModule.html":{"ref":"/modules/LazyIsolateRoutingModule.html","tf":0.01},"/modules/LazyModule.html":{"ref":"/modules/LazyModule.html","tf":0.012658227848101266},"/modules/LazyRoleIsolateModule.html":{"ref":"/modules/LazyRoleIsolateModule.html","tf":0.010752688172043012},"/modules/LazyRolesAsyncIsolateModule.html":{"ref":"/modules/LazyRolesAsyncIsolateModule.html","tf":0.009259259259259259},"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.004761904761904762},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.00819672131147541},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.007246376811594203},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.0045871559633027525},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.004608294930875576},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0032258064516129032},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.003105590062111801},"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.005555555555555556},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101},"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.005714285714285714},"/injectables/AsyncTestService.html":{"ref":"/injectables/AsyncTestService.html","tf":0.013157894736842105},"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00411522633744856},"/injectables/NgxPermissionsConfigurationStore.html":{"ref":"/injectables/NgxPermissionsConfigurationStore.html","tf":0.013333333333333334},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.016574585635359115},"/injectables/NgxPermissionsStore.html":{"ref":"/injectables/NgxPermissionsStore.html","tf":0.02040816326530612},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426},"/classes/AppPage.html":{"ref":"/classes/AppPage.html","tf":0.02631578947368421},"/classes/NgxPermission.html":{"ref":"/classes/NgxPermission.html","tf":0.022222222222222223},"/classes/NgxRole.html":{"ref":"/classes/NgxRole.html","tf":0.02127659574468085},"/classes/NgxRolesStore.html":{"ref":"/classes/NgxRolesStore.html","tf":0.02564102564102564},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.004878048780487805},"/interfaces/NgxPermissionsRouterData.html":{"ref":"/interfaces/NgxPermissionsRouterData.html","tf":0.02},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.009174311926605505},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0064516129032258064},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.006211180124223602}}}}}}},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{},"i":{"docs":{},"a":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}},"f":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0017520805957074025}},"i":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}}}}},"t":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.002628120893561104}}}},"t":{"docs":{},"e":{"docs":{"/index.html":{"ref":"/index.html","tf":0.009198423127463863},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.06976744186046512},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.07126948775055679}},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}}}}}}},"i":{"docs":{},"c":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013},"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.009523809523809525},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.009523809523809525},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.009523809523809525},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.00975609756097561}}}}}},"o":{"docs":{},"p":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}},"r":{"docs":{},"e":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0017520805957074025}},"/":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"i":{"docs":{},"g":{"docs":{},"u":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.009523809523809525},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.009523809523809525},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.009523809523809525},"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00411522633744856},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.00975609756097561}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},".":{"docs":{},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.009523809523809525},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.009523809523809525},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.009523809523809525},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.00975609756097561}}}}}}}}}}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{},"s":{"docs":{},".":{"docs":{},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.009523809523809525},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.009523809523809525},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.009523809523809525},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.00975609756097561}}}}}}}}}}}}}}}},"r":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202}},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"i":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101},"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.03292181069958848},"/injectables/NgxPermissionsConfigurationStore.html":{"ref":"/injectables/NgxPermissionsConfigurationStore.html","tf":0.05333333333333334}},"e":{"docs":{},"s":{"docs":{},".":{"docs":{},"e":{"docs":{},"n":{"docs":{},"u":{"docs":{},"m":{"docs":{"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.004761904761904762},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101},"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00411522633744856},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.004878048780487805}},".":{"docs":{},"t":{"docs":{"/miscellaneous.html":{"ref":"/miscellaneous.html","tf":0.015625}}}}}}}}},"s":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.012345679012345678},"/injectables/NgxPermissionsConfigurationStore.html":{"ref":"/injectables/NgxPermissionsConfigurationStore.html","tf":0.04}}}}}}}}}},"y":{"docs":{},"(":{"docs":{},"t":{"docs":{},"h":{"docs":{},"i":{"docs":{},"s":{"docs":{},".":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"e":{"docs":{},"f":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}}}}}}}}}}}}}}}}}},"f":{"docs":{},"u":{"docs":{},"n":{"docs":{},"c":{"docs":{},"t":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.012844036697247707},"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.01646090534979424}}}}}}}}}}}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{"/index.html":{"ref":"/index.html","tf":0.010074463425317565},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577},"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.03333333333333333},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.022018348623853212},"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.03428571428571429},"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.06172839506172839},"/injectables/NgxPermissionsConfigurationStore.html":{"ref":"/injectables/NgxPermissionsConfigurationStore.html","tf":0.05333333333333334},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.011627906976744186},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.04696132596685083},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.04953560371517028},"/classes/NgxPermission.html":{"ref":"/classes/NgxPermission.html","tf":0.08888888888888889},"/classes/NgxRole.html":{"ref":"/classes/NgxRole.html","tf":0.1276595744680851},"/interfaces/NgxPermissionsRouterData.html":{"ref":"/interfaces/NgxPermissionsRouterData.html","tf":0.14},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.008908685968819599}}}}},"u":{"docs":{},"c":{"docs":{},"t":{"docs":{},"u":{"docs":{},"r":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}},"y":{"docs":{},"l":{"docs":{},"e":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}},"u":{"docs":{},"r":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.006711409395973154},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.01639344262295082},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.014492753623188406},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.009174311926605505},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.009216589861751152},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0064516129032258064},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.006211180124223602}}}}}}}}},"u":{"docs":{},"f":{"docs":{},"f":{"docs":{},"i":{"docs":{},"c":{"docs":{},"i":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}},"p":{"docs":{},"p":{"docs":{},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0017520805957074025},"/modules.html":{"ref":"/modules.html","tf":0.18}}}}}}},"r":{"docs":{},"e":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0017520805957074025}}}},"b":{"docs":{},"s":{"docs":{},"c":{"docs":{},"r":{"docs":{},"i":{"docs":{},"b":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}},"p":{"docs":{},"t":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.005504587155963303}}}}}}}}}},"w":{"docs":{},"i":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}},"m":{"docs":{},"a":{"docs":{},"p":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}},"(":{"docs":{},"(":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}}}}}}}}}}}}}}}}}},"y":{"docs":{},"n":{"docs":{},"t":{"docs":{},"a":{"docs":{},"x":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}},"v":{"docs":{},"g":{"docs":{"/modules.html":{"ref":"/modules.html","tf":0.18}}}},"r":{"docs":{},"c":{"docs":{},"/":{"docs":{},"a":{"docs":{},"p":{"docs":{},"p":{"docs":{},"/":{"docs":{},"a":{"docs":{},"p":{"docs":{},"p":{"docs":{},".":{"docs":{},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},".":{"docs":{},"t":{"docs":{"/modules/AppModule.html":{"ref":"/modules/AppModule.html","tf":0.009174311926605505}}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},".":{"docs":{},"t":{"docs":{"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577},"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}},"s":{"docs":{},":":{"1":{"0":{"docs":{"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.006711409395973154}}},"5":{"docs":{"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577}}},"9":{"docs":{"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577}}},"docs":{}},"2":{"3":{"docs":{"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577}}},"7":{"docs":{"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577}}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}},"l":{"docs":{},"a":{"docs":{},"z":{"docs":{},"i":{"docs":{"/modules/LazyIsolateModule.html":{"ref":"/modules/LazyIsolateModule.html","tf":0.012048192771084338},"/modules/LazyIsolateRoutingModule.html":{"ref":"/modules/LazyIsolateRoutingModule.html","tf":0.01},"/modules/LazyModule.html":{"ref":"/modules/LazyModule.html","tf":0.012658227848101266},"/modules/LazyRoleIsolateModule.html":{"ref":"/modules/LazyRoleIsolateModule.html","tf":0.010752688172043012},"/modules/LazyRolesAsyncIsolateModule.html":{"ref":"/modules/LazyRolesAsyncIsolateModule.html","tf":0.009259259259259259},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.013761467889908258},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.013824884792626729},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.00967741935483871},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.009316770186335404},"/injectables/AsyncTestService.html":{"ref":"/injectables/AsyncTestService.html","tf":0.06578947368421052},"/coverage.html":{"ref":"/coverage.html","tf":0.03164556962025317}}}}}},"h":{"docs":{},"o":{"docs":{},"m":{"docs":{},"e":{"docs":{},"/":{"docs":{},"h":{"docs":{},"o":{"docs":{},"m":{"docs":{},"e":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},".":{"docs":{},"t":{"docs":{"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.00819672131147541},"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}},"s":{"docs":{},":":{"1":{"2":{"docs":{"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.00819672131147541}}},"docs":{}},"8":{"docs":{"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.00819672131147541}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"n":{"docs":{},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.021739130434782608},"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}}}}}}}}}}},"e":{"docs":{},"n":{"docs":{},"v":{"docs":{},"i":{"docs":{},"r":{"docs":{},"o":{"docs":{},"n":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"s":{"docs":{},"/":{"docs":{},"e":{"docs":{},"n":{"docs":{},"v":{"docs":{},"i":{"docs":{},"r":{"docs":{},"o":{"docs":{},"n":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},".":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"d":{"docs":{},".":{"docs":{},"t":{"docs":{"/miscellaneous.html":{"ref":"/miscellaneous.html","tf":0.015625}}}}}}}},"t":{"docs":{"/miscellaneous.html":{"ref":"/miscellaneous.html","tf":0.015625}}}}}}}}}}}}}}}}}}}}}}}}}}}},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},".":{"docs":{},"t":{"docs":{"/miscellaneous.html":{"ref":"/miscellaneous.html","tf":0.015625}}}}}}}}}}}},"t":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}},"r":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}},"p":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}},"(":{"docs":{},"(":{"docs":{},"h":{"docs":{},"a":{"docs":{},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}}}}}}}}}},"e":{"docs":{},"c":{"docs":{},"h":{"docs":{},"n":{"docs":{},"i":{"docs":{},"c":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}},"l":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{},"a":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.00819672131147541},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.007246376811594203},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.0045871559633027525},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.004608294930875576},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0032258064516129032},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.003105590062111801},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}},"e":{"docs":{},"u":{"docs":{},"r":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.006711409395973154},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.01639344262295082},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.014492753623188406},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.009174311926605505},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.009216589861751152},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0064516129032258064},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.006211180124223602}}}}},"s":{"docs":{},"t":{"2":{"3":{"4":{"2":{"3":{"4":{"docs":{"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.006711409395973154}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.006711409395973154}}}},"r":{"docs":{},"e":{"docs":{},"f":{"docs":{"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0032258064516129032},"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.05555555555555555},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.025688073394495414},"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.04},"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.012345679012345678}}}}}}}}}}},"s":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.002628120893561104},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.016778523489932886},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.00819672131147541},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.007246376811594203},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.04128440366972477},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.041474654377880185},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.054838709677419356},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.052795031055900624}},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"(":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}}}}}}}}}}},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{"/modules/LazyRoleIsolateModule.html":{"ref":"/modules/LazyRoleIsolateModule.html","tf":0.010752688172043012},"/modules/LazyRolesAsyncIsolateModule.html":{"ref":"/modules/LazyRolesAsyncIsolateModule.html","tf":0.009259259259259259}},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},".":{"docs":{},"c":{"docs":{},"s":{"docs":{},"s":{"docs":{"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0064516129032258064},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.006211180124223602}}}}},"h":{"docs":{},"t":{"docs":{},"m":{"docs":{},"l":{"docs":{"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0064516129032258064},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.006211180124223602}}}}}},"t":{"docs":{"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0032258064516129032},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.003105590062111801},"/coverage.html":{"ref":"/coverage.html","tf":0.012658227848101266}},"s":{"docs":{},":":{"1":{"0":{"docs":{"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.003105590062111801}}},"4":{"docs":{"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.003105590062111801}}},"6":{"docs":{"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0032258064516129032}}},"docs":{}},"9":{"docs":{"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0032258064516129032}}},"docs":{}}}}}}}}}}}}}},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"i":{"docs":{},"c":{"docs":{"/modules/LazyRolesAsyncIsolateModule.html":{"ref":"/modules/LazyRolesAsyncIsolateModule.html","tf":0.009259259259259259},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.003105590062111801}},"e":{"docs":{},".":{"docs":{},"t":{"docs":{"/injectables/AsyncTestService.html":{"ref":"/injectables/AsyncTestService.html","tf":0.013157894736842105},"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}},"s":{"docs":{},":":{"1":{"3":{"docs":{"/injectables/AsyncTestService.html":{"ref":"/injectables/AsyncTestService.html","tf":0.013157894736842105}}},"7":{"docs":{"/injectables/AsyncTestService.html":{"ref":"/injectables/AsyncTestService.html","tf":0.013157894736842105}}},"docs":{}},"4":{"docs":{"/injectables/AsyncTestService.html":{"ref":"/injectables/AsyncTestService.html","tf":0.013157894736842105}}},"9":{"docs":{"/injectables/AsyncTestService.html":{"ref":"/injectables/AsyncTestService.html","tf":0.013157894736842105}}},"docs":{}}}}}}}}}}}}},"/":{"docs":{},"l":{"docs":{},"a":{"docs":{},"z":{"docs":{},"i":{"docs":{"/modules/LazyRoleIsolateModule.html":{"ref":"/modules/LazyRoleIsolateModule.html","tf":0.010752688172043012},"/modules/LazyRolesAsyncIsolateModule.html":{"ref":"/modules/LazyRolesAsyncIsolateModule.html","tf":0.009259259259259259},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.00967741935483871},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.009316770186335404},"/coverage.html":{"ref":"/coverage.html","tf":0.012658227848101266}}}}}}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"/":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.01904761904761905},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.01904761904761905},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.01904761904761905},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.01951219512195122}}}}}}}}}}}}},"'":{"docs":{},"}":{"docs":{},",":{"docs":{},"{":{"docs":{},"'":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.00819672131147541},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.007246376811594203},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.0045871559633027525},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.004608294930875576},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0032258064516129032},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.003105590062111801}}}}}}}}}}}},"x":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.003504161191414805}}}}},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"k":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}},"e":{"docs":{},"n":{"docs":{},"(":{"docs":{},"(":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}},"[":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"p":{"docs":{},"r":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0033222591362126247},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.004454342984409799}}}}}}}}}}}}}}},"h":{"docs":{},"a":{"docs":{},"s":{"docs":{},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}}}}}}}}}}},"b":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"k":{"docs":{"/index.html":{"ref":"/index.html","tf":0.002190100744634253}}}}}}}}},"i":{"docs":{},"n":{"docs":{},"k":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}},"s":{"docs":{},".":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"(":{"docs":{},"'":{"docs":{},"u":{"docs":{},"r":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"y":{"docs":{},"n":{"docs":{},"c":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},".":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"e":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.003105590062111801}}}}}},"s":{"docs":{},"o":{"docs":{},"l":{"docs":{},"v":{"docs":{},"e":{"docs":{},"f":{"docs":{},"a":{"docs":{},"l":{"docs":{},"s":{"docs":{"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.003105590062111801}}}}}},"t":{"docs":{},"r":{"docs":{},"u":{"docs":{"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.003105590062111801}}}}}}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"p":{"docs":{},"l":{"docs":{},"y":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"y":{"docs":{},"(":{"docs":{},"t":{"docs":{},"h":{"docs":{},"i":{"docs":{},"s":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"i":{"docs":{},"g":{"docs":{},"u":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"i":{"docs":{},"c":{"docs":{},"e":{"docs":{},".":{"docs":{},"o":{"docs":{},"n":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"s":{"docs":{},"e":{"docs":{},"d":{"docs":{},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{},"a":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"i":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}}}}}}}}}}}}}}}}}}}}}}}}}},"u":{"docs":{},"n":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"s":{"docs":{},"e":{"docs":{},"d":{"docs":{},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{},"a":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"i":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"n":{"docs":{},"l":{"docs":{},"y":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"s":{"docs":{},"e":{"docs":{},"d":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"y":{"docs":{},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{},"i":{"docs":{},"n":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"u":{"docs":{},"n":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"s":{"docs":{},"e":{"docs":{},"d":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"y":{"docs":{},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{},"i":{"docs":{},"n":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"d":{"docs":{},"d":{"docs":{},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{},"(":{"docs":{},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}}}}}}}}}}}}},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"c":{"docs":{},"k":{"docs":{},"s":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"(":{"docs":{},")":{"docs":{},".":{"docs":{},"t":{"docs":{},"o":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"n":{"docs":{},"l":{"docs":{},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"(":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0033222591362126247},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.004454342984409799}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"i":{"docs":{},"g":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"i":{"docs":{},"c":{"docs":{},"e":{"docs":{},".":{"docs":{},"a":{"docs":{},"d":{"docs":{},"d":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"y":{"docs":{},"(":{"docs":{},"'":{"docs":{},"l":{"docs":{},"o":{"docs":{},"l":{"docs":{"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0032258064516129032}}}}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"e":{"docs":{},"t":{"docs":{},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{},"a":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{},"o":{"docs":{},"n":{"docs":{},"u":{"docs":{},"n":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"z":{"docs":{},"e":{"docs":{},"d":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"y":{"docs":{},"(":{"docs":{},"'":{"docs":{},"l":{"docs":{},"o":{"docs":{},"l":{"docs":{"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0032258064516129032}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"u":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"i":{"docs":{},"c":{"docs":{},"e":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"y":{"docs":{},"(":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}}}}}}}}}}}}}}}},"o":{"docs":{},"n":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"s":{"docs":{},"e":{"docs":{},"d":{"docs":{},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{},"a":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"i":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}}}}}}}}}}}}}}}}}}}}}}}}}},"u":{"docs":{},"n":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"s":{"docs":{},"e":{"docs":{},"d":{"docs":{},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{},"a":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"i":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},".":{"docs":{},"o":{"docs":{},"n":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"s":{"docs":{},"e":{"docs":{},"d":{"docs":{},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{},"a":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"i":{"docs":{"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00411522633744856}}}}}}}}}}}}}}}}}}}}}}}}}}},"u":{"docs":{},"n":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"s":{"docs":{},"e":{"docs":{},"d":{"docs":{},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{},"a":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"i":{"docs":{"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00411522633744856}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"i":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00411522633744856}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"u":{"docs":{},"r":{"docs":{},"r":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"z":{"docs":{},"e":{"docs":{},"d":{"docs":{},"s":{"docs":{},"t":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.007339449541284404}}}}}}}}}}}}}}}}}}}}},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"(":{"docs":{},"'":{"docs":{},"u":{"docs":{},"r":{"docs":{},"l":{"docs":{},"'":{"docs":{},")":{"docs":{},".":{"docs":{},"s":{"docs":{},"u":{"docs":{},"b":{"docs":{},"s":{"docs":{},"c":{"docs":{},"r":{"docs":{},"i":{"docs":{},"b":{"docs":{},"e":{"docs":{},"(":{"docs":{},"(":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"s":{"docs":{},"e":{"docs":{},"d":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"(":{"docs":{},"t":{"docs":{},"h":{"docs":{},"i":{"docs":{},"s":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"s":{"docs":{},"e":{"docs":{},"d":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}}}}}}}}}}}}}}}}}}},"n":{"docs":{},"g":{"docs":{},"x":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{},"t":{"docs":{},"h":{"docs":{},"e":{"docs":{},"n":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202}}}}}}}}}}}},"o":{"docs":{},"n":{"docs":{},"l":{"docs":{},"y":{"docs":{},"t":{"docs":{},"h":{"docs":{},"e":{"docs":{},"n":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"u":{"docs":{},"n":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"s":{"docs":{},"e":{"docs":{},"d":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"(":{"docs":{},"t":{"docs":{},"h":{"docs":{},"i":{"docs":{},"s":{"docs":{},".":{"docs":{},"n":{"docs":{},"g":{"docs":{},"x":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{},"e":{"docs":{},"l":{"docs":{},"s":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}}}}}}}}}},"o":{"docs":{},"n":{"docs":{},"l":{"docs":{},"y":{"docs":{},"e":{"docs":{},"l":{"docs":{},"s":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"o":{"docs":{},"f":{"docs":{},"f":{"docs":{},"a":{"docs":{},"i":{"docs":{},"l":{"docs":{},"e":{"docs":{},"d":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"(":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0049833887043189366},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0066815144766146995}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"n":{"docs":{},"a":{"docs":{},"v":{"docs":{},"i":{"docs":{},"g":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"m":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"s":{"docs":{},"a":{"docs":{},"s":{"docs":{},"f":{"docs":{},"u":{"docs":{},"n":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"(":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"t":{"docs":{},"o":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"e":{"docs":{},"x":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"s":{"docs":{},"a":{"docs":{},"s":{"docs":{},"f":{"docs":{},"u":{"docs":{},"n":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"(":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"t":{"docs":{},"o":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"(":{"docs":{},"c":{"docs":{},"h":{"docs":{},"i":{"docs":{},"l":{"docs":{},"d":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0033222591362126247},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.004454342984409799}}}}}}}},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"u":{"docs":{},"n":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"(":{"docs":{},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"a":{"docs":{},"r":{"docs":{},"r":{"docs":{},"a":{"docs":{},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"(":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192}}}}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"(":{"docs":{},"t":{"docs":{},"h":{"docs":{},"i":{"docs":{},"s":{"docs":{},".":{"docs":{},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{},"e":{"docs":{},".":{"docs":{},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},".":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"i":{"docs":{},"c":{"docs":{},"e":{"docs":{},".":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"(":{"docs":{},"o":{"docs":{},"b":{"docs":{},"j":{"docs":{},".":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}}}}}},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"i":{"docs":{},"c":{"docs":{},"e":{"docs":{},".":{"docs":{},"a":{"docs":{},"d":{"docs":{},"d":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"(":{"docs":{},"'":{"docs":{},"a":{"docs":{},"n":{"docs":{},"o":{"docs":{},"t":{"docs":{},"h":{"docs":{},"e":{"docs":{},"r":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}}}}}}}},"d":{"docs":{},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0032258064516129032}}}}}}},"c":{"docs":{},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"g":{"docs":{},"e":{"docs":{},"s":{"docs":{},"o":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}}}}}}}}},"e":{"docs":{},"c":{"docs":{},"k":{"docs":{},"_":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577}}}}}}}}}}}},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}}},"[":{"docs":{},"'":{"docs":{},"a":{"docs":{},"n":{"docs":{},"o":{"docs":{},"t":{"docs":{},"h":{"docs":{},"e":{"docs":{},"r":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}}}}}}}}}}}}},"c":{"docs":{},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"g":{"docs":{},"e":{"docs":{},"s":{"docs":{},"o":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"(":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}},"[":{"docs":{},"'":{"docs":{},"a":{"docs":{},"d":{"docs":{},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577}}}}}}}}}}}}}}}}}}}}}}}}},"h":{"docs":{},"a":{"docs":{},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"(":{"docs":{},"t":{"docs":{},"h":{"docs":{},"i":{"docs":{},"s":{"docs":{},".":{"docs":{},"n":{"docs":{},"g":{"docs":{},"x":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}}}}}}},"o":{"docs":{},"n":{"docs":{},"l":{"docs":{},"i":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}}}}}}}}}}}}}}}}}}}}}}}},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0033222591362126247},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.004454342984409799}}}}}},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},".":{"docs":{},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}},"o":{"docs":{},"n":{"docs":{},"l":{"docs":{},"i":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192}},"e":{"docs":{},".":{"docs":{},"a":{"docs":{},"s":{"docs":{},"o":{"docs":{},"b":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192},"/injectables/NgxPermissionsStore.html":{"ref":"/injectables/NgxPermissionsStore.html","tf":0.02040816326530612}}}}}}}}}},"n":{"docs":{},"e":{"docs":{},"x":{"docs":{},"t":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192}},"(":{"docs":{},"n":{"docs":{},"e":{"docs":{},"w":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192}}}}}}}}}}}},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.008287292817679558}}}}}}}}}}}}}},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.022099447513812154}}}}}}}}}}}}},"u":{"docs":{},"n":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"z":{"docs":{},"e":{"docs":{},"d":{"docs":{},".":{"docs":{},"e":{"docs":{},"m":{"docs":{},"i":{"docs":{},"t":{"docs":{"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.005555555555555556},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101},"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.005714285714285714}}}}}}}}}}}}}}}}}}},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"z":{"docs":{},"e":{"docs":{},"d":{"docs":{},".":{"docs":{},"e":{"docs":{},"m":{"docs":{},"i":{"docs":{},"t":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}}}}}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{},"i":{"docs":{},"n":{"docs":{},"e":{"docs":{},"d":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"y":{"docs":{},"(":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00823045267489712}}}}}}}}}}}}}}}}}}}}}}},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"(":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"n":{"docs":{},"l":{"docs":{},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"(":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"i":{"docs":{},"c":{"docs":{},"e":{"docs":{},".":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"c":{"docs":{},"k":{"docs":{},"s":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"(":{"docs":{},")":{"docs":{},".":{"docs":{},"t":{"docs":{},"o":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}}}}}}}}}},"s":{"docs":{},"(":{"docs":{},")":{"docs":{},".":{"docs":{},"t":{"docs":{},"o":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"h":{"docs":{},"o":{"docs":{},"w":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"b":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"k":{"docs":{},"i":{"docs":{},"n":{"docs":{},"v":{"docs":{},"i":{"docs":{},"e":{"docs":{},"w":{"docs":{},"(":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202}}}}}},"h":{"docs":{},"i":{"docs":{},"s":{"docs":{},".":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"e":{"docs":{},"f":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.007339449541284404}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"i":{"docs":{"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00411522633744856}},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00411522633744856}},"e":{"docs":{},".":{"docs":{},"a":{"docs":{},"s":{"docs":{},"o":{"docs":{},"b":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00411522633744856},"/injectables/NgxPermissionsConfigurationStore.html":{"ref":"/injectables/NgxPermissionsConfigurationStore.html","tf":0.013333333333333334}}}}}}}}}},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.0205761316872428}}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"s":{"docs":{},"e":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{},"b":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"(":{"docs":{},"t":{"docs":{},"f":{"docs":{},".":{"docs":{},"e":{"docs":{},"l":{"docs":{},"e":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"r":{"docs":{},"e":{"docs":{},"f":{"docs":{},".":{"docs":{},"n":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},"e":{"docs":{},"l":{"docs":{},"e":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},".":{"docs":{},"n":{"docs":{},"e":{"docs":{},"x":{"docs":{},"t":{"docs":{},"s":{"docs":{"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0032258064516129032}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"t":{"docs":{},"o":{"docs":{},"a":{"docs":{},"n":{"docs":{},"o":{"docs":{},"t":{"docs":{},"h":{"docs":{},"e":{"docs":{},"r":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"(":{"docs":{},"(":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},".":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"t":{"docs":{},"o":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}},")":{"docs":{},"[":{"docs":{},"'":{"docs":{},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{},"a":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}}}},"f":{"docs":{},"a":{"docs":{},"i":{"docs":{},"l":{"docs":{},"e":{"docs":{},"d":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},".":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"t":{"docs":{},"o":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0033222591362126247},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.004454342984409799}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"u":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"(":{"docs":{},"s":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0055248618784530384}}}}}}},"t":{"docs":{},"h":{"docs":{},"i":{"docs":{},"s":{"docs":{},".":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"s":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{},"e":{"docs":{},".":{"docs":{},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"l":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"i":{"docs":{},"c":{"docs":{},"e":{"docs":{},".":{"docs":{},"a":{"docs":{},"d":{"docs":{},"d":{"docs":{},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{},"(":{"docs":{},"'":{"docs":{},"a":{"docs":{},"d":{"docs":{},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0032258064516129032}}}}}}}}}}}}}}}},"h":{"docs":{},"a":{"docs":{},"s":{"docs":{},"o":{"docs":{},"n":{"docs":{},"l":{"docs":{},"y":{"docs":{},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{},"s":{"docs":{},"(":{"docs":{},"t":{"docs":{},"h":{"docs":{},"i":{"docs":{},"s":{"docs":{},".":{"docs":{},"n":{"docs":{},"g":{"docs":{},"x":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}}}}}}},"o":{"docs":{},"n":{"docs":{},"l":{"docs":{},"i":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}}}}}}}}}}}}}}}}}}}}}}}},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0033222591362126247},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.004454342984409799}}}}}},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},".":{"docs":{},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}},"o":{"docs":{},"n":{"docs":{},"l":{"docs":{},"i":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}}}}},"s":{"docs":{},".":{"docs":{},"a":{"docs":{},"d":{"docs":{},"d":{"docs":{},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"a":{"docs":{},"d":{"docs":{},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{},"_":{"docs":{},"f":{"docs":{},"a":{"docs":{},"l":{"docs":{},"s":{"docs":{"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.003105590062111801}}}}}},"r":{"docs":{},"e":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.003105590062111801}}}}}},"s":{"docs":{},"o":{"docs":{},"l":{"docs":{},"v":{"docs":{},"e":{"docs":{},"_":{"docs":{},"f":{"docs":{},"a":{"docs":{},"l":{"docs":{},"s":{"docs":{"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.003105590062111801}}}}}},"t":{"docs":{},"r":{"docs":{},"u":{"docs":{"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.003105590062111801}}}}}}}}}}}}},"t":{"docs":{},"r":{"docs":{},"u":{"docs":{"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.003105590062111801}}}}}}}}}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}},"e":{"docs":{},".":{"docs":{},"a":{"docs":{},"s":{"docs":{},"o":{"docs":{},"b":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426},"/classes/NgxRolesStore.html":{"ref":"/classes/NgxRolesStore.html","tf":0.02564102564102564}}}}}}}}}},"n":{"docs":{},"e":{"docs":{},"x":{"docs":{},"t":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}},"(":{"docs":{},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.006191950464396285}}}}}}}}}},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.009287925696594427}},"e":{"docs":{},"[":{"docs":{},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}},"]":{"docs":{},".":{"docs":{},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"u":{"docs":{},"n":{"docs":{},"c":{"docs":{},"t":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.006191950464396285}}}}}}}}}}}}}}}}}}}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}}}}}}}}}}}}}}}}},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},".":{"docs":{},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}}}}}}}}}}}}}}}}}}}}},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"n":{"docs":{},"a":{"docs":{},"v":{"docs":{},"i":{"docs":{},"g":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"(":{"docs":{},"[":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"t":{"docs":{},"o":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"t":{"docs":{},"o":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}}}}}}}}}}}}}}}}}}}}}},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"z":{"docs":{},"e":{"docs":{},"d":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.005555555555555556}}}}}}}}}}}}}}}}},"u":{"docs":{},"n":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"z":{"docs":{},"e":{"docs":{},"d":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.005714285714285714}}}}}}}}}}}}}}}}}}}}}},"n":{"docs":{},"g":{"docs":{},"x":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{},"t":{"docs":{},"h":{"docs":{},"e":{"docs":{},"n":{"docs":{"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.005555555555555556},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202}}}}}},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"s":{"docs":{},"e":{"docs":{},"d":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"i":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}}}}}}}}}}}}}}}}}}},"e":{"docs":{},"l":{"docs":{},"s":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101},"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.005714285714285714}}}}},"u":{"docs":{},"n":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"s":{"docs":{},"e":{"docs":{},"d":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"i":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}}}}}}}}}}}}}}}}}}}}}}}}}},"l":{"docs":{},"s":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.007339449541284404},"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.005714285714285714}}}}},"o":{"docs":{},"n":{"docs":{},"l":{"docs":{},"y":{"docs":{},"t":{"docs":{},"h":{"docs":{},"e":{"docs":{},"n":{"docs":{"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.005555555555555556},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}}}}},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"s":{"docs":{},"e":{"docs":{},"d":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"i":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}}}}}}}}}}}}}}}}}}},"u":{"docs":{},"n":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"s":{"docs":{},"e":{"docs":{},"d":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"i":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}}}}}}}}}}}}}}}}}}}}},"e":{"docs":{},"l":{"docs":{},"s":{"docs":{"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.005714285714285714}}}}}},"i":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202}}}}}},"t":{"docs":{},"h":{"docs":{},"e":{"docs":{},"n":{"docs":{"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.005555555555555556},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.009174311926605505}}}}}},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"s":{"docs":{},"e":{"docs":{},"d":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"i":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}}}}}}}}}}}}}}}}}}},"u":{"docs":{},"n":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"s":{"docs":{},"e":{"docs":{},"d":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"i":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"e":{"docs":{},"l":{"docs":{},"s":{"docs":{},"e":{"docs":{},"b":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"k":{"docs":{},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{},"i":{"docs":{},"n":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}}}}}}}}}}}}}}},"t":{"docs":{},"h":{"docs":{},"e":{"docs":{},"n":{"docs":{},"b":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"k":{"docs":{},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{},"i":{"docs":{},"n":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}}}}}}}}}}}}}}}},"a":{"docs":{},"m":{"docs":{"/classes/NgxPermission.html":{"ref":"/classes/NgxPermission.html","tf":0.022222222222222223},"/classes/NgxRole.html":{"ref":"/classes/NgxRole.html","tf":0.02127659574468085}}}}},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"e":{"docs":{},"f":{"docs":{"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.005555555555555556},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.007339449541284404}}}}}}}}}}}},"r":{"docs":{},"a":{"docs":{},"n":{"docs":{},"s":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"m":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"(":{"docs":{},"p":{"docs":{},"u":{"docs":{},"r":{"docs":{},"e":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"v":{"docs":{},"i":{"docs":{},"e":{"docs":{},"w":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"t":{"docs":{},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"c":{"docs":{},"l":{"docs":{},"e":{"docs":{},"a":{"docs":{},"r":{"docs":{"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.005555555555555556},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.005504587155963303},"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.005714285714285714}}}}}},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"e":{"docs":{},"m":{"docs":{},"b":{"docs":{},"e":{"docs":{},"d":{"docs":{},"d":{"docs":{},"e":{"docs":{},"d":{"docs":{},"v":{"docs":{},"i":{"docs":{},"e":{"docs":{},"w":{"docs":{},"(":{"docs":{},"t":{"docs":{},"h":{"docs":{},"i":{"docs":{},"s":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"z":{"docs":{},"e":{"docs":{},"d":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.005555555555555556}}}}}}}}}}}}}}}}},"u":{"docs":{},"n":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"z":{"docs":{},"e":{"docs":{},"d":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.005714285714285714}}}}}}}}}}}}}}}}}}}}}}}}}},"e":{"docs":{},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"o":{"docs":{},"n":{"docs":{},"l":{"docs":{},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}}}}}}}}}}}}}}},"o":{"docs":{},"n":{"docs":{},"l":{"docs":{},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"n":{"docs":{},"l":{"docs":{},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202}}}}}}}}}}}}}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"u":{"docs":{},"n":{"docs":{},"c":{"docs":{},"t":{"docs":{"/classes/NgxPermission.html":{"ref":"/classes/NgxPermission.html","tf":0.022222222222222223},"/classes/NgxRole.html":{"ref":"/classes/NgxRole.html","tf":0.02127659574468085}}}}}}}}}}}}}}}}},"i":{"docs":{},"n":{"docs":{},"i":{"docs":{},"t":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"u":{"docs":{},"b":{"docs":{},"s":{"docs":{},"c":{"docs":{},"r":{"docs":{},"i":{"docs":{},"p":{"docs":{},"t":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{},"u":{"docs":{},"n":{"docs":{},"s":{"docs":{},"u":{"docs":{},"b":{"docs":{},"s":{"docs":{},"c":{"docs":{},"r":{"docs":{},"i":{"docs":{},"b":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"o":{"docs":{},"l":{"docs":{"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.012345679012345678},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}}}},"f":{"docs":{},"a":{"docs":{},"i":{"docs":{},"l":{"docs":{},"e":{"docs":{},"d":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{},"y":{"docs":{},"o":{"docs":{},"f":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"t":{"docs":{},"o":{"docs":{},"(":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"i":{"docs":{},"l":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},"(":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},".":{"docs":{},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}},"o":{"docs":{},"n":{"docs":{},"l":{"docs":{},"i":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"w":{"docs":{},"i":{"docs":{},"t":{"docs":{},"h":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"(":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},".":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"t":{"docs":{},"o":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0033222591362126247},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.004454342984409799}}}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"t":{"docs":{},"o":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"n":{"docs":{},"l":{"docs":{},"y":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"s":{"docs":{},"e":{"docs":{},"d":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"y":{"docs":{},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{},"i":{"docs":{},"n":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202}}}}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"c":{"docs":{},"k":{"docs":{},"(":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0033222591362126247},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.004454342984409799}}}}}}}}}}}}}}}}}}}}}}}}},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"s":{"docs":{},"e":{"docs":{},"d":{"docs":{},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{},"a":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"i":{"docs":{"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00823045267489712}}}}}}}}}}}}}}}}}}}}}}}}}}},"u":{"docs":{},"n":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"s":{"docs":{},"e":{"docs":{},"d":{"docs":{},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{},"a":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"i":{"docs":{"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00823045267489712}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"u":{"docs":{},"n":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"s":{"docs":{},"e":{"docs":{},"d":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"y":{"docs":{},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{},"i":{"docs":{},"n":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"s":{"docs":{},"e":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"g":{"docs":{},"h":{"docs":{"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.013422818791946308}}}}},"w":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101},"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00823045267489712}}}}}},"i":{"docs":{},"m":{"docs":{},"e":{"docs":{"/index.html":{"ref":"/index.html","tf":0.002190100744634253}}}},"t":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.016778523489932886}}}}},"o":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0033222591362126247},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.004454342984409799}},"e":{"docs":{},"(":{"docs":{},")":{"docs":{},".":{"docs":{},"t":{"docs":{},"h":{"docs":{},"e":{"docs":{},"n":{"docs":{},"(":{"docs":{},"(":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"a":{"docs":{},"n":{"docs":{},"s":{"docs":{},"i":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0017520805957074025}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{},"i":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}}}}}}}},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"m":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"(":{"docs":{},"p":{"docs":{},"u":{"docs":{},"r":{"docs":{},"e":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0033222591362126247},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"t":{"docs":{},"o":{"docs":{},"a":{"docs":{},"r":{"docs":{},"r":{"docs":{},"a":{"docs":{},"y":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997},"/miscellaneous.html":{"ref":"/miscellaneous.html","tf":0.015625}},"(":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},".":{"docs":{},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}},"o":{"docs":{},"n":{"docs":{},"l":{"docs":{},"i":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}}}}}}}}}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426}}}}},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{"/miscellaneous.html":{"ref":"/miscellaneous.html","tf":0.015625}}}}}}}}}}}}}}}}}}}}}}}}}}},"e":{"docs":{},"a":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}},"e":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.00819672131147541},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.007246376811594203},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.0045871559633027525},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.004608294930875576},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0032258064516129032},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.003105590062111801}}}},"i":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}},"u":{"docs":{},"e":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0056942619360490585},"/modules/LazyIsolateModule.html":{"ref":"/modules/LazyIsolateModule.html","tf":0.024096385542168676},"/modules/LazyRoleIsolateModule.html":{"ref":"/modules/LazyRoleIsolateModule.html","tf":0.03225806451612903},"/modules/LazyRolesAsyncIsolateModule.html":{"ref":"/modules/LazyRolesAsyncIsolateModule.html","tf":0.018518518518518517},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0032258064516129032},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.009316770186335404},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.008305647840531562},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.009287925696594427},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.011135857461024499}}}}},"w":{"docs":{},"o":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}},"i":{"docs":{},"c":{"docs":{},"e":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}}}}},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013},"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.05555555555555555},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.029357798165137616},"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.05714285714285714},"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00823045267489712},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.014634146341463415},"/interfaces/NgxPermissionsRouterData.html":{"ref":"/interfaces/NgxPermissionsRouterData.html","tf":0.06},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.004454342984409799},"/coverage.html":{"ref":"/coverage.html","tf":0.006329113924050633}}}}},"f":{"docs":{"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0032258064516129032}}}},"u":{"docs":{},"n":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.010067114093959731}},"i":{"docs":{},"s":{"docs":{},"e":{"docs":{},"d":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"y":{"docs":{},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{},"i":{"docs":{},"n":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.005504587155963303}}}}}}}}}}}}}}}}}}}}}}}}},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}},"f":{"docs":{},"i":{"docs":{},"n":{"docs":{"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.01646090534979424},"/injectables/NgxPermissionsConfigurationStore.html":{"ref":"/injectables/NgxPermissionsConfigurationStore.html","tf":0.02666666666666667},"/miscellaneous.html":{"ref":"/miscellaneous.html","tf":0.109375}}}}}}},"i":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}}},"p":{"docs":{"/index.html":{"ref":"/index.html","tf":0.001314060446780552}},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"_":{"docs":{},"c":{"docs":{},"a":{"docs":{},"s":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}}},"r":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}},"s":{"docs":{"/index.html":{"ref":"/index.html","tf":0.02058694699956198},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.006711409395973154}},"a":{"docs":{},"g":{"docs":{"/index.html":{"ref":"/index.html","tf":0.004380201489268506},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.006711409395973154}}}},"e":{"docs":{},"f":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}},"r":{"docs":{"/index.html":{"ref":"/index.html","tf":0.010512483574244415},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.006711409395973154}}},"_":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"i":{"docs":{},"g":{"docs":{},"u":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"_":{"docs":{},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.014285714285714285},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.014285714285714285},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.014285714285714285},"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.00411522633744856},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.014634146341463415},"/miscellaneous.html":{"ref":"/miscellaneous.html","tf":0.03125}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"_":{"docs":{},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.014285714285714285},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.014285714285714285},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.014285714285714285},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.014634146341463415},"/miscellaneous.html":{"ref":"/miscellaneous.html","tf":0.03125}}}}}}}}}}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{},"s":{"docs":{},"_":{"docs":{},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.014285714285714285},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.014285714285714285},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.014285714285714285},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.014634146341463415},"/miscellaneous.html":{"ref":"/miscellaneous.html","tf":0.03125}}}}}}}}}}}}},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.02857142857142857},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.02857142857142857},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.02857142857142857},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.02926829268292683}}}}}}}},"t":{"docs":{},"i":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0017520805957074025}},"s":{"docs":{},"/":{"docs":{},"u":{"docs":{},"t":{"docs":{},"i":{"docs":{},"l":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.0016611295681063123},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.0030959752321981426},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.0022271714922048997}}}}}}}}}}}},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"d":{"docs":{"/index.html":{"ref":"/index.html","tf":0.00788436268068331},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192}},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"o":{"docs":{},"n":{"docs":{},"l":{"docs":{},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.005504587155963303}}}}}}}}}}}}}}}},"o":{"docs":{},"n":{"docs":{},"l":{"docs":{},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.005504587155963303}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"n":{"docs":{},"l":{"docs":{},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.005504587155963303}}}}}}}}}}}}}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"u":{"docs":{},"n":{"docs":{},"c":{"docs":{},"t":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.04143646408839779},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.015479876160990712},"/classes/NgxPermission.html":{"ref":"/classes/NgxPermission.html","tf":0.13333333333333333},"/classes/NgxRole.html":{"ref":"/classes/NgxRole.html","tf":0.1276595744680851}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"(":{"docs":{},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.0027624309392265192}}}}}}}}}}}}}}}}}}}}},"u":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0056942619360490585},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.003355704697986577},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.001834862385321101}}}},"r":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.013422818791946308},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.03278688524590164},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.028985507246376812},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.01834862385321101},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.018433179723502304},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.012903225806451613},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.012422360248447204}},"i":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"/miscellaneous.html":{"ref":"/miscellaneous.html","tf":0.015625}}}}}}}},"e":{"docs":{},"r":{"docs":{},"b":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}},"i":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}},"f":{"docs":{},"i":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"/index.html":{"ref":"/index.html","tf":0.002190100744634253}}}}}}}},"i":{"docs":{},"a":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}},"e":{"docs":{},"w":{"docs":{"/index.html":{"ref":"/index.html","tf":0.001314060446780552}},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"t":{"docs":{},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.005555555555555556},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202},"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.005714285714285714}},"e":{"docs":{},"r":{"docs":{},"r":{"docs":{},"e":{"docs":{},"f":{"docs":{"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.011111111111111112},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.003669724770642202},"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.011428571428571429}}}}}}}}}}}}}}}},"s":{"docs":{},"i":{"docs":{},"b":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}},"o":{"docs":{},"i":{"docs":{},"d":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506},"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.016778523489932886},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.00819672131147541},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.007246376811594203},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.0045871559633027525},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.004608294930875576},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0032258064516129032},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.003105590062111801},"/directives/NgxPermissionsAllowStubDirective.html":{"ref":"/directives/NgxPermissionsAllowStubDirective.html","tf":0.016666666666666666},"/directives/NgxPermissionsDirective.html":{"ref":"/directives/NgxPermissionsDirective.html","tf":0.03302752293577982},"/directives/NgxPermissionsRestrictStubDirective.html":{"ref":"/directives/NgxPermissionsRestrictStubDirective.html","tf":0.017142857142857144},"/injectables/AsyncTestService.html":{"ref":"/injectables/AsyncTestService.html","tf":0.039473684210526314},"/injectables/NgxPermissionsConfigurationService.html":{"ref":"/injectables/NgxPermissionsConfigurationService.html","tf":0.02880658436213992},"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.013289036544850499},"/injectables/NgxPermissionsService.html":{"ref":"/injectables/NgxPermissionsService.html","tf":0.022099447513812154},"/injectables/NgxRolesService.html":{"ref":"/injectables/NgxRolesService.html","tf":0.018575851393188854},"/classes/AppPage.html":{"ref":"/classes/AppPage.html","tf":0.05263157894736842}}}}}},"w":{"docs":{},"a":{"docs":{},"n":{"docs":{},"t":{"docs":{"/index.html":{"ref":"/index.html","tf":0.002190100744634253}}}},"r":{"docs":{},"n":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"b":{"docs":{},"e":{"docs":{},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}},"t":{"docs":{},"h":{"docs":{},"i":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}}}}}},"e":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},"e":{"docs":{},"r":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}},"b":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}},"l":{"docs":{},"l":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{"/components/AppComponent.html":{"ref":"/components/AppComponent.html","tf":0.006711409395973154}}}}}}},"h":{"docs":{},"e":{"docs":{},"n":{"docs":{},"e":{"docs":{},"v":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}}},"i":{"docs":{},"k":{"docs":{},"i":{"docs":{"/index.html":{"ref":"/index.html","tf":0.001314060446780552}}}}},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{"/index.html":{"ref":"/index.html","tf":0.001314060446780552}}},"k":{"docs":{"/index.html":{"ref":"/index.html","tf":0.002190100744634253},"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.004761904761904762},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.004761904761904762},"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.00819672131147541},"/components/InitialLoadComponent.html":{"ref":"/components/InitialLoadComponent.html","tf":0.014492753623188406},"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.0045871559633027525},"/components/LazyComponentComponent.html":{"ref":"/components/LazyComponentComponent.html","tf":0.009216589861751152},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0032258064516129032},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.003105590062111801},"/interfaces/NgxPermissionsModuleConfig.html":{"ref":"/interfaces/NgxPermissionsModuleConfig.html","tf":0.004878048780487805}},"f":{"docs":{},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}},"s":{"docs":{},"!":{"docs":{},"b":{"docs":{},"a":{"docs":{},"n":{"docs":{},"k":{"docs":{"/components/HomeComponent.html":{"ref":"/components/HomeComponent.html","tf":0.00819672131147541}}}},"c":{"docs":{},"k":{"docs":{},"s":{"docs":{},"h":{"docs":{},"o":{"docs":{},"u":{"docs":{},"l":{"docs":{},"d":{"docs":{"/components/IsolateComponent.html":{"ref":"/components/IsolateComponent.html","tf":0.0045871559633027525},"/components/LazyRoleIsolateTestComponent.html":{"ref":"/components/LazyRoleIsolateTestComponent.html","tf":0.0032258064516129032},"/components/LazyRolesAsyncTestComponent.html":{"ref":"/components/LazyRolesAsyncTestComponent.html","tf":0.003105590062111801}}}}}}}}}}}}}}}}},"r":{"docs":{},"a":{"docs":{},"p":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0004380201489268506}}}}}},"y":{"docs":{},"e":{"docs":{"/index.html":{"ref":"/index.html","tf":0.0008760402978537013}}}},"z":{"docs":{},"o":{"docs":{},"o":{"docs":{},"m":{"docs":{"/overview.html":{"ref":"/overview.html","tf":0.012578616352201259},"/modules/AppModule.html":{"ref":"/modules/AppModule.html","tf":0.01834862385321101},"/modules/LazyIsolateModule.html":{"ref":"/modules/LazyIsolateModule.html","tf":0.024096385542168676},"/modules/LazyIsolateRoutingModule.html":{"ref":"/modules/LazyIsolateRoutingModule.html","tf":0.02},"/modules/LazyModule.html":{"ref":"/modules/LazyModule.html","tf":0.02531645569620253},"/modules/LazyRoleIsolateModule.html":{"ref":"/modules/LazyRoleIsolateModule.html","tf":0.021505376344086023},"/modules/LazyRolesAsyncIsolateModule.html":{"ref":"/modules/LazyRolesAsyncIsolateModule.html","tf":0.018518518518518517},"/modules/NgxPermissionsAllowStubModule.html":{"ref":"/modules/NgxPermissionsAllowStubModule.html","tf":0.009523809523809525},"/modules/NgxPermissionsModule.html":{"ref":"/modules/NgxPermissionsModule.html","tf":0.009523809523809525},"/modules/NgxPermissionsRestrictStubModule.html":{"ref":"/modules/NgxPermissionsRestrictStubModule.html","tf":0.009523809523809525}}}}}},"_":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{"/injectables/NgxPermissionsGuard.html":{"ref":"/injectables/NgxPermissionsGuard.html","tf":0.008305647840531562},"/interfaces/NgxRedirectToNavigationParameters.html":{"ref":"/interfaces/NgxRedirectToNavigationParameters.html","tf":0.011135857461024499}}}}}}}},"length":3318},"corpusTokens":["0","0/12","0/13","0/18","0/3","0/4","0/5","0/6","0/7","1","1/14","1/3","1/4","123","2","2,4,5,6","2/4","25","3","33","4","4.3.2","4/5","42","5","5.5","6.0","6.0.0","7","9","_data","abil","abov","accept","access","account","achiev","action","activ","activatedroutesnapshot","activateroutesnapshot","actual_compon","add","adddmin","addit","addpermiss","addpermission(permiss","addpermissionstrategi","addpermissionstrategy(key","addrol","addrole('admin","addrole('role_nam","addrole(nam","addroles(rolesobj","admin","adminnnnnnn","agenda","agendalist","allow","allow.directive.stub","allow.directive.stub.t","allow.directive.stub.ts:10","allow.directive.stub.ts:12","allow.directive.stub.ts:13","allow.directive.stub.ts:14","allow.directive.stub.ts:16","allow.directive.stub.ts:17","allow.directive.stub.ts:19","allow.directive.stub.ts:20","allow.directive.stub.ts:27","allow.directive.stub.ts:36","allow.directive.stub.ts:8","allow.directive.stub.ts:9","allow/deni","along","alway","and/or","angular","angular(angular","angular/common","angular/common/http","angular/cor","angular/platform","angular/rout","angular2","angular4","anonym","anoth","anotheralso","anothercompon","anotheron","any[]).pip","anyth","aot","app","app.compon","app.component.css","app.component.html","app.module.t","app/lazi","app_initi","appcompon","applic","applicationinitstatu","applications(aot","applystrategi","applystrategy(str","appmodul","apppag","approut","approutingmodul","array","array.isarray(nam","array.isarray(permiss","array.isarray(redirectto","array.isarray(roles[key].validationfunct","artifact","async","asynctest","asynctestservic","atom","attribut","auth","authguard","authlogin().then((obj","author","authoris","automat","avail","back","backend","backshould","bank","base","basic","befor","behaviorsubject","belong","below","better","block","boolean","bootstrap","both","brows","browser","browser.get","browsermodul","build","bulb","busi","bypass","call","canactiv","canactivate(rout","canactivatechild","canactivatechild(childrout","candeactivateguard","caneditagenda","canload","canload(rout","canreadagenda","canreadagenda','caneditagenda","canreadagenda(rejectedpermissionnam","canreadinvoic","canreadinvoices','caneditinvoices','canuploadimag","cant","case","catch","catcherror","caus","chain","chang","check","checkonlypermiss","checkonlypermissions(purepermiss","child","children","class","cli","client","cluster_appmodul","cluster_appmodule_bootstrap","cluster_appmodule_declar","cluster_appmodule_import","cluster_lazyisolatemodul","cluster_lazyisolatemodule_declar","cluster_lazyisolatemodule_import","cluster_lazyisolateroutingmodul","cluster_lazyisolateroutingmodule_export","cluster_lazyisolateroutingmodule_import","cluster_lazymodul","cluster_lazymodule_declar","cluster_lazymodule_import","cluster_lazyroleisolatemodul","cluster_lazyroleisolatemodule_declar","cluster_lazyroleisolatemodule_import","cluster_lazyrolesasyncisolatemodul","cluster_lazyrolesasyncisolatemodule_declar","cluster_lazyrolesasyncisolatemodule_import","cluster_lazyrolesasyncisolatemodule_provid","cluster_ngxpermissionsallowstubmodul","cluster_ngxpermissionsallowstubmodule_declar","cluster_ngxpermissionsallowstubmodule_export","cluster_ngxpermissionsmodul","cluster_ngxpermissionsmodule_declar","cluster_ngxpermissionsmodule_export","cluster_ngxpermissionsrestrictstubmodul","cluster_ngxpermissionsrestrictstubmodule_declar","cluster_ngxpermissionsrestrictstubmodule_export","code","coma","combin","come","comecompon","common","commonmodul","compat","complet","complex","compon","component'},{'nam","component.compon","component.component.css","component.component.html","component.component.t","component.component.ts:12","component.component.ts:8","component/lazi","component_templ","componentnam","config.configurationisol","config.permissionsisol","config.rolesisol","configservic","configur","configurationisol","configurationservic","configurationstor","congrat","console.log('author","console.log('i","console.log('unauthor","console.log(data","console.log(permiss","console.log(this.rolesservices.getrol","const","constructor","constructor(isol","constructor(nam","constructor(permissionsservic","constructor(priv","constructor(rolesservic","constructor(viewcontain","consum","contain","content","context","control","convent","correspond","coverag","creat","current","currentauthorizedst","custom","customis","dashboard","data","data.every((_data","data.model","data.model.t","data.model.ts:2","data.model.ts:3","data.model.ts:4","data.some((_data","day","declar","default","defin","definepermiss","definit","delet","deletemeet","demo","deni","dep","depend","descript","desir","detail","determin","dev","develop","dictionaryservic","differ","differenti","direct","directive/permissions.direct","directori","disabl","display","dist","distinguish","document","dom","don't","dont","donthavepermiss","ds","ds.load().then((data","dynam","dynamic/:id","e.g","e2","e2e/src/app.po.t","e2e/src/app.po.ts:4","e2e/src/app.po.ts:8","each","easi","easier","easili","editarticl","editev","editmeet","editor","element","element(by.css('app","elseblock","emit","end","enums/predefin","environ","error(`no","even","event","eventemitt","every((haspermiss","exampl","except","exceptshould","exclud","execut","expect","explan","explicitli","export","expos","extra","extract","fail","failedpermiss","failedpermissionnam","fallback","fals","familiar","featur","file","find","fire","first","first((data","first((haspermiss","firstmergeunusedrun","flag","flushpermiss","flushrol","follow","forchild","forchild(config","forkjoin","form","forroot","forroot(config","found","freeli","from(permissions.except","from(permissions.only).pip","from(promises).pip","from(rolenames).pip","from(roles[key].validationfunction).pip","fulfil","func","function","function)(failedpermissionnam","function)(rout","function)(this.templateref","function/servic","gener","get","getallstrategi","getauthorisedtempl","getauthorizedtempl","getparagraphtext","getpermiss","getpermission(nam","getrol","getrole(nam","getstrategi","getstrategy(key","getunauthorizedtempl","gggggggggg87687687687gggggggggg","given","go","gonna","good","googl","grant","great","group","guard","guard.servic","guard.service.t","guard.service.ts:139","guard.service.ts:181","guard.service.ts:185","guard.service.ts:190","guard.service.ts:195","guard.service.ts:24","guard.service.ts:241","guard.service.ts:25","guard.service.ts:258","guard.service.ts:262","guard.service.ts:284","guard.service.ts:29","guard.service.ts:34","guard.service.ts:38","guard.service.ts:42","guard.service.ts:46","guard.service.ts:61","guard.service.ts:80","guard.service.ts:84","guest","guestttt","h1')).gettext","handi","handl","handleauthorisedpermiss","handleauthorisedpermission(templ","handleredirectoffailedpermiss","handleredirectoffailedpermission(permiss","handleunauthorisedpermiss","handleunauthorisedpermission(templ","hasarraypermiss","hasarraypermission(permiss","hasnavigationcommandsasfunct","hasnavigationcommandsasfunction(redirectto","hasnavigationextrasasfunct","hasnavigationextrasasfunction(redirectto","hasonlyrol","hasonlyroles(nam","haspermiss","haspermission(permiss","haspermission.every((_data","haspermissions(rout","haspermissions.every((_data","haspermissionvalidationfunct","haspermissionvalidationfunction(key","hasrol","hasrolekey","hasrolekey(rolenam","hasrolepermiss","hasrolepermission(rol","have","here","higher","home","home'},{'nam","home.component.css","home.component.html","home/:isedit","home/home.compon","homecompon","html","http","http://localhost:4200","httpclient","https://github.com/angular/angular/issues/15670","id","identifi","if(activateroutesnapshot.params['id","imagin","immutablevalu","implement","import","importantabov","importantif","importantnotic","includ","index","individu","info","initi","initialloadcompon","initpermissionsubscript","inject","inject(use_configuration_stor","inject(use_permissions_stor","inject(use_roles_stor","injectiontoken","injectiontoken('use_configuration_stor","injectiontoken('use_permissions_stor","injectiontoken('use_roles_stor","injector","input","insid","instal","instanc","instead","intend","interfac","intern","interpret","introduct","invalid","invoic","invok","isallfals","isauthor","isboolean","isboolean(promis","isboolean(this.currentauthorizedst","isboolean(valu","isfailedpermissionpropertyofredirectto","isfailedpermissionpropertyofredirectto(permiss","isfunct","isfunction((redirectto).navigationcommand","isfunction((redirectto).navigationextra","isfunction(functiontocheck","isfunction(permissions.except","isfunction(permissions.onli","isfunction(permissions.redirectto","isfunction(redirectto","isfunction(this.onlyauthorisedstrategydefin","isfunction(this.permissionssource.valu","isfunction(this.rolessource.value[key].validationfunct","isfunction(this.unauthorisedstrategydefin","isfunction(validationfunct","isol","isolate'},{'nam","isolate.component.css","isolate.component.html","isolate.module.t","isolate/async","isolate/isolate.compon","isolate/isolate/isolate.component.t","isolate/isolate/isolate.component.ts:10","isolate/isolate/isolate.component.ts:14","isolate/lazi","isolateadd","isolatecompon","isolatelazi","isparameteravail","isparameteravailable(permiss","isplainobject","isplainobject(object","isplainobject(permissions.redirectto","isplainobject(valu","ispromis","ispromise(promis","ispromise(this.rolessource.value[key].validationfunct","isredirectionwithparamet","isredirectionwithparameters(object","isstr","isstring(this.onlyauthorisedstrategydefin","isstring(this.unauthorisedstrategydefin","isstring(valu","it'","iter","johni","js","karma","key","khymenko","know","la","lazi","lazycomponentcompon","lazyisolateasyncrolesroutingmodul","lazyisolatedloadedmodul","lazyisolatemodul","lazyisolaterolesroutingmodul","lazyisolateroutingmodul","lazyloadedmodul","lazymodul","lazyroleisolatemodul","lazyroleisolatetestcompon","lazyrolesasyncisolatemodul","lazyrolesasynctestcompon","lazyroutingmodul","leav","legend","let'","level","librari","licens","list","listarticl","listev","listmeet","listsong","littl","load","load'},{'nam","load.compon","load.component.css","load.component.html","load.component.t","load.component.ts:12","load.component.ts:8","load/initi","loadchildren","loadcreat","loadpermiss","loadpermissions(permiss","loadservic","local","log","loge","logic","login","lot","lowercamelcas","m","made","main","make","manag","manipul","manual","map","map((data","match","mean","meaning","meet","merg","merge(this.permissionsservice.permiss","mergeal","mergemap","mergemap((data","mergemap((isallfals","mergemap((key","mergemap((pass","mergemap((permiss","met","metadata","method","minim","miscellan","miss","mit","model/permiss","model/permission.model","model/role.model","moder","modifi","modul","module.module#lazymodul","module.module.t","module/lazi","modulelazi","modulewithprovid","month","more","multi","multipl","name","names.length","navig","navigate(command","navigateto","navigationcommand","navigationextra","necessari","need","never","new","newpermiss","next","ng","ng2","ngif","ngmodul","ngondestroy","ngoninit","ngx","ngxpermiss","ngxpermissionsallowstubdirect","ngxpermissionsallowstubmodul","ngxpermissionsauthorisedstrategi","ngxpermissionsconfigurationservic","ngxpermissionsconfigurationstor","ngxpermissionsdirect","ngxpermissionsels","ngxpermissionsexcept","ngxpermissionsexceptauthorisedstrategi","ngxpermissionsexceptels","ngxpermissionsexceptthen","ngxpermissionsexceptunauthorisedstrategi","ngxpermissionsguard","ngxpermissionsmodul","ngxpermissionsmodule.forchild","ngxpermissionsmodule.forchild(arg","ngxpermissionsmodule.forchild({permissionsisol","ngxpermissionsmodule.forroot","ngxpermissionsmoduleconfig","ngxpermissionsobject","ngxpermissionsonli","ngxpermissionsonly],[ngxpermissionsexcept","ngxpermissionsonly],[ngxpermissionsexcept]'},{'nam","ngxpermissionsonlyauthorisedstrategi","ngxpermissionsonlyels","ngxpermissionsonlythen","ngxpermissionsonlyunauthorisedstrategi","ngxpermissionspredefinedstrategi","ngxpermissionspredefinedstrategies.remov","ngxpermissionspredefinedstrategies.show","ngxpermissionsrestrictstubdirect","ngxpermissionsrestrictstubmodul","ngxpermissionsrouterdata","ngxpermissionsservic","ngxpermissionsservice.flushpermissions();altern","ngxpermissionsservice.getpermiss","ngxpermissionsservice.loadpermissions(permiss","ngxpermissionsservice.permissions$.subscribe((permiss","ngxpermissionsservice.removepermission('user');retriev","ngxpermissionsstor","ngxpermissionsthen","ngxpermissionsunauthorisedstrategi","ngxredirecttonavigationparamet","ngxrole","ngxrolesobject","ngxrolesservic","ngxrolesservice.addrole('guest","ngxrolesservice.flushroles();altern","ngxrolesservice.getrol","ngxrolesservice.getrole('rolename');and","ngxrolesservice.removerole('user');get","ngxrolesservice.roles$.subscribe((data","ngxrolesstor","nice","noelseblockdefin","note","noteit'","notemptyvalu","notemptyvalue(this.ngxpermissionsexcept","notemptyvalue(this.ngxpermissionsonli","notemptyvalue(valu","noterememb","noteus","nothenblockdefin","notic","now","npm","number","object","object.keys(rolesobj).foreach((key","object.navigationcommand","object.navigationextra","observ","observableinput","of(!!this.permissionssource.valu","of(!isallfals","of(!pass","of(fals","of(null).pip","of(promis","of(tru","older","oleksandr","on","onauthoriseddefaultstrategi","onc","ondestroy","oninit","only/except","onlyauthorisedstrategydefin","onlyredirectcheck","onlyredirectcheck(permiss","onlyshould","onunauthoriseddefaultstrategi","opaquetoken","option","order","otherwis","out","output","over","overview","p","page","page.in","pair","param","paramet","parent","pass","passingexceptpermissionsvalid","passingexceptpermissionsvalidation(permiss","passingonlypermissionsvalid","passingonlypermissionsvalidation(permiss","path","perform","perm","permiss","permission.length","permission.reduce((sourc","permission/rol","permissionnam","permissionnamea","permissionnameb","permissionnamec","permissionpr","permissions.except","permissions.map((key","permissions.onli","permissions.redirectto","permissions.redirectto[failedpermiss","permissions.reduce((sourc","permissions.servic","permissions/rol","permissions/src/lib/directive/permissions.directive.t","permissions/src/lib/directive/permissions.directive.ts:100","permissions/src/lib/directive/permissions.directive.ts:113","permissions/src/lib/directive/permissions.directive.ts:138","permissions/src/lib/directive/permissions.directive.ts:15","permissions/src/lib/directive/permissions.directive.ts:16","permissions/src/lib/directive/permissions.directive.ts:161","permissions/src/lib/directive/permissions.directive.ts:17","permissions/src/lib/directive/permissions.directive.ts:170","permissions/src/lib/directive/permissions.directive.ts:177","permissions/src/lib/directive/permissions.directive.ts:181","permissions/src/lib/directive/permissions.directive.ts:185","permissions/src/lib/directive/permissions.directive.ts:19","permissions/src/lib/directive/permissions.directive.ts:191","permissions/src/lib/directive/permissions.directive.ts:197","permissions/src/lib/directive/permissions.directive.ts:20","permissions/src/lib/directive/permissions.directive.ts:21","permissions/src/lib/directive/permissions.directive.ts:23","permissions/src/lib/directive/permissions.directive.ts:24","permissions/src/lib/directive/permissions.directive.ts:26","permissions/src/lib/directive/permissions.directive.ts:27","permissions/src/lib/directive/permissions.directive.ts:29","permissions/src/lib/directive/permissions.directive.ts:30","permissions/src/lib/directive/permissions.directive.ts:32","permissions/src/lib/directive/permissions.directive.ts:33","permissions/src/lib/directive/permissions.directive.ts:35","permissions/src/lib/directive/permissions.directive.ts:36","permissions/src/lib/directive/permissions.directive.ts:38","permissions/src/lib/directive/permissions.directive.ts:40","permissions/src/lib/directive/permissions.directive.ts:41","permissions/src/lib/directive/permissions.directive.ts:52","permissions/src/lib/directive/permissions.directive.ts:57","permissions/src/lib/directive/permissions.directive.ts:63","permissions/src/lib/directive/permissions.directive.ts:79","permissions/src/lib/enums/predefin","permissions/src/lib/index.t","permissions/src/lib/index.ts:35","permissions/src/lib/index.ts:36","permissions/src/lib/index.ts:37","permissions/src/lib/model/permiss","permissions/src/lib/model/permission.model.t","permissions/src/lib/model/permission.model.ts:2","permissions/src/lib/model/permission.model.ts:3","permissions/src/lib/model/role.model.t","permissions/src/lib/model/role.model.ts:2","permissions/src/lib/model/role.model.ts:3","permissions/src/lib/router/permiss","permissions/src/lib/service/configuration.service.t","permissions/src/lib/service/configuration.service.ts:17","permissions/src/lib/service/configuration.service.ts:18","permissions/src/lib/service/configuration.service.ts:19","permissions/src/lib/service/configuration.service.ts:20","permissions/src/lib/service/configuration.service.ts:34","permissions/src/lib/service/configuration.service.ts:42","permissions/src/lib/service/configuration.service.ts:50","permissions/src/lib/service/configuration.service.ts:54","permissions/src/lib/service/configuration.service.ts:58","permissions/src/lib/service/configuration.service.ts:62","permissions/src/lib/service/permissions.service.t","permissions/src/lib/service/permissions.service.ts:101","permissions/src/lib/service/permissions.service.ts:126","permissions/src/lib/service/permissions.service.ts:18","permissions/src/lib/service/permissions.service.ts:19","permissions/src/lib/service/permissions.service.ts:32","permissions/src/lib/service/permissions.service.ts:36","permissions/src/lib/service/permissions.service.ts:45","permissions/src/lib/service/permissions.service.ts:53","permissions/src/lib/service/permissions.service.ts:67","permissions/src/lib/service/permissions.service.ts:75","permissions/src/lib/service/permissions.service.ts:79","permissions/src/lib/service/permissions.service.ts:83","permissions/src/lib/service/roles.service.t","permissions/src/lib/service/roles.service.ts:104","permissions/src/lib/service/roles.service.ts:16","permissions/src/lib/service/roles.service.ts:18","permissions/src/lib/service/roles.service.ts:29","permissions/src/lib/service/roles.service.ts:37","permissions/src/lib/service/roles.service.ts:43","permissions/src/lib/service/roles.service.ts:47","permissions/src/lib/service/roles.service.ts:55","permissions/src/lib/service/roles.service.ts:59","permissions/src/lib/service/roles.service.ts:63","permissions/src/lib/service/roles.service.ts:76","permissions/src/lib/store/configuration.store.t","permissions/src/lib/store/configuration.store.ts:11","permissions/src/lib/store/configuration.store.ts:12","permissions/src/lib/store/configuration.store.ts:8","permissions/src/lib/store/configuration.store.ts:9","permissions/src/lib/store/permissions.store.t","permissions/src/lib/store/permissions.store.ts:7","permissions/src/lib/store/permissions.store.ts:8","permissions/src/lib/store/roles.store.t","permissions/src/lib/store/roles.store.ts:5","permissions/src/lib/store/roles.store.ts:7","permissions/src/lib/testing/permiss","permissions/src/lib/utils/utils.t","permissions/src/test.t","permissionsauthor","permissionsisol","permissionsobject","permissionsobject[permissionnam","permissionspr","permissionsservic","permissionssourc","permissionsstor","permissionsstore.permissionssourc","permissionstor","permissionstore[permissionnam","permissionsunauthor","pipe","pipe(skip(this.firstmergeunusedrun","pipe(tap((haspermiss","pleas","plunker","point","predefinedstrategi","predefinedstrategy(strategi","present","privat","privileg","prod","product","profil","programm","project","projects/ngx","promis","promise.al","promise.all([this.hasrolekey(nam","promise.reject","promise.resolv","promise.resolve(fals","promise.resolve(tru","promisereject","promiseresolvefals","promiseresolvetru","properli","properti","protractor","provid","ps","ps.loadpermissions(data","public","purepermiss","put","readdocu","readi","readm","receiv","redirect","redirectto","redirectto).navigationcommand","redirectto).navigationextra","redirecttoanotherrout","redirecttoanotherroute(redirectto","redirecttofunc","redirecttofunc(rejectedpermissionnam","reducepermiss","reducepermission(sourc","refer","reject","rejectedpermissionnam","reli","reload","rememb","remov","removepermiss","removepermission(permissionnam","removerol","removerole(rolenam","render","renderer2","repres","request","requir","reserv","reset","resolv","resourc","rest","restrict","restrict.directive.stub","restrict.directive.stub.t","restrict.directive.stub.ts:10","restrict.directive.stub.ts:12","restrict.directive.stub.ts:13","restrict.directive.stub.ts:14","restrict.directive.stub.ts:16","restrict.directive.stub.ts:17","restrict.directive.stub.ts:19","restrict.directive.stub.ts:20","restrict.directive.stub.ts:26","restrict.directive.stub.ts:35","restrict.directive.stub.ts:8","restrict.directive.stub.ts:9","result","retriev","return","right","role","role/permiss","rolenam","rolename.map((key","roles/permiss","roles[key","roles[rolenam","rolesisol","rolesobj[key","rolesservic","rolessourc","rolesstor","root","root'},{'nam","rout","route'","route.data","route.data['permiss","route.params['id","router","router.navig","router/permiss","routermodul","routermodule.forchild(approut","routermodule.forchild(arg","routermodule.forroot(approut","routerstatesnapshot","routeslazi","routestatesnapshot","routing.modul","routing.module.t","rule","rule(","run","rxj","rxjs/oper","same","saveand","saveconsum","second","secur","see","seemeet","selector","separ","serv","server","server/brows","servic","service/configuration.servic","service/permissions.servic","service/roles.servic","session","set","setdefaultonauthorizedstrategi","setdefaultonauthorizedstrategy(nam","setdefaultonunauthorizedstrategi","setdefaultonunauthorizedstrategy(nam","sever","share","sharedmodul","show","show/hid","shown","showtemplateblockinview","showtemplateblockinview(templ","side","similar","similarli","simpl","simplest","simpli","simplifi","singl","single/multipl","site","situat","skip","skiplocationchang","skull","smallest","someth","sourc","special","specif","specifi","src/app/app.component.t","src/app/app.component.ts:10","src/app/app.component.ts:15","src/app/app.component.ts:19","src/app/app.component.ts:23","src/app/app.component.ts:27","src/app/app.module.t","src/app/home/home.component.t","src/app/home/home.component.ts:12","src/app/home/home.component.ts:8","src/app/initi","src/app/lazi","src/environments/environment.prod.t","src/environments/environment.t","src/test.t","start","state","statement","static","stop","store","store/configuration.stor","store/permissions.stor","store/roles.stor","str","strategi","strategies.enum","strategies.enum.t","strategiessourc","strategy(this.templateref","strategyfunct","string","structur","style","styleurl","subscrib","subscript","suffici","support","sure","svg","switch","switchmap","switchmap((promis","syntax","tabl","tap","tap((haspermiss","target","technic","tell","templat","templateref","templatest","templatest234234","templateurl","test","test'},{'nam","test.compon","test.component.css","test.component.html","test.component.t","test.component.ts:10","test.component.ts:14","test.component.ts:16","test.component.ts:9","test.servic","test.service.t","test.service.ts:13","test.service.ts:17","test.service.ts:4","test.service.ts:9","test/lazi","testing/permiss","testpermiss","testpermissions(rout","text","tf","thank","then(([hasrol","then(([permissionspr","then((permiss","thenblock","think","this.addrole(key","this.applystrategy(this.configurationservice.onauthoriseddefaultstrategi","this.applystrategy(this.configurationservice.onunauthoriseddefaultstrategi","this.applystrategy(this.onlyauthorisedstrategydefin","this.applystrategy(this.unauthorisedstrategydefin","this.asynctest.promisereject","this.asynctest.promiseresolvefals","this.asynctest.promiseresolvetru","this.authpermissions.getpermissions('url","this.checkonlypermissions(permiss","this.checksession().topromis","this.configservice.addpermissionstrategy('lol","this.configservice.setdefaultonunauthorizedstrategy('lol","this.configurationservice.getstrategy(str","this.configurationservice.onauthoriseddefaultstrategi","this.configurationservice.onunauthoriseddefaultstrategi","this.configurationstore.onauthoriseddefaultstrategi","this.configurationstore.onunauthoriseddefaultstrategi","this.configurationstore.strategiessourc","this.currentauthorizedst","this.getauthorizedtempl","this.getunauthorizedtempl","this.handleauthorisedpermission(this.getauthorisedtempl","this.handleauthorisedpermission(this.ngxpermissionsexceptthen","this.handleauthorisedpermission(this.ngxpermissionsonlythen","this.handleredirectoffailedpermission(permiss","this.handleunauthorisedpermission(this.ngxpermissionsexceptels","this.handleunauthorisedpermission(this.ngxpermissionsonlyels","this.hasarraypermission(permiss","this.hasnavigationcommandsasfunction(redirectto","this.hasnavigationextrasasfunction(redirectto","this.haspermissions(childrout","this.haspermissions(rout","this.haspermissionvalidationfunction(key","this.hasrolepermission(this.rolessource.valu","this.http.get('url').subscribe((permiss","this.initpermissionsubscript","this.initpermissionsubscription.unsubscrib","this.isfailedpermissionpropertyofredirectto(permiss","this.isol","this.isparameteravailable(permissions.except","this.isparameteravailable(permissions.onli","this.isredirectionwithparameters(permissions.redirectto","this.isredirectionwithparameters(redirectto","this.nam","this.ngxpermissionsauthorisedstrategi","this.ngxpermissionsels","this.ngxpermissionsexceptauthorisedstrategi","this.ngxpermissionsexceptels","this.ngxpermissionsexceptthen","this.ngxpermissionsexceptunauthorisedstrategi","this.ngxpermissionsonli","this.ngxpermissionsonlyauthorisedstrategi","this.ngxpermissionsonlyels","this.ngxpermissionsonlythen","this.ngxpermissionsonlyunauthorisedstrategi","this.ngxpermissionsthen","this.ngxpermissionsunauthorisedstrategi","this.noelseblockdefin","this.nothenblockdefin","this.onauthoriseddefaultstrategi","this.onlyauthorisedstrategydefin","this.onlyredirectcheck(permiss","this.onunauthoriseddefaultstrategi","this.passingexceptpermissionsvalidation(permiss","this.passingonlypermissionsvalidation(permiss","this.permiss","this.permissions.service.loadpermissions(obj.permiss","this.permissions.service.loadpermissions(permiss","this.permissionsauthorized.emit","this.permissionsservice.addpermission('admin","this.permissionsservice.addpermission('anotherpermiss","this.permissionsservice.addpermission('changesometh","this.permissionsservice.addpermission('check_load","this.permissionsservice.addpermission('permiss","this.permissionsservice.addpermission(['anotherpermiss","this.permissionsservice.addpermission(['changesometh","this.permissionsservice.haspermission(data","this.permissionsservice.haspermission(permiss","this.permissionsservice.haspermission(permissions.except","this.permissionsservice.haspermission(permissions.onli","this.permissionsservice.haspermission(this.ngxpermissionsexcept","this.permissionsservice.haspermission(this.ngxpermissionsonli","this.permissionsservice.loadpermissions(['admin","this.permissionsservice.loadpermissions(perm","this.permissionsservice.loadpermissions(permiss","this.permissionssourc","this.permissionssource.asobserv","this.permissionssource.next","this.permissionssource.next(newpermiss","this.permissionssource.next(permiss","this.permissionssource.valu","this.permissionsunauthorized.emit","this.predefinedstrategy(nam","this.redirecttoanotherroute((permissions.redirectto","this.redirecttoanotherroute((permissions.redirectto)['default","this.redirecttoanotherroute((permissions.redirectto)[failedpermiss","this.redirecttoanotherroute(permissions.redirectto","this.reducepermission(sourc","this.reducepermission(this.permissionssource.valu","this.renderer.setattribute(tf.elementref.nativeelement.nexts","this.rol","this.rolesservice.addrole('admin","this.rolesservice.hasonlyroles(data","this.rolesservice.hasonlyroles(permissions.except","this.rolesservice.hasonlyroles(permissions.onli","this.rolesservice.hasonlyroles(this.ngxpermissionsexcept","this.rolesservice.hasonlyroles(this.ngxpermissionsonli","this.rolesservice.rol","this.rolesservices.addrole(\"admin_fals","this.rolesservices.addrole(\"admin_reject","this.rolesservices.addrole(\"admin_resolve_fals","this.rolesservices.addrole(\"admin_resolve_tru","this.rolesservices.addrole(\"admin_tru","this.rolessourc","this.rolessource.asobserv","this.rolessource.next","this.rolessource.next(rol","this.rolessource.valu","this.rolessource.value[key","this.rolessource.value[key].validationfunct","this.rolessource.value[nam","this.rolesstore.rolessourc","this.router.navig","this.router.navigate([redirectto","this.router.navigate(redirectto","this.sessionservice.checksession().topromis","this.sessionservice.checksessions().topromis","this.showtemplateblockinview(templ","this.showtemplateblockinview(this.templateref","this.strategi","this.strategiessourc","this.strategiessource.asobserv","this.strategiessource.valu","this.templateref","this.transformpermission(purepermiss","this.unauthorisedstrategydefin","this.validateexceptandonlypermiss","this.validateexceptonlypermiss","this.validateonlypermiss","this.validationfunct","this.viewcontainer.clear","this.viewcontainer.createembeddedview(templ","this.viewcontainer.createembeddedview(this.getauthorizedtempl","this.viewcontainer.createembeddedview(this.getunauthorizedtempl","those","through","throw","time","titl","togeth","topromis","topromise().then((data","transformpermiss","transformpermission(purepermiss","transformstringtoarray","transformstringtoarray(nam","transformstringtoarray(permiss","transformstringtoarray(permissions.except","transformstringtoarray(permissions.onli","transformstringtoarray(valu","transit","transitionproperti","treat","tree","tri","true","twice","two","type","unauthor","unauthorisedstrategydefin","undefin","understand","unit","up","upper_cas","url","us","usag","use_configuration_stor","use_permissions_stor","use_roles_stor","usefactori","user","usevalu","util","utils/util","valid","validateexceptandonlypermiss","validateexceptonlypermiss","validateonlypermiss","validationfunct","validationfunction(key","valu","var","variabl","verb","veri","verifi","version","via","view","viewcontain","viewcontainerref","visibl","visit","void","want","warn","warningbelow","warningthi","weather","web","welcom","well","whenev","wiki","word","work","workflow","works!backshould","works!bank","wrap","ye","zoom"],"pipeline":["trimmer","stopWordFilter","stemmer"]}, + "store": {"/index.html":{"url":"/index.html","title":"readme - index","body":"\n \nngx-permissions\nPermission and roles based access control for your angular(angular 2,4,5,6+) applications(AOT, lazy modules compatible)\n##\n\n\n\nDocumentation and examples\nTo see better structured documentation go to wiki-page.In one month the detailed functionality description will be available only on wiki page.\nDemo\nYou can test library in Plunker\nTable of contents\nSome functionality is missing visit wiki-page\n\nInstallation\nConsuming library\nManaging Permissions\nManaging Roles\nControlling access in views\nUsage with Routes\nDevelopment\nLicense\n\nWith version 5 minimal rxjs dependency 6.0\nWith version 4 minimal rxjs dependency 5.5\nVersion 2 for angular 4/5. Version 1 for angular 2/4\nInstallation\nTo install this library, run:\n$ npm install ngx-permissions --saveConsuming library\nYou can import library in any Angular application by running:\n$ npm install ngx-permissions --saveand then from your Angular AppModule:\nimport { BrowserModule } from '@angular/platform-browser';\nimport { NgModule } from '@angular/core';\n\nimport { AppComponent } from './app.component';\n\n// Import your library\nimport { NgxPermissionsModule } from 'ngx-permissions';\n\n@NgModule({\n declarations: [\n AppComponent\n ],\n imports: [\n BrowserModule,\n\n // Specify your library as an import\n NgxPermissionsModule.forRoot()\n ],\n providers: [],\n bootstrap: [AppComponent]\n})\nexport class AppModule { }SharedModule\nIf you use a SharedModule that you import in multiple other feature modules, you can export the NgxPermissionsModule to make sure you don't have to import it in every module.\n@NgModule({\n exports: [\n CommonModule,\n NgxPermissionsModule\n ]\n})\nexport class SharedModule { }\nNote: Never call a forRoot static method in the SharedModule. You might end up with different instances of the service in your injector tree. But you can use forChild if necessary.\n\nLazy loaded modules\nWhen you lazy load a module, you should use the forChild static method to import the NgxPermissionsModule.\nSince lazy loaded modules use a different injector from the rest of your application, you can configure them separately.\nYou can also isolate the service by using permissionsIsolate: true or rolesIsolate: true. In which case the service is a completely isolated instance.\nOtherwise, by default, it will share its data with other instances of the service.\n@NgModule({\n imports: [\n NgxPermissionsModule.forChild()\n ]\n})\nexport class LazyLoadedModule { }@NgModule({\n imports: [\n NgxPermissionsModule.forChild({\n permissionsIsolate: true, \n rolesIsolate: true})\n ]\n})\nexport class LazyIsolatedLoadedModule { }Once your library is imported, you can use its components, directives and pipes in your Angular application:\nImport service to the main application and load permissions\nimport { Component, OnInit } from '@angular/core';\nimport { NgxPermissionsService } from 'ngx-permissions';\nimport { HttpClient } from '@angular/common/http';\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.css']\n})\nexport class AppComponent implements OnInit {\n\n title = 'app';\n\n constructor(private permissionsService: NgxPermissionsService,\n private http: HttpClient) {}\n\n ngOnInit(): void {\n const perm = [\"ADMIN\", \"EDITOR\"];\n\n this.permissionsService.loadPermissions(perm);\n\n this.http.get('url').subscribe((permissions) => {\n //const perm = [\"ADMIN\", \"EDITOR\"]; example of permissions\n this.permissionsService.loadPermissions(permissions);\n })\n }\n}Usage in templates \n\n You can see this text congrats\n\n\n\n You can see this text congrats\n \n\n \n All will see it except JOHNY\n Managing permissions\nOverview\n\nIntroduction\nDefining permissions\nIndividual permissions\nTo load permissions before application start up\nMultiple permissions\n\n\nRemoving permissions\nRetrieving permissions\n\nIntroduction\nLet's start with little explanation what permission is. Permission is the most atomic ability that a user can have \nin your application. So you can think about permission as a smallest action that user can do inside your site. \nBut can user or anonymous be a permission? Technically yes, but from business point of view you should treat them \nas Roles that are more complex objects that can store more complex logic. \n\n:bulb: NoteIt's a good convention to start permission with a verb and combine them with resource or object, so permissions like readDocuments or listSongs \nare meaningful and easy to understand for other programmes. Notice that they are named lowerCamelCase for easy differentiation form roles.\n\n\n:skull: WarningThis library is intended for simplify the client side development workflow in a role based web application. DO NOT RELY ONLY ON THIS CHECKS FOR YOU APPLICATION SECURITY! Client side checks can be easily bypassed, so always implement the checks on the backend!\n\nDefining permissions\nSo, how do you tell Permission what does 'readDocuments' or 'listSongs' mean and how to know if the current user belongs\nto those definitions?\nWell, Permission allows you to set different 'permissions' definitions along with the logic that determines if the current \nsession belongs to them. To do that library exposes special container NgxPermissionsService that allows you to manipulate them freely.\nIndividual permissions\nTo add permissions individually NgxPermissionsService exposes method addPermission that generic usage is shown below or add as array: \n[...]\n ngOnInit() {\n this.permissionsService.addPermission('changeSomething')\n this.permissionsService.addPermission(['changeSomething', 'anotherAlso'])\n this.permissionsService.addPermission('changeSomething', () => {\n return true;\n })\n\n this.permissionsService.addPermission('anotherPermissions', (permissionName, permissionsObject) => {\n return !!permissionsObject[permissionName];\n });\n this.permissionsService.addPermission(['anotherPermissions', 'AnotherOne'], (permissionName, permissionsObject) => {\n return !!permissionsObject[permissionName];\n });\n\n //Will add validation function to every permission\n this.permissionsService.addPermission(['anotherPermissions', 'AnotherOne'], (permissionName, permissionsObject) => {\n return !!permissionsObject[permissionName];\n });\n\n this.permissionsService.addPermission('permissions', (permissionName, permissionsObject) => {\n return this.checkSession().toPromise();\n });\n }\nTo load permissions before application start up\nAPP_INITIALIZER is defined in angular/core. You include it in your app.module.ts like this.\nAPP_INITIALIZER is an OpaqueToken that references the ApplicationInitStatus service. ApplicationInitStatus is a multi provider. It supports multiple dependencies and you can use it in your providers list multiple times. It is used like this.\nimport { APP_INITIALIZER } from '@angular/core';\n\n@NgModule({\n providers: [\n DictionaryService,\n {\n provide: APP_INITIALIZER,\n useFactory: (ds: DictionaryService, ps: NgxPermissionsService ) => function() {return ds.load().then((data) => {return ps.loadPermissions(data)})},\n deps: [LoadService, NgxPermissionsService],\n multi: true\n }]\n})\nexport class AppModule { }Validation function are injected with any angular services. There are 2 local injectables available that can be used to implement more complex validation logic.\n\n\n\nInjectable Local\nDescription\n\n\n\n\npermissionName\nString representing name of checked permission\n\n\npermissionsObject\nObject of store permissions storing permissions properties\n\n\n\nIt also have to return one of values to properly represent results:\n\n\n\nValidation result\nReturned value\n\n\n\n\nValid\n[true\\\nPromise.resolve() but it should not resolve false]\n\n\nInvalid\n[false\\\nPromise.reject() or Promise.resolve(false)]\n\n\n\nMultiple permissions\nTo define multiple permissions method loadPermissions can be used. The only \ndifference from definePermission is that it accepts Array of permission names instead of single one. \nOften meet example of usage is set of permissions (e.g. received from server after user login) that you will iterate over to \ncheck if permission is valid.\nconst permissions = ['listMeeting', 'seeMeeting', 'editMeeting', 'deleteMeeting']\nNgxPermissionsService.loadPermissions(permissions) \nNgxPermissionsService.loadPermissions(permissions, (permissionName, permissionStore) => {\n return !!permissionStore[permissionName];\n}) NOTE: This method will remove older permissions and pass only new;\nRemoving permissions\nYou can easily remove all permissions form the NgxPermissionsService (e.g. after user logged out or switched profile) by calling: \nNgxPermissionsService.flushPermissions();Alternatively you can use removePermission to delete defined permissions manually:\nNgxPermissionsService.removePermission('user');Retrieving permissions\nAnd to get all user permissions use method getPermissions or use Observable permissions$:\nvar permissions = NgxPermissionsService.getPermissions();\n\nNgxPermissionsService.permissions$.subscribe((permissions) => {\n console.log(permissions)\n})Managing roles\nBefore start\nMake sure you are familiar with:\n\nManaging permissions \n\nOverview\n\nIntroduction\nDefining roles\nIndividual roles\nMultiple roles\n\n\nRemoving roles\nGetting all roles\n\nIntroduction\nBy definition a role is a named set of abilities (permissions) by which a specific group of users is identified. \nSo for example USER or ANONYMOUS would be roles and not permissions. We can represent our USER role as a group of permissions that the role should be able to perform. For example: listArticles, editArticles and other custom server/browser validated privileges. \n\n:bulb: NoteIt's a good convention to name roles with UPPER_CASE, so roles like ACCOUNTANT or ADMIN are easier to distinguish from permissions.\n\nDefining roles\nIndividual roles\nSimilarly to permissions we are gonna use here RolesService that exposes addRole allowing to define custom roles used by users in your application. \n[...]\n\nNgxRolesService\n .addRole('ROLE_NAME', ['permissionNameA', 'permissionNameB', 'permissionNameC', ...])\n\nNgxRolesService.addRole('Guest', () => {\n return this.sessionService.checkSession().toPromise();\n }); \n\nNgxRolesService.addRole('Guest', () => {\n return true;\n }); Validation function are injected with any angular services. There are 2 local injectables available that can be used to implement more complex validation logic.\n\n\n\nParameter\nDescription\n\n\n\n\nroleName\nString representing name of checked role\n\n\ntransitionProperties\nArray or validation function\n\n\n\nIt also have to return one of values to properly represent results:\n\n\n\nValidation result\nReturned value\n\n\n\n\nValid\n[true\\\nPromise.resolve() but it should not resolve false]\n\n\nInvalid\n[false\\\nPromise.reject() or Promise.resolve(false)]\n\n\n\n\nNote: Right now to make request to the backend it only supports promises\nNote: If at least one of request fulfils it will show the component\n\nUsage of addRole is very similar to addPermissions:\nNgxRolesService\n NgxPermission\n // Library will internally validate if 'listEvents' and 'editEvents' permissions are valid when checking if role is valid \n .addRole('ADMIN', ['listEvents', 'editEvents']); \n\nNgxRolesService.addRole('Guest', () => {\n return this.sessionService.checkSession().toPromise();\n }); \nMultiple roles\nService NgxRolesService allows you define multiple roles with addRoles method. This method accepts Object containing keys as a role names and corresponding validators as values. \nNgxRolesService \n // Or use your own function/service to validate role\n .addRoles({\n 'USER': ['canReadInvoices'],\n 'ADMIN': ['canReadInvoices','canEditInvoices','canUploadImages'],\n 'GUEST': () => {\n return this.sessionService.checkSessions().toPromise();\n }\n });\n:bulb: Note \n\nRemoving roles\nTo remove all roles use flushRoles method: \nNgxRolesService.flushRoles();Alternatively you can use removeRole to delete defined role manually:\nNgxRolesService.removeRole('USER');Getting all roles\nTo get specific role use method getRole:\nlet role = NgxRolesService.getRole('roleName');And to get all roles form NgxRolesService use method getRoles or use Observable roles$:\nlet roles = NgxRolesService.getRoles();\n\nNgxRolesService.roles$.subscribe((data) => {\n console.log(data);\n})Controlling access in views\nOverview\n\nPermission directive\nBasic usage\n\n\n\nPermission directive\nPermission module exposes directive ngxPermissionsOnly and ngxPermissionsExcept that can show/hide elements of your application based on set of permissions.\n\n:fire: Important Else, then syntax is supported. Note if you use then block don't put anything in main block it will be not visible, only then block will be used.\n\nPermission directive accepts several attributes:\n\n\n\nAttribute\nValue\nDescription\n\n\n\n\nngxPermissionsOnly\n[String | String[]]\nSingle or multiple permissions allowed to access content\n\n\nngxPermissionsExcept\n[String | String[]]\nSingle or multiple permissions denied to access content\n\n\n(permissionsAuthorized)\nEventEmitter\nEventEmitter emitted when authorized\n\n\n(permissionsUnauthorized)\nEventEmitter\nEventEmitter emitted when unAuthorized\n\n\n\nBasic usage\nDirectives accepts either single permission that has to be met in order to display it's content,\nYou can use both ngxPermissionsOnly and ngxPermissionsExcept at the same time:\n\n You can see this text congrats\n \n \n You can see this text congrats\n \n \n You can see this text congrats\n \n\n \n All will see it except JOHNY\n Or set of permissions separated by 'coma':\n\n You can see this text congrats\n\n\n \n All will see it except admin and Johny\n \n \n All will see it except admin and Johny\n \n\n \n \n \n elseBlock\n \n \n thenBlock\n \n\n \n \n \n elseBlock\n \n \n thenBlock\n \n\n\nOr just simply by *\n\n You can see this text congrats\n\n\n main\n \n elseBlock\n \n \n thenBlock\n \n\n \n \n elseBlock\n \n \n thenBlock\n \n\nNote: You cant use * style with other style directives like `ngIf. You should wrap them. And YES i don't like it either.\n ``html\n \n \n You can see this text congrats\n \n \n\n > :fire: **Important** \n > Using with except and only `together` should use `ngxPermissionsElse` or `ngxPermissionsThen`\n ```html\n \n\n \n \n elseBlock\n \n \n thenBlock\n Usage with Routes\n\nIntroduction\nProperty only and except\nSingle permission/role\nMultiple permissions/roles \nDynamic access\n\n\nProperty redirectTo\nSingle rule redirection\nMultiple rule redirection \nDynamic redirection rules\n\n\nImplemented Guards \nCan Activate Guard \nCan Load Guard\nCan Activate Child Guard\n\n\nCommon use cases\nTwo guards when first make request for authorisation and gets permissions second checks for permissions\n\n\n\nIntroduction\nNow you are ready to start working with controlling access to the states of your application. In order to restrict any state ngx-permission rely on angular-route's data property, reserving key permissions allowing to define authorization configuration.\nPermissions object accepts following properties:\n\n\n\nProperty\nAccepted value\n\n\n\n\nonly\n[String\\\nArray\\\nFunction]\n\n\nexcept\n[String\\\nArray\\\nFunction]\n\n\nredirectTo\n[String]\n\n\n\nProperty only and except\nProperty only:\n\nis used to explicitly define permission or role that are allowed to access the state \nwhen used as String contains single permission or role\nwhen used as Array contains set of permissions and/or roles\n\nProperty except: \n\nis used to explicitly define permission or role that are denied to access the state\nwhen used as String contains single permission or role\nwhen used as Array contains set of permissions and/or roles\n\n\n:fire: ImportantIf you combine both only and except properties you have to make sure they are not excluding each other, because denied roles/permissions would not allow access the state for users even if allowed ones would pass them. \n\nSingle permission/role\nIn simplest cases you allow users having single role permission to access the state. To achieve that you can pass as String desired role/permission to only/except property:\nYou can use except and only at the same time;\nimport { RouterModule, Routes } from '@angular/router';\nimport { NgModule } from '@angular/core';\nimport { HomeComponent } from './home/home.component';\nimport { NgxPermissionsGuard } from 'ngx-permissions';\n\nconst appRoutes: Routes = [\n { path: 'home',\n component: HomeComponent,\n canActivate: [NgxPermissionsGuard],\n data: {\n permissions: {\n only: 'ADMIN'\n }\n }\n },\n];\n@NgModule({\n imports: [\n RouterModule.forRoot(appRoutes)\n ],\n exports: [\n RouterModule\n ]\n})\nexport class AppRoutingModule {}\nIn given case when user is trying to access home state NgxPermissionsGuard service is called checking if isAuthorized permission is valid: \n\nif permission definition is not found it stops transition\n\nMultiple permissions/roles\nOften several permissions/roles are sufficient to allow/deny user to access the state. Then array value comes in handy: \nimport { RouterModule, Routes } from '@angular/router';\nimport { NgModule } from '@angular/core';\nimport { HomeComponent } from './home/home.component';\nimport { NgxPermissionsGuard } from 'ngx-permissions';\n\nconst appRoutes: Routes = [\n { path: 'home',\n component: HomeComponent,\n canActivate: [NgxPermissionsGuard],\n data: {\n permissions: {\n only: ['ADMIN', 'MODERATOR'],\n except: ['GUEST']\n }\n }\n },\n];\n@NgModule({\n imports: [\n RouterModule.forRoot(appRoutes)\n ],\n exports: [\n RouterModule\n ]\n})\nexport class AppRoutingModule {}When NgxPermissionsGuard service will be called it would expect user to have either ADMIN or MODERATOR permissions to pass him to home route.\nDynamic access\nYou can find states that would require to verify access dynamically - often depending on parameters. \nLet's imagine situation where user want to modify the invoice. We need to check every time if he is allowed to do that on state level. We are gonna use ActivatedRouteSnapshot and RouterStateSnapshot object to check weather he is able to do that.\n\nTo make AOT compatible you should export function. \nBelow is presented code AOT Compatible\n\nAOT compatible \nexport function testPermissions(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\n if (route.params['id'] === 42) {\n return ['MANAGER', \"UTILS\"]\n } else {\n return 'ADMIN'\n }\n}\nconst appRoutes: Routes = [\n { path: 'dynamic/:id',\n component: HomeComponent,\n canActivate: [NgxPermissionsGuard],\n data: {\n permissions: {\n only: testPermissions\n }\n }\n }\n];\n:skull: WarningBelow is presented code not AOT compatible\n\nconst appRoutes: Routes = [\n { path: 'dynamic/:id',\n component: HomeComponent,\n canActivate: [NgxPermissionsGuard],\n data: {\n permissions: {\n only: (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => {\n if (route.params['id'] === 42) {\n return ['MANAGER', \"UTILS\"]\n } else {\n return 'ADMIN'\n }\n }\n }\n }\n }\n];So whenever we try access state with param id = 42 set to true additional check for permission manager and utils will be made. Otherwise only ADMIN will be required.\n\n:fire: ImportantNotice that function require to always return array or string of roles/permissions in order to work properly. \n\nProperty redirectTo\nProperty redirectTo:\n\nwhen used as String defines single redirection rule\nwhen used as Objects defines single/multiple redirection rules\nwhen used as Function defines dynamic redirection rule(s)\n\nSingle redirection rule\nIn case you want to redirect to some specific state when user is not authorized pass to redirectTo path of that route.\nimport { RouterModule, Routes } from '@angular/router';\nimport { NgModule } from '@angular/core';\nimport { HomeComponent } from './home/home.component';\nimport { NgxPermissionsGuard } from 'ngx-permissions';\n\nconst appRoutes: Routes = [\n { path: 'home',\n component: HomeComponent,\n canActivate: [NgxPermissionsGuard],\n data: {\n permissions: {\n only: ['ADMIN', 'MODERATOR'],\n redirectTo: '/another-route'\n }\n }\n },\n];\n@NgModule({\n imports: [\n RouterModule.forRoot(appRoutes)\n ],\n exports: [\n RouterModule\n ]\n})\nexport class AppRoutingModule {}In order to pass additional properties like params use pass redirectTo as object. \nnavigationCommands and navigationExtras are reserved words it corresponds to parameters passed to router.navigate function\nnavigate(commands: any[], extras: NavigationExtras): Promise\n\nconst appRoutes: Routes = [\n { path: 'home',\n component: HomeComponent,\n canActivate: [NgxPermissionsGuard],\n data: {\n permissions: {\n only: ['ADMIN', 'MODERATOR'],\n redirectTo: {\n navigationCommands: ['123'],\n navigationExtras: {\n skipLocationChange: true\n }\n } \n }\n },\n];\n@NgModule({\n imports: [\n RouterModule.forRoot(appRoutes)\n ],\n exports: [\n RouterModule\n ]\n})\n`Multiple redirection rules\nIn some situation you want to redirect user based on denied permission/role to create redirection strategies. In order to do that you have to create redirection Object that contain keys representing rejected permissions or roles and values implementing redirection rules.\nRedirection rules are represented by following values:\n\n\n\nValue type\nReturn\nUsage\n\n\n\n\nString\n[String]\nSimple state transitions\n\n\nObject\n[Object]\nRedirection with custom parameters or options\n\n\nFunction\n[String\\\nObject]\nDynamic properties-based redirection\n\n\n\n\n:bulb: NoteUse default property that will handle fallback redirect for not defined permissions. \n\nThe simplest example of multiple redirection rules are redirection based on pairs role/permission and state. When user is not granted to access the state will be redirected to agendaList if missing canReadAgenda permission or to dashboard when missing canEditAgenda. Property default is reserved for cases when you want handle specific cases leaving default redirection. \n const appRoutes: Routes = [\n { path: 'home',\n component: HomeComponent,\n canActivate: [NgxPermissionsGuard],\n data: {\n permissions: {\n only: ['canReadAgenda','canEditAgenda'],\n redirectTo: {\n canReadAgenda: 'agendaList',\n canEditAgenda: 'dashboard',\n default: 'login'\n }\n }\n }\n },\n ];\n @NgModule({\n imports: [\n RouterModule.forRoot(appRoutes)\n ],\n exports: [\n RouterModule\n ]\n })If you need more control over redirection parameters Object as a value can be used to customise target url navigationCommands and transition navigationExtras.\n\n:bulb: Note navigationCommands and navigationExtras are reserved words it corresponds to parameters passed to router.navigate function\nnavigate(commands: any[], extras: NavigationExtras): Promise\n\n\n const appRoutes: Routes = [\n { path: 'home',\n component: HomeComponent,\n canActivate: [NgxPermissionsGuard],\n data: {\n permissions: {\n only: ['canEditAgenda'],\n redirectTo: \n canEditAgenda: {\n navigationCommands: 'dashboard',\n navigationExtras: {\n skipLocationChange: true\n }\n\n },\n default: 'login'\n }\n }\n }\n },\n ];\n @NgModule({\n imports: [\n RouterModule.forRoot(appRoutes)\n ],\n exports: [\n RouterModule\n ]\n }) To present usage redirectTo as Object with values as Function in a state definition agenda presented below redirection rules are interpreted as:\n\nwhen user does not have canReadAgenda invoked function returns string representing the state name to which unauthorized user will be redirected\nwhen user does not have canEditAgenda invoked function returns object with custom options and params that will be passed along to transited dashboard url\n\n\n const appRoutes: Routes = [\n { path: 'home',\n component: HomeComponent,\n canActivate: [NgxPermissionsGuard],\n data: {\n permissions: {\n only: ['canReadAgenda','canEditAgenda'],\n redirectTo: {\n canReadAgenda: (rejectedPermissionName: string, activateRouteSnapshot: ActivatedRouteSnapshot, routeStateSnapshot: RouterStateSnapshot) => {\n return 'dashboard';\n },\n canEditAgenda: (rejectedPermissionName: string, activateRouteSnapshot: ActivatedRouteSnapshot, routeStateSnapshot: RouterStateSnapshot) => {\n return {\n navigationCommands: ['/dashboard'],\n navigationExtras: {\n skipLocationChange: true\n }\n }\n },\n default: 'login'\n }\n }\n }\n },\n ];\n @NgModule({\n imports: [\n RouterModule.forRoot(appRoutes)\n ],\n exports: [\n RouterModule\n ]\n })\n:fire: ImportantAbove code is not AOT compatible to make it AOT compatible extract it to function\nnavigationCommands and navigationExtras reserved words. Matching parameter to router.navigate function\n\nexport function canReadAgenda(rejectedPermissionName: string, activateRouteSnapshot: ActivatedRouteSnapshot, routeStateSnapshot: RouterStateSnapshot) => { \n return 'dashboard';\n},\n\nredirectTo: {\n canReadAgenda: canReadAgenda\n\n}Dynamic redirection rules\nSimilarly to examples showing defining dynamic access to state redirection can also be defined based on any parameters of ActivatedRouteSnapshot and RouterStateSnapshot;\n\n:bulb: NoteRemember to always return from function state name or object.\n\nconst appRoutes: Routes = [\n { path: 'home/:isEditable',\n component: HomeComponent,\n canActivate: [NgxPermissionsGuard],\n data: {\n permissions: {\n only: ['canReadAgenda','canEditAgenda'],\n redirectTo: (rejectedPermissionName: string, activateRouteSnapshot: ActivatedRouteSnapshot, routerStateSnapshot: RouterStateSnapshot) => {\n if(activateRouteSnapshot.params['id'] === 42){\n return 'login';\n } else {\n return 'dashboard'\n }\n }\n }\n },\n ];\n @NgModule({\n imports: [\n RouterModule.forRoot(appRoutes)\n ],\n exports: [\n RouterModule\n ]\n })\n:fire: ImportantAbove code is not AOT compatible to make it AOT compatible extract it to function\n\nexport function redirectToFunc(rejectedPermissionName: string, activateRouteSnapshot: ActivatedRouteSnapshot, routerStateSnapshot: RouterStateSnapshot) => {\n if(activateRouteSnapshot.params['id'] === 42){\n return 'login';\n } else {\n return 'dashboard'\n }\n }\n\nredirectTo: redirectToFunc\nImplemented Guards\nCan Activate Guard\nNgxPermissionsGuard implements CanActivate interface for examples you can see above\nCan Load Guard\nNgxPermissionsGuard implements CanLoad Interface. Functionality is the same as with canActivate \nconst appRoutes: Routes = [\n\n {\n path: 'lazy',\n data: {\n permissions: {\n except: 'ADDDMIN',\n }\n },\n canLoad: [NgxPermissionsGuard],\n loadChildren: 'app/lazy-module/lazy-module.module#LazyModule'\n },\n\n\n];\n@NgModule({\n imports: [\n RouterModule.forRoot(appRoutes)\n ],\n exports: [\n RouterModule\n ],\n providers: [\n // CanDeactivateGuard\n ]\n})\nexport class AppRoutingModule {}\n\n\n\n:fire: Warning \n\nThe only difference if you use as a function the parameter is only 1 and its type of Route\n\n\n\n{\n path: 'lazy',\n data: {\n permissions: {\n only: (route: Route) => {\n //logic here\n return ['MANAGER', \"UTILS\"]\n }\n }\n },\n canLoad: [NgxPermissionsGuard],\n loadChildren: 'app/lazy-module/lazy-module.module#LazyModule'\n },Can Activate Child Guard\nNgxPermissionsGuard implements CanLoad Interface. Functionality is the same as with canActivate \n\n:fire: Warning \n\nNeed to remember that rules and data you should specify on Child Components not on parent component\n\n\nconst appRoutes: Routes = [\n { path: '',\n component: IsolateComponent,\n canActivateChild: [NgxPermissionsGuard],\n children: [\n {\n path: 'except-should',\n component: AnotherComponent,\n data: {\n permissions: {\n except: 'ADMIN'\n }\n }\n },\n {\n path: 'only-should',\n component: ComeComponent,\n data: {\n permissions: {\n only: 'GUEST'\n }\n }\n },\n ]\n },\n];\nCommon use cases\nTwo guards when first make request for authorisation and gets permissions second checks for permissions\nThis method only works with angular 4.3.2 or higher see https://github.com/angular/angular/issues/15670\nThere are a lot of times you have 2 guard one for authorisation when it makes request for permissions and second is permissions guard\nand you want them to work in chain. To make them work in chain You should use them next\n\nlet routes = [\n { path: '', \n canActivate: [AuthGuard],\n children: [\n {path: 'component', \n component: ComponentName, \n canActivate: [NgxPermissionsGuard],\n data: {\n permissions: {\n only: ['ADMIN', 'MODERATOR'],\n redirectTo: 'another-route'\n }\n }}\n ]\n }\n]\nNote: Make sure the permission request in chained in auth guard\n `js \n canActivate() {\n return authLogin().then((obj) => {\n // or load here if you dont need second request\n // this.permissions.service.loadPermissions(obj.permissions)\n\n return this.authPermissions.getPermissions('url');\n }).then((permissions) => {\n this.permissions.service.loadPermissions(permissions)\n )\n}`\n| --- |\nDevelopment\nThis project was generated with Angular CLI version 6.0.0.\nDemo App\nRun ng serve for a dev server. Navigate to http://localhost:4200/. The app will automatically reload if you change any of the source files.\nBuild\nRun ng build to build the project. The build artifacts will be stored in the dist/ directory. Use the --prod flag for a production build.\nRunning unit tests\nRun ng test to execute the unit tests via Karma.\nRunning end-to-end tests\nRun ng e2e to execute the end-to-end tests via Protractor.\nThank You\nThank You for using the library and support. HAVE A GREAT DAY!\nFor google\nangular 2 permissions, angular 4 permissions, angular permissions, angular 5 permissions ng2 permissions ng permissions\nng-permissions ng2-permissions angular2 permissions angular4 permissions angular 5 permissions\nLicense\nMIT © Oleksandr Khymenko\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"/overview.html":{"url":"/overview.html","title":"overview - overview","body":"\n \nOverview\n\n \n \n\n\n\n\n\ndependencies\n\nLegend\n\n  Declarations\n\n  Module\n\n  Bootstrap\n\n  Providers\n\n  Exports\n\ncluster_AppModule\n\n\n\ncluster_AppModule_imports\n\n\n\ncluster_AppModule_bootstrap\n\n\n\ncluster_LazyIsolateModule\n\n\n\ncluster_LazyIsolateModule_imports\n\n\n\ncluster_LazyIsolateRoutingModule\n\n\n\ncluster_LazyIsolateRoutingModule_imports\n\n\n\ncluster_LazyIsolateRoutingModule_exports\n\n\n\ncluster_LazyModule\n\n\n\ncluster_LazyModule_imports\n\n\n\ncluster_LazyRoleIsolateModule\n\n\n\ncluster_LazyRoleIsolateModule_imports\n\n\n\ncluster_LazyRolesAsyncIsolateModule\n\n\n\ncluster_LazyRolesAsyncIsolateModule_imports\n\n\n\ncluster_NgxPermissionsAllowStubModule\n\n\n\ncluster_NgxPermissionsAllowStubModule_exports\n\n\n\ncluster_NgxPermissionsModule\n\n\n\ncluster_NgxPermissionsModule_exports\n\n\n\ncluster_NgxPermissionsRestrictStubModule\n\n\n\ncluster_NgxPermissionsRestrictStubModule_exports\n\n\n\n\nBrowserModule\n\nBrowserModule\n\n\n\nAppModule\n\nAppModule\n\nAppModule -->\n\nBrowserModule->AppModule\n\n\n\n\n\nAppRoutingModule\n\nAppRoutingModule\n\nAppModule -->\n\nAppRoutingModule->AppModule\n\n\n\n\n\nNgxPermissionsModule.forRoot()\n\nNgxPermissionsModule.forRoot()\n\nAppModule -->\n\nNgxPermissionsModule.forRoot()->AppModule\n\n\n\n\n\nAppComponent \n\nAppComponent \n\nAppComponent -->\n\nAppModule->AppComponent \n\n\n\n\n\nCommonModule\n\nCommonModule\n\n\n\nLazyIsolateModule\n\nLazyIsolateModule\n\nLazyIsolateModule -->\n\nCommonModule->LazyIsolateModule\n\n\n\n\n\nLazyModule\n\nLazyModule\n\nLazyModule -->\n\nCommonModule->LazyModule\n\n\n\n\n\nLazyRoleIsolateModule\n\nLazyRoleIsolateModule\n\nLazyRoleIsolateModule -->\n\nCommonModule->LazyRoleIsolateModule\n\n\n\n\n\nLazyRolesAsyncIsolateModule\n\nLazyRolesAsyncIsolateModule\n\nLazyRolesAsyncIsolateModule -->\n\nCommonModule->LazyRolesAsyncIsolateModule\n\n\n\n\n\nLazyIsolateRoutingModule\n\nLazyIsolateRoutingModule\n\nLazyIsolateModule -->\n\nLazyIsolateRoutingModule->LazyIsolateModule\n\n\n\n\n\nRouterModule \n\nRouterModule \n\nRouterModule -->\n\nLazyIsolateRoutingModule->RouterModule \n\n\n\n\n\nNgxPermissionsModule.forChild(args)\n\nNgxPermissionsModule.forChild(args)\n\nLazyIsolateModule -->\n\nNgxPermissionsModule.forChild(args)->LazyIsolateModule\n\n\n\nLazyRoleIsolateModule -->\n\nNgxPermissionsModule.forChild(args)->LazyRoleIsolateModule\n\n\n\nLazyRolesAsyncIsolateModule -->\n\nNgxPermissionsModule.forChild(args)->LazyRolesAsyncIsolateModule\n\n\n\n\n\nRouterModule.forChild(args)\n\nRouterModule.forChild(args)\n\nLazyIsolateRoutingModule -->\n\nRouterModule.forChild(args)->LazyIsolateRoutingModule\n\n\n\n\n\nLazyRoutingModule\n\nLazyRoutingModule\n\nLazyModule -->\n\nLazyRoutingModule->LazyModule\n\n\n\n\n\nNgxPermissionsModule.forChild()\n\nNgxPermissionsModule.forChild()\n\nLazyModule -->\n\nNgxPermissionsModule.forChild()->LazyModule\n\n\n\n\n\nLazyIsolateRolesRoutingModule\n\nLazyIsolateRolesRoutingModule\n\nLazyRoleIsolateModule -->\n\nLazyIsolateRolesRoutingModule->LazyRoleIsolateModule\n\n\n\n\n\nLazyIsolateAsyncRolesRoutingModule\n\nLazyIsolateAsyncRolesRoutingModule\n\nLazyRolesAsyncIsolateModule -->\n\nLazyIsolateAsyncRolesRoutingModule->LazyRolesAsyncIsolateModule\n\n\n\n\n\nNgxPermissionsAllowStubDirective \n\nNgxPermissionsAllowStubDirective \n\n\n\nNgxPermissionsAllowStubModule\n\nNgxPermissionsAllowStubModule\n\nNgxPermissionsAllowStubDirective -->\n\nNgxPermissionsAllowStubModule->NgxPermissionsAllowStubDirective \n\n\n\n\n\nNgxPermissionsDirective \n\nNgxPermissionsDirective \n\n\n\nNgxPermissionsModule\n\nNgxPermissionsModule\n\nNgxPermissionsDirective -->\n\nNgxPermissionsModule->NgxPermissionsDirective \n\n\n\n\n\nNgxPermissionsRestrictStubDirective \n\nNgxPermissionsRestrictStubDirective \n\n\n\nNgxPermissionsRestrictStubModule\n\nNgxPermissionsRestrictStubModule\n\nNgxPermissionsRestrictStubDirective -->\n\nNgxPermissionsRestrictStubModule->NgxPermissionsRestrictStubDirective \n\n\n\n\n\n\n \n \n Zoom in\n Reset\n Zoom out\n \n\n\n \n \n \n \n \n \n 9 modules\n \n \n \n \n \n \n \n \n 7 components\n \n \n \n \n \n \n \n 3 directives\n \n \n \n \n \n \n \n 7 injectables\n \n \n \n \n \n \n \n 4 classes\n \n \n \n \n \n \n \n 3 interfaces\n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"/modules.html":{"url":"/modules.html","title":"modules - modules","body":"\n \n\nModules\n\n \n \n \n \n AppModule\n \n \n \n \n Your browser does not support SVG\n \n \n \n Browse\n \n \n \n \n \n \n \n LazyIsolateModule\n \n \n \n \n Your browser does not support SVG\n \n \n \n Browse\n \n \n \n \n \n \n \n LazyIsolateRoutingModule\n \n \n \n \n Your browser does not support SVG\n \n \n \n Browse\n \n \n \n \n \n \n \n LazyModule\n \n \n \n \n Your browser does not support SVG\n \n \n \n Browse\n \n \n \n \n \n \n \n LazyRoleIsolateModule\n \n \n \n \n Your browser does not support SVG\n \n \n \n Browse\n \n \n \n \n \n \n \n LazyRolesAsyncIsolateModule\n \n \n \n \n Your browser does not support SVG\n \n \n \n Browse\n \n \n \n \n \n \n \n NgxPermissionsAllowStubModule\n \n \n \n \n Your browser does not support SVG\n \n \n \n Browse\n \n \n \n \n \n \n \n NgxPermissionsModule\n \n \n \n \n Your browser does not support SVG\n \n \n \n Browse\n \n \n \n \n \n \n \n NgxPermissionsRestrictStubModule\n \n \n \n \n Your browser does not support SVG\n \n \n \n Browse\n \n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"/modules/AppModule.html":{"url":"/modules/AppModule.html","title":"module - AppModule","body":"\n \n\n\n Modules\n AppModule\n\n\n\n \n \n\n\n\n\n\ndependencies\n\nLegend\n\n  Declarations\n\n  Module\n\n  Bootstrap\n\n  Providers\n\n  Exports\n\ncluster_AppModule\n\n\n\ncluster_AppModule_declarations\n\n\n\ncluster_AppModule_imports\n\n\n\ncluster_AppModule_bootstrap\n\n\n\n\nAppComponent\n\nAppComponent\n\n\n\nAppModule\n\nAppModule\n\nAppModule -->\n\nAppComponent->AppModule\n\n\n\n\n\nHomeComponent\n\nHomeComponent\n\nAppModule -->\n\nHomeComponent->AppModule\n\n\n\n\n\nInitialLoadComponent\n\nInitialLoadComponent\n\nAppModule -->\n\nInitialLoadComponent->AppModule\n\n\n\n\n\nAppComponent \n\nAppComponent \n\nAppComponent -->\n\nAppModule->AppComponent \n\n\n\n\n\nBrowserModule\n\nBrowserModule\n\nAppModule -->\n\nBrowserModule->AppModule\n\n\n\n\n\nAppRoutingModule\n\nAppRoutingModule\n\nAppModule -->\n\nAppRoutingModule->AppModule\n\n\n\n\n\nNgxPermissionsModule.forRoot()\n\nNgxPermissionsModule.forRoot()\n\nAppModule -->\n\nNgxPermissionsModule.forRoot()->AppModule\n\n\n\n\n\n\n \n \n Zoom in\n Reset\n Zoom out\n \n\n\n\n\n\n \n Infos\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/app/app.module.ts\n \n\n\n \n \n \n Declarations\n \n \n AppComponent\n \n \n HomeComponent\n \n \n InitialLoadComponent\n \n \n \n \n Bootstrap\n \n \n AppComponent\n \n \n \n \n \n \n \n import { BrowserModule } from '@angular/platform-browser';\nimport { NgModule } from '@angular/core';\n\nimport { AppComponent } from './app.component';\nimport { NgxPermissionsModule } from 'ngx-permissions';\nimport { AppRoutingModule } from './app-routing.module';\nimport { HomeComponent } from './home/home.component';\nimport { InitialLoadComponent } from './initial-load/initial-load.component';\n@NgModule({\n declarations: [\n AppComponent,\n HomeComponent,\n InitialLoadComponent\n ],\n imports: [\n BrowserModule,\n AppRoutingModule,\n NgxPermissionsModule.forRoot()\n ],\n providers: [],\n bootstrap: [AppComponent]\n})\nexport class AppModule { }\n\n \n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"/modules/LazyIsolateModule.html":{"url":"/modules/LazyIsolateModule.html","title":"module - LazyIsolateModule","body":"\n \n\n\n Modules\n LazyIsolateModule\n\n\n\n \n \n\n\n\n\n\ndependencies\n\nLegend\n\n  Declarations\n\n  Module\n\n  Bootstrap\n\n  Providers\n\n  Exports\n\ncluster_LazyIsolateModule\n\n\n\ncluster_LazyIsolateModule_declarations\n\n\n\ncluster_LazyIsolateModule_imports\n\n\n\n\nIsolateComponent\n\nIsolateComponent\n\n\n\nLazyIsolateModule\n\nLazyIsolateModule\n\nLazyIsolateModule -->\n\nIsolateComponent->LazyIsolateModule\n\n\n\n\n\nCommonModule\n\nCommonModule\n\nLazyIsolateModule -->\n\nCommonModule->LazyIsolateModule\n\n\n\n\n\nLazyIsolateRoutingModule\n\nLazyIsolateRoutingModule\n\nLazyIsolateModule -->\n\nLazyIsolateRoutingModule->LazyIsolateModule\n\n\n\n\n\nNgxPermissionsModule.forChild(args)\n\nNgxPermissionsModule.forChild(args)\n\nLazyIsolateModule -->\n\nNgxPermissionsModule.forChild(args)->LazyIsolateModule\n\n\n\n\n\n\n \n \n Zoom in\n Reset\n Zoom out\n \n\n\n\n\n\n \n Infos\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/app/lazy-isolate/lazy-isolate.module.ts\n \n\n\n \n \n \n Declarations\n \n \n IsolateComponent\n \n \n \n \n Imports\n \n \n LazyIsolateRoutingModule\n \n \n \n \n \n \n \n import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IsolateComponent } from './isolate/isolate.component';\nimport { NgxPermissionsModule } from 'ngx-permissions';\nimport { LazyIsolateRoutingModule } from './lazy-isolate-routing.module';\n\n@NgModule({\n imports: [\n CommonModule,\n LazyIsolateRoutingModule,\n NgxPermissionsModule.forChild({permissionsIsolate: true, rolesIsolate: true})\n ],\n declarations: [IsolateComponent]\n})\nexport class LazyIsolateModule { }\n\n \n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"/modules/LazyIsolateRoutingModule.html":{"url":"/modules/LazyIsolateRoutingModule.html","title":"module - LazyIsolateRoutingModule","body":"\n \n\n\n Modules\n LazyIsolateRoutingModule\n\n\n\n \n \n\n\n\n\n\ndependencies\n\nLegend\n\n  Declarations\n\n  Module\n\n  Bootstrap\n\n  Providers\n\n  Exports\n\ncluster_LazyIsolateRoutingModule\n\n\n\ncluster_LazyIsolateRoutingModule_imports\n\n\n\ncluster_LazyIsolateRoutingModule_exports\n\n\n\n\nRouterModule.forChild(args)\n\nRouterModule.forChild(args)\n\n\n\nLazyIsolateRoutingModule\n\nLazyIsolateRoutingModule\n\nLazyIsolateRoutingModule -->\n\nRouterModule.forChild(args)->LazyIsolateRoutingModule\n\n\n\n\n\nRouterModule \n\nRouterModule \n\nRouterModule -->\n\nLazyIsolateRoutingModule->RouterModule \n\n\n\n\n\n\n \n \n Zoom in\n Reset\n Zoom out\n \n\n\n\n\n\n \n Infos\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/app/lazy-isolate/lazy-isolate-routing.module.ts\n \n\n\n \n \n \n \n \n \n import { RouterModule, Routes } from '@angular/router';\nimport { NgModule } from '@angular/core';\nimport { IsolateComponent } from './isolate/isolate.component';\nimport { NgxPermissionsGuard } from 'ngx-permissions';\n\nconst appRoutes: Routes = [\n { path: '',\n component: IsolateComponent,\n canActivateChild: [NgxPermissionsGuard],\n children: [\n {\n path: 'except-should',\n component: IsolateComponent,\n data: {\n permissions: {\n except: 'ADDDMIN'\n }\n }\n },\n {\n path: 'only-should',\n component: IsolateComponent,\n data: {\n permissions: {\n only: 'GUEST'\n }\n }\n },\n {\n path: 'except-should-not',\n component: IsolateComponent,\n data: {\n permissions: {\n except: 'GUEST'\n }\n }\n },\n {\n path: 'only-should-not',\n component: IsolateComponent,\n data: {\n permissions: {\n only: 'ADMIN'\n }\n }\n }\n ]\n },\n\n];\n@NgModule({\n imports: [\n RouterModule.forChild(appRoutes),\n ],\n exports: [\n RouterModule\n ],\n providers: [\n // CanDeactivateGuard\n ]\n})\nexport class LazyIsolateRoutingModule {}\n\n \n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"/modules/LazyModule.html":{"url":"/modules/LazyModule.html","title":"module - LazyModule","body":"\n \n\n\n Modules\n LazyModule\n\n\n\n \n \n\n\n\n\n\ndependencies\n\nLegend\n\n  Declarations\n\n  Module\n\n  Bootstrap\n\n  Providers\n\n  Exports\n\ncluster_LazyModule\n\n\n\ncluster_LazyModule_declarations\n\n\n\ncluster_LazyModule_imports\n\n\n\n\nLazyComponentComponent\n\nLazyComponentComponent\n\n\n\nLazyModule\n\nLazyModule\n\nLazyModule -->\n\nLazyComponentComponent->LazyModule\n\n\n\n\n\nCommonModule\n\nCommonModule\n\nLazyModule -->\n\nCommonModule->LazyModule\n\n\n\n\n\nLazyRoutingModule\n\nLazyRoutingModule\n\nLazyModule -->\n\nLazyRoutingModule->LazyModule\n\n\n\n\n\nNgxPermissionsModule.forChild()\n\nNgxPermissionsModule.forChild()\n\nLazyModule -->\n\nNgxPermissionsModule.forChild()->LazyModule\n\n\n\n\n\n\n \n \n Zoom in\n Reset\n Zoom out\n \n\n\n\n\n\n \n Infos\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/app/lazy-module/lazy-module.module.ts\n \n\n\n \n \n \n Declarations\n \n \n LazyComponentComponent\n \n \n \n \n \n \n \n import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { LazyRoutingModule } from './lazy-routing.module';\nimport { LazyComponentComponent } from './lazy-component/lazy-component.component';\nimport { NgxPermissionsModule } from 'ngx-permissions';\n\n@NgModule({\n imports: [\n CommonModule,\n LazyRoutingModule,\n NgxPermissionsModule.forChild()\n\n ],\n declarations: [LazyComponentComponent]\n})\nexport class LazyModule { }\n\n \n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"/modules/LazyRoleIsolateModule.html":{"url":"/modules/LazyRoleIsolateModule.html","title":"module - LazyRoleIsolateModule","body":"\n \n\n\n Modules\n LazyRoleIsolateModule\n\n\n\n \n \n\n\n\n\n\ndependencies\n\nLegend\n\n  Declarations\n\n  Module\n\n  Bootstrap\n\n  Providers\n\n  Exports\n\ncluster_LazyRoleIsolateModule\n\n\n\ncluster_LazyRoleIsolateModule_declarations\n\n\n\ncluster_LazyRoleIsolateModule_imports\n\n\n\n\nLazyRoleIsolateTestComponent\n\nLazyRoleIsolateTestComponent\n\n\n\nLazyRoleIsolateModule\n\nLazyRoleIsolateModule\n\nLazyRoleIsolateModule -->\n\nLazyRoleIsolateTestComponent->LazyRoleIsolateModule\n\n\n\n\n\nCommonModule\n\nCommonModule\n\nLazyRoleIsolateModule -->\n\nCommonModule->LazyRoleIsolateModule\n\n\n\n\n\nLazyIsolateRolesRoutingModule\n\nLazyIsolateRolesRoutingModule\n\nLazyRoleIsolateModule -->\n\nLazyIsolateRolesRoutingModule->LazyRoleIsolateModule\n\n\n\n\n\nNgxPermissionsModule.forChild(args)\n\nNgxPermissionsModule.forChild(args)\n\nLazyRoleIsolateModule -->\n\nNgxPermissionsModule.forChild(args)->LazyRoleIsolateModule\n\n\n\n\n\n\n \n \n Zoom in\n Reset\n Zoom out\n \n\n\n\n\n\n \n Infos\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/app/lazy-role-isolate/lazy-role-isolate.module.ts\n \n\n\n \n \n \n Declarations\n \n \n LazyRoleIsolateTestComponent\n \n \n \n \n \n \n \n import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NgxPermissionsModule } from 'ngx-permissions';\n\nimport { LazyIsolateRolesRoutingModule } from './lazy-isolate-role-routing.module';\nimport { LazyRoleIsolateTestComponent } from './lazy-role-isolate-test/lazy-role-isolate-test.component';\n\n@NgModule({\n imports: [\n CommonModule,\n LazyIsolateRolesRoutingModule,\n NgxPermissionsModule.forChild({\n permissionsIsolate: true,\n rolesIsolate: true,\n configurationIsolate: true\n })\n ],\n declarations: [\n LazyRoleIsolateTestComponent\n ]\n})\nexport class LazyRoleIsolateModule { }\n\n \n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"/modules/LazyRolesAsyncIsolateModule.html":{"url":"/modules/LazyRolesAsyncIsolateModule.html","title":"module - LazyRolesAsyncIsolateModule","body":"\n \n\n\n Modules\n LazyRolesAsyncIsolateModule\n\n\n\n \n \n\n\n\n\n\ndependencies\n\nLegend\n\n  Declarations\n\n  Module\n\n  Bootstrap\n\n  Providers\n\n  Exports\n\ncluster_LazyRolesAsyncIsolateModule\n\n\n\ncluster_LazyRolesAsyncIsolateModule_declarations\n\n\n\ncluster_LazyRolesAsyncIsolateModule_imports\n\n\n\ncluster_LazyRolesAsyncIsolateModule_providers\n\n\n\n\nLazyRolesAsyncTestComponent\n\nLazyRolesAsyncTestComponent\n\n\n\nLazyRolesAsyncIsolateModule\n\nLazyRolesAsyncIsolateModule\n\nLazyRolesAsyncIsolateModule -->\n\nLazyRolesAsyncTestComponent->LazyRolesAsyncIsolateModule\n\n\n\n\n\nCommonModule\n\nCommonModule\n\nLazyRolesAsyncIsolateModule -->\n\nCommonModule->LazyRolesAsyncIsolateModule\n\n\n\n\n\nNgxPermissionsModule.forChild(args)\n\nNgxPermissionsModule.forChild(args)\n\nLazyRolesAsyncIsolateModule -->\n\nNgxPermissionsModule.forChild(args)->LazyRolesAsyncIsolateModule\n\n\n\n\n\nLazyIsolateAsyncRolesRoutingModule\n\nLazyIsolateAsyncRolesRoutingModule\n\nLazyRolesAsyncIsolateModule -->\n\nLazyIsolateAsyncRolesRoutingModule->LazyRolesAsyncIsolateModule\n\n\n\n\n\nAsyncTestService\n\nAsyncTestService\n\nLazyRolesAsyncIsolateModule -->\n\nAsyncTestService->LazyRolesAsyncIsolateModule\n\n\n\n\n\n\n \n \n Zoom in\n Reset\n Zoom out\n \n\n\n\n\n\n \n Infos\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/app/lazy-roles-async-isolate/lazy-roles-async-isolate.module.ts\n \n\n\n \n \n \n Declarations\n \n \n LazyRolesAsyncTestComponent\n \n \n \n \n Providers\n \n \n AsyncTestService\n \n \n \n \n \n \n \n import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { LazyRolesAsyncTestComponent } from './lazy-roles-async-test/lazy-roles-async-test.component';\nimport { NgxPermissionsModule } from 'ngx-permissions';\nimport { AsyncTestService } from './async-test.service';\nimport { LazyIsolateAsyncRolesRoutingModule } from './lazy-isolate-role-async-routing.module';\n\n@NgModule({\n imports: [\n CommonModule,\n NgxPermissionsModule.forChild({\n permissionsIsolate: true,\n rolesIsolate: true\n }),\n LazyIsolateAsyncRolesRoutingModule\n ],\n providers: [\n AsyncTestService\n ],\n declarations: [LazyRolesAsyncTestComponent]\n})\nexport class LazyRolesAsyncIsolateModule { }\n\n \n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"/modules/NgxPermissionsAllowStubModule.html":{"url":"/modules/NgxPermissionsAllowStubModule.html","title":"module - NgxPermissionsAllowStubModule","body":"\n \n\n\n Modules\n NgxPermissionsAllowStubModule\n\n\n\n \n \n\n\n\n\n\ndependencies\n\nLegend\n\n  Declarations\n\n  Module\n\n  Bootstrap\n\n  Providers\n\n  Exports\n\ncluster_NgxPermissionsAllowStubModule\n\n\n\ncluster_NgxPermissionsAllowStubModule_declarations\n\n\n\ncluster_NgxPermissionsAllowStubModule_exports\n\n\n\n\nNgxPermissionsAllowStubDirective\n\nNgxPermissionsAllowStubDirective\n\n\n\nNgxPermissionsAllowStubModule\n\nNgxPermissionsAllowStubModule\n\nNgxPermissionsAllowStubModule -->\n\nNgxPermissionsAllowStubDirective->NgxPermissionsAllowStubModule\n\n\n\n\n\nNgxPermissionsAllowStubDirective \n\nNgxPermissionsAllowStubDirective \n\nNgxPermissionsAllowStubDirective -->\n\nNgxPermissionsAllowStubModule->NgxPermissionsAllowStubDirective \n\n\n\n\n\n\n \n \n Zoom in\n Reset\n Zoom out\n \n\n\n\n\n\n \n Infos\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/ngx-permissions/src/lib/index.ts\n \n\n\n \n \n \n Declarations\n \n \n NgxPermissionsAllowStubDirective\n \n \n \n \n Exports\n \n \n NgxPermissionsAllowStubDirective\n \n \n \n \n \n \n \n import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { NgxPermissionsDirective } from './directive/permissions.directive';\nimport { NgxPermissionsGuard } from './router/permissions-guard.service';\nimport { NgxPermissionsConfigurationService, USE_CONFIGURATION_STORE } from './service/configuration.service';\nimport { NgxPermissionsService, USE_PERMISSIONS_STORE } from './service/permissions.service';\nimport { NgxRolesService, USE_ROLES_STORE } from './service/roles.service';\nimport { NgxPermissionsConfigurationStore } from './store/configuration.store';\nimport { NgxPermissionsStore } from './store/permissions.store';\nimport { NgxRolesStore } from './store/roles.store';\nimport { NgxPermissionsAllowStubDirective } from './testing/permissions-allow.directive.stub';\nimport { NgxPermissionsRestrictStubDirective } from './testing/permissions-restrict.directive.stub';\n\nexport * from './store/roles.store';\nexport * from './store/permissions.store';\nexport * from './store/configuration.store';\n\nexport * from './directive/permissions.directive';\n\nexport * from './service/permissions.service';\nexport * from './service/roles.service';\nexport * from './service/configuration.service';\n\nexport * from './router/permissions-guard.service';\n\nexport * from './model/permissions-router-data.model';\nexport * from './model/role.model';\n\nexport * from './testing/permissions-allow.directive.stub';\nexport * from './testing/permissions-restrict.directive.stub';\n\nexport * from './enums/predefined-strategies.enum';\n\nexport interface NgxPermissionsModuleConfig {\n // isolate the service instance, only works for lazy loaded modules or components with the \"providers\" property\n rolesIsolate?: boolean;\n permissionsIsolate?: boolean;\n configurationIsolate?: boolean;\n}\n\n\n@NgModule({\n imports: [],\n declarations: [\n NgxPermissionsDirective\n ],\n exports: [\n NgxPermissionsDirective\n ]\n})\nexport class NgxPermissionsModule {\n static forRoot(config: NgxPermissionsModuleConfig = {}): ModuleWithProviders {\n return {\n ngModule: NgxPermissionsModule,\n providers: [\n NgxPermissionsStore,\n NgxRolesStore,\n NgxPermissionsConfigurationStore,\n NgxPermissionsService,\n NgxPermissionsGuard,\n NgxRolesService,\n NgxPermissionsConfigurationService,\n { provide: USE_PERMISSIONS_STORE, useValue: config.permissionsIsolate },\n { provide: USE_ROLES_STORE, useValue: config.rolesIsolate },\n { provide: USE_CONFIGURATION_STORE, useValue: config.configurationIsolate },\n ]\n };\n }\n\n static forChild(config: NgxPermissionsModuleConfig = {}): ModuleWithProviders {\n return {\n ngModule: NgxPermissionsModule,\n providers: [\n { provide: USE_PERMISSIONS_STORE, useValue: config.permissionsIsolate },\n { provide: USE_ROLES_STORE, useValue: config.rolesIsolate },\n { provide: USE_CONFIGURATION_STORE, useValue: config.configurationIsolate },\n NgxPermissionsConfigurationService,\n NgxPermissionsService,\n NgxRolesService,\n NgxPermissionsGuard\n ]\n };\n }\n}\n\n@NgModule({\n imports: [],\n declarations: [\n NgxPermissionsAllowStubDirective\n ],\n exports: [\n NgxPermissionsAllowStubDirective\n ]\n})\nexport class NgxPermissionsAllowStubModule {\n}\n\n\n@NgModule({\n imports: [],\n declarations: [\n NgxPermissionsRestrictStubDirective\n ],\n exports: [\n NgxPermissionsRestrictStubDirective\n ]\n})\nexport class NgxPermissionsRestrictStubModule {\n}\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"/modules/NgxPermissionsModule.html":{"url":"/modules/NgxPermissionsModule.html","title":"module - NgxPermissionsModule","body":"\n \n\n\n Modules\n NgxPermissionsModule\n\n\n\n \n \n\n\n\n\n\ndependencies\n\nLegend\n\n  Declarations\n\n  Module\n\n  Bootstrap\n\n  Providers\n\n  Exports\n\ncluster_NgxPermissionsModule\n\n\n\ncluster_NgxPermissionsModule_declarations\n\n\n\ncluster_NgxPermissionsModule_exports\n\n\n\n\nNgxPermissionsDirective\n\nNgxPermissionsDirective\n\n\n\nNgxPermissionsModule\n\nNgxPermissionsModule\n\nNgxPermissionsModule -->\n\nNgxPermissionsDirective->NgxPermissionsModule\n\n\n\n\n\nNgxPermissionsDirective \n\nNgxPermissionsDirective \n\nNgxPermissionsDirective -->\n\nNgxPermissionsModule->NgxPermissionsDirective \n\n\n\n\n\n\n \n \n Zoom in\n Reset\n Zoom out\n \n\n\n\n\n\n \n Infos\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/ngx-permissions/src/lib/index.ts\n \n\n\n \n \n \n Declarations\n \n \n NgxPermissionsDirective\n \n \n \n \n Exports\n \n \n NgxPermissionsDirective\n \n \n \n \n \n \n \n import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { NgxPermissionsDirective } from './directive/permissions.directive';\nimport { NgxPermissionsGuard } from './router/permissions-guard.service';\nimport { NgxPermissionsConfigurationService, USE_CONFIGURATION_STORE } from './service/configuration.service';\nimport { NgxPermissionsService, USE_PERMISSIONS_STORE } from './service/permissions.service';\nimport { NgxRolesService, USE_ROLES_STORE } from './service/roles.service';\nimport { NgxPermissionsConfigurationStore } from './store/configuration.store';\nimport { NgxPermissionsStore } from './store/permissions.store';\nimport { NgxRolesStore } from './store/roles.store';\nimport { NgxPermissionsAllowStubDirective } from './testing/permissions-allow.directive.stub';\nimport { NgxPermissionsRestrictStubDirective } from './testing/permissions-restrict.directive.stub';\n\nexport * from './store/roles.store';\nexport * from './store/permissions.store';\nexport * from './store/configuration.store';\n\nexport * from './directive/permissions.directive';\n\nexport * from './service/permissions.service';\nexport * from './service/roles.service';\nexport * from './service/configuration.service';\n\nexport * from './router/permissions-guard.service';\n\nexport * from './model/permissions-router-data.model';\nexport * from './model/role.model';\n\nexport * from './testing/permissions-allow.directive.stub';\nexport * from './testing/permissions-restrict.directive.stub';\n\nexport * from './enums/predefined-strategies.enum';\n\nexport interface NgxPermissionsModuleConfig {\n // isolate the service instance, only works for lazy loaded modules or components with the \"providers\" property\n rolesIsolate?: boolean;\n permissionsIsolate?: boolean;\n configurationIsolate?: boolean;\n}\n\n\n@NgModule({\n imports: [],\n declarations: [\n NgxPermissionsDirective\n ],\n exports: [\n NgxPermissionsDirective\n ]\n})\nexport class NgxPermissionsModule {\n static forRoot(config: NgxPermissionsModuleConfig = {}): ModuleWithProviders {\n return {\n ngModule: NgxPermissionsModule,\n providers: [\n NgxPermissionsStore,\n NgxRolesStore,\n NgxPermissionsConfigurationStore,\n NgxPermissionsService,\n NgxPermissionsGuard,\n NgxRolesService,\n NgxPermissionsConfigurationService,\n { provide: USE_PERMISSIONS_STORE, useValue: config.permissionsIsolate },\n { provide: USE_ROLES_STORE, useValue: config.rolesIsolate },\n { provide: USE_CONFIGURATION_STORE, useValue: config.configurationIsolate },\n ]\n };\n }\n\n static forChild(config: NgxPermissionsModuleConfig = {}): ModuleWithProviders {\n return {\n ngModule: NgxPermissionsModule,\n providers: [\n { provide: USE_PERMISSIONS_STORE, useValue: config.permissionsIsolate },\n { provide: USE_ROLES_STORE, useValue: config.rolesIsolate },\n { provide: USE_CONFIGURATION_STORE, useValue: config.configurationIsolate },\n NgxPermissionsConfigurationService,\n NgxPermissionsService,\n NgxRolesService,\n NgxPermissionsGuard\n ]\n };\n }\n}\n\n@NgModule({\n imports: [],\n declarations: [\n NgxPermissionsAllowStubDirective\n ],\n exports: [\n NgxPermissionsAllowStubDirective\n ]\n})\nexport class NgxPermissionsAllowStubModule {\n}\n\n\n@NgModule({\n imports: [],\n declarations: [\n NgxPermissionsRestrictStubDirective\n ],\n exports: [\n NgxPermissionsRestrictStubDirective\n ]\n})\nexport class NgxPermissionsRestrictStubModule {\n}\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"/modules/NgxPermissionsRestrictStubModule.html":{"url":"/modules/NgxPermissionsRestrictStubModule.html","title":"module - NgxPermissionsRestrictStubModule","body":"\n \n\n\n Modules\n NgxPermissionsRestrictStubModule\n\n\n\n \n \n\n\n\n\n\ndependencies\n\nLegend\n\n  Declarations\n\n  Module\n\n  Bootstrap\n\n  Providers\n\n  Exports\n\ncluster_NgxPermissionsRestrictStubModule\n\n\n\ncluster_NgxPermissionsRestrictStubModule_declarations\n\n\n\ncluster_NgxPermissionsRestrictStubModule_exports\n\n\n\n\nNgxPermissionsRestrictStubDirective\n\nNgxPermissionsRestrictStubDirective\n\n\n\nNgxPermissionsRestrictStubModule\n\nNgxPermissionsRestrictStubModule\n\nNgxPermissionsRestrictStubModule -->\n\nNgxPermissionsRestrictStubDirective->NgxPermissionsRestrictStubModule\n\n\n\n\n\nNgxPermissionsRestrictStubDirective \n\nNgxPermissionsRestrictStubDirective \n\nNgxPermissionsRestrictStubDirective -->\n\nNgxPermissionsRestrictStubModule->NgxPermissionsRestrictStubDirective \n\n\n\n\n\n\n \n \n Zoom in\n Reset\n Zoom out\n \n\n\n\n\n\n \n Infos\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/ngx-permissions/src/lib/index.ts\n \n\n\n \n \n \n Declarations\n \n \n NgxPermissionsRestrictStubDirective\n \n \n \n \n Exports\n \n \n NgxPermissionsRestrictStubDirective\n \n \n \n \n \n \n \n import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { NgxPermissionsDirective } from './directive/permissions.directive';\nimport { NgxPermissionsGuard } from './router/permissions-guard.service';\nimport { NgxPermissionsConfigurationService, USE_CONFIGURATION_STORE } from './service/configuration.service';\nimport { NgxPermissionsService, USE_PERMISSIONS_STORE } from './service/permissions.service';\nimport { NgxRolesService, USE_ROLES_STORE } from './service/roles.service';\nimport { NgxPermissionsConfigurationStore } from './store/configuration.store';\nimport { NgxPermissionsStore } from './store/permissions.store';\nimport { NgxRolesStore } from './store/roles.store';\nimport { NgxPermissionsAllowStubDirective } from './testing/permissions-allow.directive.stub';\nimport { NgxPermissionsRestrictStubDirective } from './testing/permissions-restrict.directive.stub';\n\nexport * from './store/roles.store';\nexport * from './store/permissions.store';\nexport * from './store/configuration.store';\n\nexport * from './directive/permissions.directive';\n\nexport * from './service/permissions.service';\nexport * from './service/roles.service';\nexport * from './service/configuration.service';\n\nexport * from './router/permissions-guard.service';\n\nexport * from './model/permissions-router-data.model';\nexport * from './model/role.model';\n\nexport * from './testing/permissions-allow.directive.stub';\nexport * from './testing/permissions-restrict.directive.stub';\n\nexport * from './enums/predefined-strategies.enum';\n\nexport interface NgxPermissionsModuleConfig {\n // isolate the service instance, only works for lazy loaded modules or components with the \"providers\" property\n rolesIsolate?: boolean;\n permissionsIsolate?: boolean;\n configurationIsolate?: boolean;\n}\n\n\n@NgModule({\n imports: [],\n declarations: [\n NgxPermissionsDirective\n ],\n exports: [\n NgxPermissionsDirective\n ]\n})\nexport class NgxPermissionsModule {\n static forRoot(config: NgxPermissionsModuleConfig = {}): ModuleWithProviders {\n return {\n ngModule: NgxPermissionsModule,\n providers: [\n NgxPermissionsStore,\n NgxRolesStore,\n NgxPermissionsConfigurationStore,\n NgxPermissionsService,\n NgxPermissionsGuard,\n NgxRolesService,\n NgxPermissionsConfigurationService,\n { provide: USE_PERMISSIONS_STORE, useValue: config.permissionsIsolate },\n { provide: USE_ROLES_STORE, useValue: config.rolesIsolate },\n { provide: USE_CONFIGURATION_STORE, useValue: config.configurationIsolate },\n ]\n };\n }\n\n static forChild(config: NgxPermissionsModuleConfig = {}): ModuleWithProviders {\n return {\n ngModule: NgxPermissionsModule,\n providers: [\n { provide: USE_PERMISSIONS_STORE, useValue: config.permissionsIsolate },\n { provide: USE_ROLES_STORE, useValue: config.rolesIsolate },\n { provide: USE_CONFIGURATION_STORE, useValue: config.configurationIsolate },\n NgxPermissionsConfigurationService,\n NgxPermissionsService,\n NgxRolesService,\n NgxPermissionsGuard\n ]\n };\n }\n}\n\n@NgModule({\n imports: [],\n declarations: [\n NgxPermissionsAllowStubDirective\n ],\n exports: [\n NgxPermissionsAllowStubDirective\n ]\n})\nexport class NgxPermissionsAllowStubModule {\n}\n\n\n@NgModule({\n imports: [],\n declarations: [\n NgxPermissionsRestrictStubDirective\n ],\n exports: [\n NgxPermissionsRestrictStubDirective\n ]\n})\nexport class NgxPermissionsRestrictStubModule {\n}\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"/components/AppComponent.html":{"url":"/components/AppComponent.html","title":"component - AppComponent","body":"\n \n\n\n\n Components\n AppComponent\n\n\n\n \n Infos\n \n\n \n Source\n \n\n \n Template\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/app.component.ts\n\n\n\n\n \n Implements\n \n \n OnInit\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n\n \n selector\n app-root\n \n\n \n styleUrls\n app.component.css\n \n\n\n\n \n templateUrl\n ./app.component.html\n \n\n\n \n \n\n\n\n\n \n Constructor\n \n \n \n \n constructor(permissionsService: any)\n \n \n \n \n Defined in src/app/app.component.ts:10\n \n \n \n \n \n \n\n \n \n \n Methods\n \n \n \n \n \n ngOnInit\n \n \n \n \n ngOnInit()\n \n \n \n \n \n \n Defined in src/app/app.component.ts:15\n \n \n \n \n \n \n \n Returns : void\n \n \n \n \n \n \n \n \n \n \n Public unAuthorized\n \n \n \n \n \n unAuthorized()\n \n \n \n \n \n \n Defined in src/app/app.component.ts:19\n \n \n \n \n \n \n \n Returns : void\n \n \n \n \n \n \n \n \n \n \n Public authorized\n \n \n \n \n \n authorized()\n \n \n \n \n \n \n Defined in src/app/app.component.ts:23\n \n \n \n \n \n \n \n Returns : void\n \n \n \n \n \n \n \n \n \n \n Public addPermission\n \n \n \n \n \n addPermission()\n \n \n \n \n \n \n Defined in src/app/app.component.ts:27\n \n \n \n \n \n \n \n Returns : void\n \n \n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n title\n \n \n \n \n title: string\n \n \n \n \n \n Default value : app\n \n \n \n \n Defined in src/app/app.component.ts:10\n \n \n \n \n \n\n\n\n \n import { Component, OnInit } from '@angular/core';\nimport { NgxPermissionsService } from 'ngx-permissions';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.css']\n})\nexport class AppComponent implements OnInit {\n title = 'app';\n constructor(private permissionsService: NgxPermissionsService) {\n\n }\n\n ngOnInit(): void {\n this.permissionsService.loadPermissions(['ADMIN']);\n }\n\n public unAuthorized() {\n console.log('unAuthorized');\n }\n\n public authorized() {\n console.log('authorizes');\n }\n\n public addPermission() {\n this.permissionsService.addPermission('CHECK_LOAD');\n }\n}\n\n \n\n \n \n\n \n Welcome to {{title}}!\n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\nCheck Load\nCreate Users\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Only should go Home Page\n\n\n Only should not go Home Page\n\n\n Except should not go through\n\n\n Except should go through\n\n\n Dynamic routes\n\n\nLazy module\nLazy ISOLATE\nLazy ROLES ISOLATE\nLazy ROLES ASYNC ISOLATE\n\n\nAdd load\n\n\n\n\n\n\n\n I SHOULD SEE it (\n \n I SHOULD SEE see it only admin\n \n\n\n\n\n I SHOULD SEE it 2 (\n \n I SHOULD SEE see it only admin\n \n\n\n\n \n I SHOULD SEE see it only admin\n \n\n\n\n THis USES BOTH only and except\n\n \n Usage on both only and except I SHOULD SEE see it only admin\n \n\n\n\n\n I will not see it only guest\n\n\n\n I will see it except adminnnnnnn\n\n\n\n I Should not see it except admin gggggggggg87687687687gggggggggg\n\n\n\n\n Testing templatest\n\n\n\n Testing templatest234234\n\n\n\n\n else block\n\n\n then block\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' Welcome to {{title}}! Check LoadCreate Users Only should go Home Page Only should not go Home Page Except should not go through Except should go through Dynamic routesLazy moduleLazy ISOLATELazy ROLES ISOLATELazy ROLES ASYNC ISOLATEAdd load I SHOULD SEE it ( I SHOULD SEE see it only admin I SHOULD SEE it 2 ( I SHOULD SEE see it only admin I SHOULD SEE see it only admin THis USES BOTH only and except Usage on both only and except I SHOULD SEE see it only admin I will not see it only guest I will see it except adminnnnnnn I Should not see it except admin gggggggggg87687687687gggggggggg Testing templatest Testing templatest234234 else block then block'\n var COMPONENTS = [{'name': 'AppComponent', 'selector': 'app-root'},{'name': 'HomeComponent', 'selector': 'app-home'},{'name': 'InitialLoadComponent', 'selector': 'app-initial-load'},{'name': 'IsolateComponent', 'selector': 'app-isolate'},{'name': 'LazyComponentComponent', 'selector': 'app-lazy-component'},{'name': 'LazyRoleIsolateTestComponent', 'selector': 'app-lazy-role-isolate-test'},{'name': 'LazyRolesAsyncTestComponent', 'selector': 'app-lazy-roles-async-test'}];\n var DIRECTIVES = [{'name': 'NgxPermissionsAllowStubDirective', 'selector': '[ngxPermissionsOnly],[ngxPermissionsExcept]'},{'name': 'NgxPermissionsDirective', 'selector': '[ngxPermissionsOnly],[ngxPermissionsExcept]'},{'name': 'NgxPermissionsRestrictStubDirective', 'selector': '[ngxPermissionsOnly],[ngxPermissionsExcept]'}];\n var ACTUAL_COMPONENT = {'name': 'AppComponent'};\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"/components/HomeComponent.html":{"url":"/components/HomeComponent.html","title":"component - HomeComponent","body":"\n \n\n\n\n Components\n HomeComponent\n\n\n\n \n Infos\n \n\n \n Source\n \n\n \n Template\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/home/home.component.ts\n\n\n\n\n \n Implements\n \n \n OnInit\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n\n \n selector\n app-home\n \n\n \n styleUrls\n home.component.css\n \n\n\n\n \n templateUrl\n ./home.component.html\n \n\n\n \n \n\n\n\n\n \n Constructor\n \n \n \n \n constructor()\n \n \n \n \n Defined in src/app/home/home.component.ts:8\n \n \n \n \n \n \n\n \n \n \n Methods\n \n \n \n \n \n ngOnInit\n \n \n \n \n ngOnInit()\n \n \n \n \n \n \n Defined in src/app/home/home.component.ts:12\n \n \n \n \n \n \n \n Returns : void\n \n \n \n \n \n \n \n\n\n\n\n \n import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-home',\n templateUrl: './home.component.html',\n styleUrls: ['./home.component.css']\n})\nexport class HomeComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n\n \n\n \n \n home works!\n\nBank\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' home works!Bank'\n var COMPONENTS = [{'name': 'AppComponent', 'selector': 'app-root'},{'name': 'HomeComponent', 'selector': 'app-home'},{'name': 'InitialLoadComponent', 'selector': 'app-initial-load'},{'name': 'IsolateComponent', 'selector': 'app-isolate'},{'name': 'LazyComponentComponent', 'selector': 'app-lazy-component'},{'name': 'LazyRoleIsolateTestComponent', 'selector': 'app-lazy-role-isolate-test'},{'name': 'LazyRolesAsyncTestComponent', 'selector': 'app-lazy-roles-async-test'}];\n var DIRECTIVES = [{'name': 'NgxPermissionsAllowStubDirective', 'selector': '[ngxPermissionsOnly],[ngxPermissionsExcept]'},{'name': 'NgxPermissionsDirective', 'selector': '[ngxPermissionsOnly],[ngxPermissionsExcept]'},{'name': 'NgxPermissionsRestrictStubDirective', 'selector': '[ngxPermissionsOnly],[ngxPermissionsExcept]'}];\n var ACTUAL_COMPONENT = {'name': 'HomeComponent'};\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"/components/InitialLoadComponent.html":{"url":"/components/InitialLoadComponent.html","title":"component - InitialLoadComponent","body":"\n \n\n\n\n Components\n InitialLoadComponent\n\n\n\n \n Infos\n \n\n \n Source\n \n\n \n Template\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/initial-load/initial-load.component.ts\n\n\n\n\n \n Implements\n \n \n OnInit\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n\n \n selector\n app-initial-load\n \n\n \n styleUrls\n initial-load.component.css\n \n\n\n\n \n templateUrl\n ./initial-load.component.html\n \n\n\n \n \n\n\n\n\n \n Constructor\n \n \n \n \n constructor()\n \n \n \n \n Defined in src/app/initial-load/initial-load.component.ts:8\n \n \n \n \n \n \n\n \n \n \n Methods\n \n \n \n \n \n ngOnInit\n \n \n \n \n ngOnInit()\n \n \n \n \n \n \n Defined in src/app/initial-load/initial-load.component.ts:12\n \n \n \n \n \n \n \n Returns : void\n \n \n \n \n \n \n \n\n\n\n\n \n import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-initial-load',\n templateUrl: './initial-load.component.html',\n styleUrls: ['./initial-load.component.css']\n})\nexport class InitialLoadComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() {\n console.log('i m loged')\n }\n\n}\n\n \n\n \n \n initial-load works!\n\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' initial-load works!'\n var COMPONENTS = [{'name': 'AppComponent', 'selector': 'app-root'},{'name': 'HomeComponent', 'selector': 'app-home'},{'name': 'InitialLoadComponent', 'selector': 'app-initial-load'},{'name': 'IsolateComponent', 'selector': 'app-isolate'},{'name': 'LazyComponentComponent', 'selector': 'app-lazy-component'},{'name': 'LazyRoleIsolateTestComponent', 'selector': 'app-lazy-role-isolate-test'},{'name': 'LazyRolesAsyncTestComponent', 'selector': 'app-lazy-roles-async-test'}];\n var DIRECTIVES = [{'name': 'NgxPermissionsAllowStubDirective', 'selector': '[ngxPermissionsOnly],[ngxPermissionsExcept]'},{'name': 'NgxPermissionsDirective', 'selector': '[ngxPermissionsOnly],[ngxPermissionsExcept]'},{'name': 'NgxPermissionsRestrictStubDirective', 'selector': '[ngxPermissionsOnly],[ngxPermissionsExcept]'}];\n var ACTUAL_COMPONENT = {'name': 'InitialLoadComponent'};\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"/components/IsolateComponent.html":{"url":"/components/IsolateComponent.html","title":"component - IsolateComponent","body":"\n \n\n\n\n Components\n IsolateComponent\n\n\n\n \n Infos\n \n\n \n Source\n \n\n \n Template\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/lazy-isolate/isolate/isolate.component.ts\n\n\n\n\n \n Implements\n \n \n OnInit\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n\n \n selector\n app-isolate\n \n\n \n styleUrls\n isolate.component.css\n \n\n\n\n \n templateUrl\n ./isolate.component.html\n \n\n\n \n \n\n\n\n\n \n Constructor\n \n \n \n \n constructor()\n \n \n \n \n Defined in src/app/lazy-isolate/isolate/isolate.component.ts:10\n \n \n \n \n \n \n\n \n \n \n Methods\n \n \n \n \n \n ngOnInit\n \n \n \n \n ngOnInit()\n \n \n \n \n \n \n Defined in src/app/lazy-isolate/isolate/isolate.component.ts:14\n \n \n \n \n \n \n \n Returns : void\n \n \n \n \n \n \n \n\n\n\n\n \n import { Component, OnInit } from '@angular/core';\nimport { NgxPermissionsService } from 'ngx-permissions';\nimport { NgxRolesService } from 'ngx-permissions';\n\n@Component({\n selector: 'app-isolate',\n templateUrl: './isolate.component.html',\n styleUrls: ['./isolate.component.css']\n})\nexport class IsolateComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n\n \n\n \n \n LAZY Isolate works!\n\nBack\nSHOULD go to isolate except should page testing except\nSHOULD NOT go to isolate except should page testing except\nSHOULD go to isolate except should page testing only\nSHOULD NOT go to only-should-not except should page testing only\n\n\n Should see something\n \n LAZY I will see it only GUEST\n \n\n\n\n\n LAZY I SHOULD not see it only guest\n\n\n\n LAZY I will see it except guestttt\n\n\n\n LAZY I Should not see it except admin\n\n\n\n ENd on lazy ISOLATE Module\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' LAZY Isolate works!BackSHOULD go to isolate except should page testing exceptSHOULD NOT go to isolate except should page testing exceptSHOULD go to isolate except should page testing onlySHOULD NOT go to only-should-not except should page testing only Should see something LAZY I will see it only GUEST LAZY I SHOULD not see it only guest LAZY I will see it except guestttt LAZY I Should not see it except admin ENd on lazy ISOLATE Module'\n var COMPONENTS = [{'name': 'AppComponent', 'selector': 'app-root'},{'name': 'HomeComponent', 'selector': 'app-home'},{'name': 'InitialLoadComponent', 'selector': 'app-initial-load'},{'name': 'IsolateComponent', 'selector': 'app-isolate'},{'name': 'LazyComponentComponent', 'selector': 'app-lazy-component'},{'name': 'LazyRoleIsolateTestComponent', 'selector': 'app-lazy-role-isolate-test'},{'name': 'LazyRolesAsyncTestComponent', 'selector': 'app-lazy-roles-async-test'}];\n var DIRECTIVES = [{'name': 'NgxPermissionsAllowStubDirective', 'selector': '[ngxPermissionsOnly],[ngxPermissionsExcept]'},{'name': 'NgxPermissionsDirective', 'selector': '[ngxPermissionsOnly],[ngxPermissionsExcept]'},{'name': 'NgxPermissionsRestrictStubDirective', 'selector': '[ngxPermissionsOnly],[ngxPermissionsExcept]'}];\n var ACTUAL_COMPONENT = {'name': 'IsolateComponent'};\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"/components/LazyComponentComponent.html":{"url":"/components/LazyComponentComponent.html","title":"component - LazyComponentComponent","body":"\n \n\n\n\n Components\n LazyComponentComponent\n\n\n\n \n Infos\n \n\n \n Source\n \n\n \n Template\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/lazy-module/lazy-component/lazy-component.component.ts\n\n\n\n\n \n Implements\n \n \n OnInit\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n\n \n selector\n app-lazy-component\n \n\n \n styleUrls\n lazy-component.component.css\n \n\n\n\n \n templateUrl\n ./lazy-component.component.html\n \n\n\n \n \n\n\n\n\n \n Constructor\n \n \n \n \n constructor()\n \n \n \n \n Defined in src/app/lazy-module/lazy-component/lazy-component.component.ts:8\n \n \n \n \n \n \n\n \n \n \n Methods\n \n \n \n \n \n ngOnInit\n \n \n \n \n ngOnInit()\n \n \n \n \n \n \n Defined in src/app/lazy-module/lazy-component/lazy-component.component.ts:12\n \n \n \n \n \n \n \n Returns : void\n \n \n \n \n \n \n \n\n\n\n\n \n import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-lazy-component',\n templateUrl: './lazy-component.component.html',\n styleUrls: ['./lazy-component.component.css']\n})\nexport class LazyComponentComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n\n \n\n \n \n Lazy Module Works\n \n\nBack\nSHOULD go to isolate except should page testing except\nSHOULD NOT go to isolate except should page testing except\nSHOULD go to isolate except should page testing only\nSHOULD NOT go to only-should-not except should page testing only\n\n\n LAZY I will see it only admin\n\n\n\n LAZY I SHOULD not see it only guest\n\n\n\n LAZY I will see it except adminnnnnnn\n\n\n\n LAZY I Should not see it except admin\n\n\n\n ENd on lazy Module\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' Lazy Module Works BackSHOULD go to isolate except should page testing exceptSHOULD NOT go to isolate except should page testing exceptSHOULD go to isolate except should page testing onlySHOULD NOT go to only-should-not except should page testing only LAZY I will see it only admin LAZY I SHOULD not see it only guest LAZY I will see it except adminnnnnnn LAZY I Should not see it except admin ENd on lazy Module'\n var COMPONENTS = [{'name': 'AppComponent', 'selector': 'app-root'},{'name': 'HomeComponent', 'selector': 'app-home'},{'name': 'InitialLoadComponent', 'selector': 'app-initial-load'},{'name': 'IsolateComponent', 'selector': 'app-isolate'},{'name': 'LazyComponentComponent', 'selector': 'app-lazy-component'},{'name': 'LazyRoleIsolateTestComponent', 'selector': 'app-lazy-role-isolate-test'},{'name': 'LazyRolesAsyncTestComponent', 'selector': 'app-lazy-roles-async-test'}];\n var DIRECTIVES = [{'name': 'NgxPermissionsAllowStubDirective', 'selector': '[ngxPermissionsOnly],[ngxPermissionsExcept]'},{'name': 'NgxPermissionsDirective', 'selector': '[ngxPermissionsOnly],[ngxPermissionsExcept]'},{'name': 'NgxPermissionsRestrictStubDirective', 'selector': '[ngxPermissionsOnly],[ngxPermissionsExcept]'}];\n var ACTUAL_COMPONENT = {'name': 'LazyComponentComponent'};\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"/components/LazyRoleIsolateTestComponent.html":{"url":"/components/LazyRoleIsolateTestComponent.html","title":"component - LazyRoleIsolateTestComponent","body":"\n \n\n\n\n Components\n LazyRoleIsolateTestComponent\n\n\n\n \n Infos\n \n\n \n Source\n \n\n \n Template\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/lazy-role-isolate/lazy-role-isolate-test/lazy-role-isolate-test.component.ts\n\n\n\n\n \n Implements\n \n \n OnInit\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n\n \n selector\n app-lazy-role-isolate-test\n \n\n \n styleUrls\n lazy-role-isolate-test.component.css\n \n\n\n\n \n templateUrl\n ./lazy-role-isolate-test.component.html\n \n\n\n \n \n\n\n\n\n \n Constructor\n \n \n \n \n constructor(rolesService: any, permissionsService: any, renderer: any, configService: any)\n \n \n \n \n Defined in src/app/lazy-role-isolate/lazy-role-isolate-test/lazy-role-isolate-test.component.ts:9\n \n \n \n \n \n \n\n \n \n \n Methods\n \n \n \n \n \n ngOnInit\n \n \n \n \n ngOnInit()\n \n \n \n \n \n \n Defined in src/app/lazy-role-isolate/lazy-role-isolate-test/lazy-role-isolate-test.component.ts:16\n \n \n \n \n \n \n \n Returns : void\n \n \n \n \n \n \n \n\n\n\n\n \n import { Component, OnInit, Renderer2, TemplateRef } from '@angular/core';\nimport { NgxRolesService, NgxPermissionsConfigurationService, NgxPermissionsService } from 'ngx-permissions';\n\n@Component({\n selector: 'app-lazy-role-isolate-test',\n templateUrl: './lazy-role-isolate-test.component.html',\n styleUrls: ['./lazy-role-isolate-test.component.css']\n})\nexport class LazyRoleIsolateTestComponent implements OnInit {\n\n constructor(private rolesService: NgxRolesService,\n private permissionsService: NgxPermissionsService,\n private renderer: Renderer2,\n private configService: NgxPermissionsConfigurationService) { }\n\n ngOnInit() {\n this.configService.addPermissionStrategy('lol', (tf: any) => {\n this.renderer.setAttribute(tf.elementRef.nativeElement.nextSibling, 'disabled', 'true');\n });\n\n this.configService.setDefaultOnUnauthorizedStrategy('lol');\n this.permissionsService.addPermission('ADMIN')\n this.rolesService.addRole('ADMIN', ['NICE']);\n }\n\n}\n\n \n\n \n \n LAZY Isolate works!\n\nBack\nSHOULD go to isolate except should page testing except\nSHOULD NOT go to isolate except should page testing except\nSHOULD go to isolate except should page testing only\nSHOULD NOT go to only-should-not except should page testing only\nSHOULD go to only-should-not except should page testing only\nSHOULD NOT go to only-should-not except should page testing only-->\nSHOULD NOT go to only-should-not except should page testing only\n\n\n Should see something\n \n LAZY I will see it only GUEST\n \n\n\n\n\n LAZY I SHOULD not see it only guest\n\n\n\n LAZY I will see it except guestttt\n\n\n\n LAZY I Should not see it except admin\n\n\n\n SHOULD BE DISABLES\n SHOULD NOt BE DISABLES\n\n\n ENd on lazy ISOLATE Module\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' LAZY Isolate works!BackSHOULD go to isolate except should page testing exceptSHOULD NOT go to isolate except should page testing exceptSHOULD go to isolate except should page testing onlySHOULD NOT go to only-should-not except should page testing onlySHOULD go to only-should-not except should page testing onlySHOULD NOT go to only-should-not except should page testing only-->SHOULD NOT go to only-should-not except should page testing only Should see something LAZY I will see it only GUEST LAZY I SHOULD not see it only guest LAZY I will see it except guestttt LAZY I Should not see it except admin SHOULD BE DISABLES SHOULD NOt BE DISABLES ENd on lazy ISOLATE Module'\n var COMPONENTS = [{'name': 'AppComponent', 'selector': 'app-root'},{'name': 'HomeComponent', 'selector': 'app-home'},{'name': 'InitialLoadComponent', 'selector': 'app-initial-load'},{'name': 'IsolateComponent', 'selector': 'app-isolate'},{'name': 'LazyComponentComponent', 'selector': 'app-lazy-component'},{'name': 'LazyRoleIsolateTestComponent', 'selector': 'app-lazy-role-isolate-test'},{'name': 'LazyRolesAsyncTestComponent', 'selector': 'app-lazy-roles-async-test'}];\n var DIRECTIVES = [{'name': 'NgxPermissionsAllowStubDirective', 'selector': '[ngxPermissionsOnly],[ngxPermissionsExcept]'},{'name': 'NgxPermissionsDirective', 'selector': '[ngxPermissionsOnly],[ngxPermissionsExcept]'},{'name': 'NgxPermissionsRestrictStubDirective', 'selector': '[ngxPermissionsOnly],[ngxPermissionsExcept]'}];\n var ACTUAL_COMPONENT = {'name': 'LazyRoleIsolateTestComponent'};\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"/components/LazyRolesAsyncTestComponent.html":{"url":"/components/LazyRolesAsyncTestComponent.html","title":"component - LazyRolesAsyncTestComponent","body":"\n \n\n\n\n Components\n LazyRolesAsyncTestComponent\n\n\n\n \n Infos\n \n\n \n Source\n \n\n \n Template\n \n \n DOM Tree\n \n\n\n\n \n File\n\n\n src/app/lazy-roles-async-isolate/lazy-roles-async-test/lazy-roles-async-test.component.ts\n\n\n\n\n \n Implements\n \n \n OnInit\n \n\n\n\n Metadata\n \n \n\n\n\n\n\n\n\n\n\n\n\n\n \n selector\n app-lazy-roles-async-test\n \n\n \n styleUrls\n lazy-roles-async-test.component.css\n \n\n\n\n \n templateUrl\n ./lazy-roles-async-test.component.html\n \n\n\n \n \n\n\n\n\n \n Constructor\n \n \n \n \n constructor(rolesServices: any, asyncTest: any)\n \n \n \n \n Defined in src/app/lazy-roles-async-isolate/lazy-roles-async-test/lazy-roles-async-test.component.ts:10\n \n \n \n \n \n \n\n \n \n \n Methods\n \n \n \n \n \n ngOnInit\n \n \n \n \n ngOnInit()\n \n \n \n \n \n \n Defined in src/app/lazy-roles-async-isolate/lazy-roles-async-test/lazy-roles-async-test.component.ts:14\n \n \n \n \n \n \n \n Returns : void\n \n \n \n \n \n \n \n\n\n\n\n \n import { Component, OnInit } from '@angular/core';\nimport { NgxRolesService } from 'ngx-permissions';\nimport { AsyncTestService } from '../async-test.service';\n\n@Component({\n selector: 'app-lazy-roles-async-test',\n templateUrl: './lazy-roles-async-test.component.html',\n styleUrls: ['./lazy-roles-async-test.component.css']\n})\nexport class LazyRolesAsyncTestComponent implements OnInit {\n\n constructor(private rolesServices: NgxRolesService, private asyncTest: AsyncTestService) { }\n\n ngOnInit() {\n this.rolesServices.addRole(\"ADMIN_TRUE\", () => {\n return true;\n });\n\n this.rolesServices.addRole(\"ADMIN_FALSE\", () => {\n return false;\n });\n\n this.rolesServices.addRole(\"ADMIN_RESOLVE_TRUE\", () => {\n return this.asyncTest.promiseResolveTrue();\n });\n\n this.rolesServices.addRole(\"ADMIN_RESOLVE_FALSE\", () => {\n return this.asyncTest.promiseResolveFalse();\n });\n\n this.rolesServices.addRole(\"ADMIN_REJECT\", () => {\n return this.asyncTest.promiseReject();\n })\n\n console.log(this.rolesServices.getRoles());\n }\n\n}\n\n \n\n \n \n LAZY Isolate works!\n\nBack\nSHOULD go to isolate except should page testing except\nSHOULD NOT go to isolate except should page testing except\nSHOULD go to isolate except should page testing only\nSHOULD NOT go to only-should-not except should page testing only\nSHOULD go to only-should-not except should page testing only\nSHOULD NOT go to only-should-not except should page testing only-->\nSHOULD NOT go to only-should-not except should page testing only\n\n\n Should see something\n \n LAZY I will see it only GUEST\n \n\n\n\n\n \n LAZY I SHOULD not see it only guest\n \n\n\n\n la\n \n LAZY I SHOULD not see it ADMIN RESOLVE TRUE guest\n \n\n\n\n \n I SHOULD NOT SEE RESOLVE FALSE\n \n\n\n\n \n LAZY I Should not see it ADMIN REJECT admin\n \n\n\n\n ENd on lazy ISOLATE Module\n\n \n\n \n \n \n \n Legend\n \n \n Html element\n \n \n Component\n \n \n Html element with directive\n \n \n \n\n\n\n\n\n\n var COMPONENT_TEMPLATE = ' LAZY Isolate works!BackSHOULD go to isolate except should page testing exceptSHOULD NOT go to isolate except should page testing exceptSHOULD go to isolate except should page testing onlySHOULD NOT go to only-should-not except should page testing onlySHOULD go to only-should-not except should page testing onlySHOULD NOT go to only-should-not except should page testing only-->SHOULD NOT go to only-should-not except should page testing only Should see something LAZY I will see it only GUEST LAZY I SHOULD not see it only guest la LAZY I SHOULD not see it ADMIN RESOLVE TRUE guest I SHOULD NOT SEE RESOLVE FALSE LAZY I Should not see it ADMIN REJECT admin ENd on lazy ISOLATE Module'\n var COMPONENTS = [{'name': 'AppComponent', 'selector': 'app-root'},{'name': 'HomeComponent', 'selector': 'app-home'},{'name': 'InitialLoadComponent', 'selector': 'app-initial-load'},{'name': 'IsolateComponent', 'selector': 'app-isolate'},{'name': 'LazyComponentComponent', 'selector': 'app-lazy-component'},{'name': 'LazyRoleIsolateTestComponent', 'selector': 'app-lazy-role-isolate-test'},{'name': 'LazyRolesAsyncTestComponent', 'selector': 'app-lazy-roles-async-test'}];\n var DIRECTIVES = [{'name': 'NgxPermissionsAllowStubDirective', 'selector': '[ngxPermissionsOnly],[ngxPermissionsExcept]'},{'name': 'NgxPermissionsDirective', 'selector': '[ngxPermissionsOnly],[ngxPermissionsExcept]'},{'name': 'NgxPermissionsRestrictStubDirective', 'selector': '[ngxPermissionsOnly],[ngxPermissionsExcept]'}];\n var ACTUAL_COMPONENT = {'name': 'LazyRolesAsyncTestComponent'};\n\n\n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"/directives/NgxPermissionsAllowStubDirective.html":{"url":"/directives/NgxPermissionsAllowStubDirective.html","title":"directive - NgxPermissionsAllowStubDirective","body":"\n \n\n\n\n\n Directives\n NgxPermissionsAllowStubDirective\n\n\n\n \n Infos\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/ngx-permissions/src/lib/testing/permissions-allow.directive.stub.ts\n \n\n\n \n Implements\n \n \n OnInit\n \n\n\n \n Metadata\n \n \n\n \n selector\n [ngxPermissionsOnly],[ngxPermissionsExcept]\n \n\n \n \n \n\n \n Inputs\n \n \n \n \n ngxPermissionsElse\n \n \n \n Type: any\n\n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/testing/permissions-allow.directive.stub.ts:17\n \n \n \n \n \n \n \n \n ngxPermissionsExcept\n \n \n \n Type: string | {}\n\n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/testing/permissions-allow.directive.stub.ts:12\n \n \n \n \n \n \n \n \n ngxPermissionsExceptElse\n \n \n \n Type: any\n\n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/testing/permissions-allow.directive.stub.ts:13\n \n \n \n \n \n \n \n \n ngxPermissionsExceptThen\n \n \n \n Type: any\n\n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/testing/permissions-allow.directive.stub.ts:14\n \n \n \n \n \n \n \n \n ngxPermissionsOnly\n \n \n \n Type: string | {}\n\n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/testing/permissions-allow.directive.stub.ts:8\n \n \n \n \n \n \n \n \n ngxPermissionsOnlyElse\n \n \n \n Type: any\n\n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/testing/permissions-allow.directive.stub.ts:10\n \n \n \n \n \n \n \n \n ngxPermissionsOnlyThen\n \n \n \n Type: any\n\n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/testing/permissions-allow.directive.stub.ts:9\n \n \n \n \n \n \n \n \n ngxPermissionsThen\n \n \n \n Type: any\n\n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/testing/permissions-allow.directive.stub.ts:16\n \n \n \n \n \n\n \n Outputs\n \n \n \n \n permissionsAuthorized\n \n \n $event type: EventEmitter\n\n \n \n \n \n Defined in projects/ngx-permissions/src/lib/testing/permissions-allow.directive.stub.ts:19\n \n \n \n \n \n \n \n \n permissionsUnauthorized\n \n \n $event type: EventEmitter\n\n \n \n \n \n Defined in projects/ngx-permissions/src/lib/testing/permissions-allow.directive.stub.ts:20\n \n \n \n \n \n\n \n Constructor\n \n \n \n \n constructor(viewContainer: any, templateRef: any)\n \n \n \n \n Defined in projects/ngx-permissions/src/lib/testing/permissions-allow.directive.stub.ts:20\n \n \n \n \n \n \n\n \n \n \n Methods\n \n \n \n \n \n ngOnInit\n \n \n \n \n ngOnInit()\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/testing/permissions-allow.directive.stub.ts:27\n \n \n \n \n \n \n \n Returns : void\n \n \n \n \n \n \n \n \n \n \n Private getAuthorizedTemplate\n \n \n \n \n \n getAuthorizedTemplate()\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/testing/permissions-allow.directive.stub.ts:36\n \n \n \n \n \n \n \n Returns : void\n \n \n \n \n \n \n \n\n\n \n \n import { Directive, EventEmitter, Input, OnInit, Output, TemplateRef, ViewContainerRef } from '@angular/core';\n\n@Directive({\n selector: '[ngxPermissionsOnly],[ngxPermissionsExcept]'\n})\nexport class NgxPermissionsAllowStubDirective implements OnInit {\n\n @Input() ngxPermissionsOnly: string | string[];\n @Input() ngxPermissionsOnlyThen: TemplateRef;\n @Input() ngxPermissionsOnlyElse: TemplateRef;\n\n @Input() ngxPermissionsExcept: string | string[];\n @Input() ngxPermissionsExceptElse: TemplateRef;\n @Input() ngxPermissionsExceptThen: TemplateRef;\n\n @Input() ngxPermissionsThen: TemplateRef;\n @Input() ngxPermissionsElse: TemplateRef;\n\n @Output() permissionsAuthorized = new EventEmitter();\n @Output() permissionsUnauthorized = new EventEmitter();\n\n\n constructor(private viewContainer: ViewContainerRef,\n private templateRef: TemplateRef) {}\n\n\n ngOnInit(): void {\n this.viewContainer.clear();\n if (this.getAuthorizedTemplate()) {\n this.viewContainer.createEmbeddedView(this.getAuthorizedTemplate());\n }\n this.permissionsUnauthorized.emit();\n }\n\n\n private getAuthorizedTemplate() {\n return this.ngxPermissionsOnlyThen ||\n this.ngxPermissionsExceptThen ||\n this.ngxPermissionsThen ||\n this.templateRef;\n }\n\n}\n\n \n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"/directives/NgxPermissionsDirective.html":{"url":"/directives/NgxPermissionsDirective.html","title":"directive - NgxPermissionsDirective","body":"\n \n\n\n\n\n Directives\n NgxPermissionsDirective\n\n\n\n \n Infos\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/ngx-permissions/src/lib/directive/permissions.directive.ts\n \n\n\n \n Implements\n \n \n OnInit\n OnDestroy\n \n\n\n \n Metadata\n \n \n\n \n selector\n [ngxPermissionsOnly],[ngxPermissionsExcept]\n \n\n \n \n \n\n \n Inputs\n \n \n \n \n ngxPermissionsAuthorisedStrategy\n \n \n \n Type: any\n\n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/directive/permissions.directive.ts:33\n \n \n \n \n \n \n \n \n ngxPermissionsElse\n \n \n \n Type: any\n\n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/directive/permissions.directive.ts:24\n \n \n \n \n \n \n \n \n ngxPermissionsExcept\n \n \n \n Type: string | {}\n\n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/directive/permissions.directive.ts:19\n \n \n \n \n \n \n \n \n ngxPermissionsExceptAuthorisedStrategy\n \n \n \n Type: any\n\n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/directive/permissions.directive.ts:30\n \n \n \n \n \n \n \n \n ngxPermissionsExceptElse\n \n \n \n Type: any\n\n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/directive/permissions.directive.ts:20\n \n \n \n \n \n \n \n \n ngxPermissionsExceptThen\n \n \n \n Type: any\n\n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/directive/permissions.directive.ts:21\n \n \n \n \n \n \n \n \n ngxPermissionsExceptUnauthorisedStrategy\n \n \n \n Type: any\n\n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/directive/permissions.directive.ts:29\n \n \n \n \n \n \n \n \n ngxPermissionsOnly\n \n \n \n Type: string | {}\n\n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/directive/permissions.directive.ts:15\n \n \n \n \n \n \n \n \n ngxPermissionsOnlyAuthorisedStrategy\n \n \n \n Type: any\n\n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/directive/permissions.directive.ts:26\n \n \n \n \n \n \n \n \n ngxPermissionsOnlyElse\n \n \n \n Type: any\n\n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/directive/permissions.directive.ts:17\n \n \n \n \n \n \n \n \n ngxPermissionsOnlyThen\n \n \n \n Type: any\n\n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/directive/permissions.directive.ts:16\n \n \n \n \n \n \n \n \n ngxPermissionsOnlyUnauthorisedStrategy\n \n \n \n Type: any\n\n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/directive/permissions.directive.ts:27\n \n \n \n \n \n \n \n \n ngxPermissionsThen\n \n \n \n Type: any\n\n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/directive/permissions.directive.ts:23\n \n \n \n \n \n \n \n \n ngxPermissionsUnauthorisedStrategy\n \n \n \n Type: any\n\n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/directive/permissions.directive.ts:32\n \n \n \n \n \n\n \n Outputs\n \n \n \n \n permissionsAuthorized\n \n \n $event type: EventEmitter\n\n \n \n \n \n Defined in projects/ngx-permissions/src/lib/directive/permissions.directive.ts:35\n \n \n \n \n \n \n \n \n permissionsUnauthorized\n \n \n $event type: EventEmitter\n\n \n \n \n \n Defined in projects/ngx-permissions/src/lib/directive/permissions.directive.ts:36\n \n \n \n \n \n\n \n Constructor\n \n \n \n \n constructor(permissionsService: any, configurationService: any, rolesService: any, viewContainer: any, templateRef: any)\n \n \n \n \n Defined in projects/ngx-permissions/src/lib/directive/permissions.directive.ts:41\n \n \n \n \n \n \n\n \n \n \n Methods\n \n \n \n \n \n ngOnInit\n \n \n \n \n ngOnInit()\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/directive/permissions.directive.ts:52\n \n \n \n \n \n \n \n Returns : void\n \n \n \n \n \n \n \n \n \n \n ngOnDestroy\n \n \n \n \n ngOnDestroy()\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/directive/permissions.directive.ts:57\n \n \n \n \n \n \n \n Returns : void\n \n \n \n \n \n \n \n \n \n \n Private validateExceptOnlyPermissions\n \n \n \n \n \n validateExceptOnlyPermissions()\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/directive/permissions.directive.ts:63\n \n \n \n \n \n \n \n Returns : any\n \n \n \n \n \n \n \n \n \n \n Private validateExceptAndOnlyPermissions\n \n \n \n \n \n validateExceptAndOnlyPermissions()\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/directive/permissions.directive.ts:79\n \n \n \n \n \n \n \n Returns : void\n \n \n \n \n \n \n \n \n \n \n Private validateOnlyPermissions\n \n \n \n \n \n validateOnlyPermissions()\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/directive/permissions.directive.ts:100\n \n \n \n \n \n \n \n Returns : void\n \n \n \n \n \n \n \n \n \n \n Private handleUnauthorisedPermission\n \n \n \n \n \n handleUnauthorisedPermission(template: any)\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/directive/permissions.directive.ts:113\n \n \n \n \n \n \n \n Returns : void\n \n \n \n \n \n \n \n \n \n \n Private handleAuthorisedPermission\n \n \n \n \n \n handleAuthorisedPermission(template: any)\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/directive/permissions.directive.ts:138\n \n \n \n \n \n \n \n Returns : void\n \n \n \n \n \n \n \n \n \n \n Private showTemplateBlockInView\n \n \n \n \n \n showTemplateBlockInView(template: any)\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/directive/permissions.directive.ts:161\n \n \n \n \n \n \n \n Returns : void\n \n \n \n \n \n \n \n \n \n \n Private getAuthorisedTemplates\n \n \n \n \n \n getAuthorisedTemplates()\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/directive/permissions.directive.ts:170\n \n \n \n \n \n \n \n Returns : any\n \n \n \n \n \n \n \n \n \n \n Private noElseBlockDefined\n \n \n \n \n \n noElseBlockDefined()\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/directive/permissions.directive.ts:177\n \n \n \n \n \n \n \n Returns : boolean\n \n \n \n \n \n \n \n \n \n \n Private noThenBlockDefined\n \n \n \n \n \n noThenBlockDefined()\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/directive/permissions.directive.ts:181\n \n \n \n \n \n \n \n Returns : void\n \n \n \n \n \n \n \n \n \n \n Private onlyAuthorisedStrategyDefined\n \n \n \n \n \n onlyAuthorisedStrategyDefined()\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/directive/permissions.directive.ts:185\n \n \n \n \n \n \n \n Returns : void\n \n \n \n \n \n \n \n \n \n \n Private unauthorisedStrategyDefined\n \n \n \n \n \n unauthorisedStrategyDefined()\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/directive/permissions.directive.ts:191\n \n \n \n \n \n \n \n Returns : void\n \n \n \n \n \n \n \n \n \n \n Private applyStrategy\n \n \n \n \n \n applyStrategy(str: any)\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/directive/permissions.directive.ts:197\n \n \n \n \n \n \n \n Returns : void\n \n \n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n Private currentAuthorizedState\n \n \n \n \n currentAuthorizedState: boolean\n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/directive/permissions.directive.ts:41\n \n \n \n \n \n \n \n \n Private firstMergeUnusedRun\n \n \n \n \n firstMergeUnusedRun: number\n \n \n \n \n \n Default value : 1\n \n \n \n \n Defined in projects/ngx-permissions/src/lib/directive/permissions.directive.ts:40\n \n \n \n \n \n \n \n \n Private initPermissionSubscription\n \n \n \n \n initPermissionSubscription: any\n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/directive/permissions.directive.ts:38\n \n \n \n \n \n\n \n \n import { Directive, EventEmitter, Input, OnDestroy, OnInit, Output, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { Subscription, merge } from 'rxjs';\nimport { skip } from 'rxjs/operators';\nimport { NgxPermissionsPredefinedStrategies } from '../enums/predefined-strategies.enum';\nimport { NgxPermissionsConfigurationService, StrategyFunction } from '../service/configuration.service';\nimport { NgxPermissionsService } from '../service/permissions.service';\nimport { NgxRolesService } from '../service/roles.service';\nimport { isBoolean, isFunction, isString, notEmptyValue } from '../utils/utils';\n\n@Directive({\n selector: '[ngxPermissionsOnly],[ngxPermissionsExcept]'\n})\nexport class NgxPermissionsDirective implements OnInit, OnDestroy {\n\n @Input() ngxPermissionsOnly: string | string[];\n @Input() ngxPermissionsOnlyThen: TemplateRef;\n @Input() ngxPermissionsOnlyElse: TemplateRef;\n\n @Input() ngxPermissionsExcept: string | string[];\n @Input() ngxPermissionsExceptElse: TemplateRef;\n @Input() ngxPermissionsExceptThen: TemplateRef;\n\n @Input() ngxPermissionsThen: TemplateRef;\n @Input() ngxPermissionsElse: TemplateRef;\n\n @Input() ngxPermissionsOnlyAuthorisedStrategy: string | StrategyFunction;\n @Input() ngxPermissionsOnlyUnauthorisedStrategy: string | StrategyFunction;\n\n @Input() ngxPermissionsExceptUnauthorisedStrategy: string | StrategyFunction;\n @Input() ngxPermissionsExceptAuthorisedStrategy: string | StrategyFunction;\n\n @Input() ngxPermissionsUnauthorisedStrategy: string | StrategyFunction;\n @Input() ngxPermissionsAuthorisedStrategy: string | StrategyFunction;\n\n @Output() permissionsAuthorized = new EventEmitter();\n @Output() permissionsUnauthorized = new EventEmitter();\n\n private initPermissionSubscription: Subscription;\n // skip first run cause merge will fire twice\n private firstMergeUnusedRun = 1;\n private currentAuthorizedState: boolean;\n\n constructor(\n private permissionsService: NgxPermissionsService,\n private configurationService: NgxPermissionsConfigurationService,\n private rolesService: NgxRolesService,\n private viewContainer: ViewContainerRef,\n private templateRef: TemplateRef\n ) {\n }\n\n ngOnInit(): void {\n this.viewContainer.clear();\n this.initPermissionSubscription = this.validateExceptOnlyPermissions();\n }\n\n ngOnDestroy(): void {\n if (this.initPermissionSubscription) {\n this.initPermissionSubscription.unsubscribe();\n }\n }\n\n private validateExceptOnlyPermissions(): Subscription {\n return merge(this.permissionsService.permissions$, this.rolesService.roles$)\n .pipe(skip(this.firstMergeUnusedRun))\n .subscribe(() => {\n if (notEmptyValue(this.ngxPermissionsExcept)) {\n return this.validateExceptAndOnlyPermissions();\n }\n\n if (notEmptyValue(this.ngxPermissionsOnly)) {\n return this.validateOnlyPermissions();\n }\n\n this.handleAuthorisedPermission(this.getAuthorisedTemplates());\n });\n }\n\n private validateExceptAndOnlyPermissions(): void {\n Promise.all([ this.permissionsService.hasPermission(this.ngxPermissionsExcept), this.rolesService.hasOnlyRoles(this.ngxPermissionsExcept) ])\n .then(([ hasPermission, hasRole ]) => {\n if (hasPermission || hasRole) {\n this.handleUnauthorisedPermission(this.ngxPermissionsExceptElse || this.ngxPermissionsElse);\n } else {\n if (!!this.ngxPermissionsOnly) {\n throw false;\n } else {\n this.handleAuthorisedPermission(this.ngxPermissionsExceptThen || this.ngxPermissionsThen || this.templateRef);\n }\n }\n }).catch(() => {\n if (!!this.ngxPermissionsOnly) {\n this.validateOnlyPermissions();\n } else {\n this.handleAuthorisedPermission(this.ngxPermissionsExceptThen || this.ngxPermissionsThen || this.templateRef);\n }\n });\n }\n\n private validateOnlyPermissions(): void {\n Promise.all([ this.permissionsService.hasPermission(this.ngxPermissionsOnly), this.rolesService.hasOnlyRoles(this.ngxPermissionsOnly) ])\n .then(([ permissionPr, roles ]) => {\n if (permissionPr || roles) {\n this.handleAuthorisedPermission(this.ngxPermissionsOnlyThen || this.ngxPermissionsThen || this.templateRef);\n } else {\n this.handleUnauthorisedPermission(this.ngxPermissionsOnlyElse || this.ngxPermissionsElse);\n }\n }).catch(() => {\n this.handleUnauthorisedPermission(this.ngxPermissionsOnlyElse || this.ngxPermissionsElse);\n });\n }\n\n private handleUnauthorisedPermission(template: TemplateRef): void {\n\n if (!isBoolean(this.currentAuthorizedState) || this.currentAuthorizedState) {\n this.currentAuthorizedState = false;\n this.permissionsUnauthorized.emit();\n\n if (this.unauthorisedStrategyDefined()) {\n if (isString(this.unauthorisedStrategyDefined())) {\n this.applyStrategy(this.unauthorisedStrategyDefined());\n } else if (isFunction(this.unauthorisedStrategyDefined())) {\n this.showTemplateBlockInView(this.templateRef);\n (this.unauthorisedStrategyDefined() as Function)(this.templateRef);\n }\n return;\n }\n\n if (this.configurationService.onUnAuthorisedDefaultStrategy && this.noElseBlockDefined()) {\n this.applyStrategy(this.configurationService.onUnAuthorisedDefaultStrategy);\n } else {\n this.showTemplateBlockInView(template);\n }\n\n }\n }\n\n private handleAuthorisedPermission(template: TemplateRef): void {\n if (!isBoolean(this.currentAuthorizedState) || !this.currentAuthorizedState) {\n this.currentAuthorizedState = true;\n this.permissionsAuthorized.emit();\n\n if (this.onlyAuthorisedStrategyDefined()) {\n if (isString(this.onlyAuthorisedStrategyDefined())) {\n this.applyStrategy(this.onlyAuthorisedStrategyDefined());\n } else if (isFunction(this.onlyAuthorisedStrategyDefined())) {\n this.showTemplateBlockInView(this.templateRef);\n (this.onlyAuthorisedStrategyDefined() as Function)(this.templateRef);\n }\n return;\n }\n\n if (this.configurationService.onAuthorisedDefaultStrategy && this.noThenBlockDefined()) {\n this.applyStrategy(this.configurationService.onAuthorisedDefaultStrategy);\n } else {\n this.showTemplateBlockInView(template);\n }\n }\n }\n\n private showTemplateBlockInView(template: TemplateRef): void {\n this.viewContainer.clear();\n if (!template) {\n return;\n }\n\n this.viewContainer.createEmbeddedView(template);\n }\n\n private getAuthorisedTemplates(): TemplateRef {\n return this.ngxPermissionsOnlyThen\n || this.ngxPermissionsExceptThen\n || this.ngxPermissionsThen\n || this.templateRef;\n }\n\n private noElseBlockDefined(): boolean {\n return !this.ngxPermissionsExceptElse || !this.ngxPermissionsElse;\n }\n\n private noThenBlockDefined() {\n return !this.ngxPermissionsExceptThen || !this.ngxPermissionsThen;\n }\n\n private onlyAuthorisedStrategyDefined() {\n return this.ngxPermissionsOnlyAuthorisedStrategy ||\n this.ngxPermissionsExceptAuthorisedStrategy ||\n this.ngxPermissionsAuthorisedStrategy;\n }\n\n private unauthorisedStrategyDefined() {\n return this.ngxPermissionsOnlyUnauthorisedStrategy ||\n this.ngxPermissionsExceptUnauthorisedStrategy ||\n this.ngxPermissionsUnauthorisedStrategy;\n }\n\n private applyStrategy(str: any) {\n if (str === NgxPermissionsPredefinedStrategies.SHOW) {\n this.showTemplateBlockInView(this.templateRef);\n return;\n }\n\n if (str === NgxPermissionsPredefinedStrategies.REMOVE) {\n this.viewContainer.clear();\n return;\n }\n const strategy = this.configurationService.getStrategy(str);\n this.showTemplateBlockInView(this.templateRef);\n strategy(this.templateRef);\n }\n\n}\n\n \n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"/directives/NgxPermissionsRestrictStubDirective.html":{"url":"/directives/NgxPermissionsRestrictStubDirective.html","title":"directive - NgxPermissionsRestrictStubDirective","body":"\n \n\n\n\n\n Directives\n NgxPermissionsRestrictStubDirective\n\n\n\n \n Infos\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/ngx-permissions/src/lib/testing/permissions-restrict.directive.stub.ts\n \n\n\n \n Implements\n \n \n OnInit\n \n\n\n \n Metadata\n \n \n\n \n selector\n [ngxPermissionsOnly],[ngxPermissionsExcept]\n \n\n \n \n \n\n \n Inputs\n \n \n \n \n ngxPermissionsElse\n \n \n \n Type: any\n\n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/testing/permissions-restrict.directive.stub.ts:17\n \n \n \n \n \n \n \n \n ngxPermissionsExcept\n \n \n \n Type: string | {}\n\n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/testing/permissions-restrict.directive.stub.ts:12\n \n \n \n \n \n \n \n \n ngxPermissionsExceptElse\n \n \n \n Type: any\n\n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/testing/permissions-restrict.directive.stub.ts:13\n \n \n \n \n \n \n \n \n ngxPermissionsExceptThen\n \n \n \n Type: any\n\n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/testing/permissions-restrict.directive.stub.ts:14\n \n \n \n \n \n \n \n \n ngxPermissionsOnly\n \n \n \n Type: string | {}\n\n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/testing/permissions-restrict.directive.stub.ts:8\n \n \n \n \n \n \n \n \n ngxPermissionsOnlyElse\n \n \n \n Type: any\n\n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/testing/permissions-restrict.directive.stub.ts:10\n \n \n \n \n \n \n \n \n ngxPermissionsOnlyThen\n \n \n \n Type: any\n\n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/testing/permissions-restrict.directive.stub.ts:9\n \n \n \n \n \n \n \n \n ngxPermissionsThen\n \n \n \n Type: any\n\n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/testing/permissions-restrict.directive.stub.ts:16\n \n \n \n \n \n\n \n Outputs\n \n \n \n \n permissionsAuthorized\n \n \n $event type: EventEmitter\n\n \n \n \n \n Defined in projects/ngx-permissions/src/lib/testing/permissions-restrict.directive.stub.ts:19\n \n \n \n \n \n \n \n \n permissionsUnauthorized\n \n \n $event type: EventEmitter\n\n \n \n \n \n Defined in projects/ngx-permissions/src/lib/testing/permissions-restrict.directive.stub.ts:20\n \n \n \n \n \n\n \n Constructor\n \n \n \n \n constructor(viewContainer: any)\n \n \n \n \n Defined in projects/ngx-permissions/src/lib/testing/permissions-restrict.directive.stub.ts:20\n \n \n \n \n \n \n\n \n \n \n Methods\n \n \n \n \n \n ngOnInit\n \n \n \n \n ngOnInit()\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/testing/permissions-restrict.directive.stub.ts:26\n \n \n \n \n \n \n \n Returns : void\n \n \n \n \n \n \n \n \n \n \n Private getUnAuthorizedTemplate\n \n \n \n \n \n getUnAuthorizedTemplate()\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/testing/permissions-restrict.directive.stub.ts:35\n \n \n \n \n \n \n \n Returns : void\n \n \n \n \n \n \n \n\n\n \n \n import { Directive, EventEmitter, Input, OnInit, Output, TemplateRef, ViewContainerRef } from '@angular/core';\n\n@Directive({\n selector: '[ngxPermissionsOnly],[ngxPermissionsExcept]'\n})\nexport class NgxPermissionsRestrictStubDirective implements OnInit {\n\n @Input() ngxPermissionsOnly: string | string[];\n @Input() ngxPermissionsOnlyThen: TemplateRef;\n @Input() ngxPermissionsOnlyElse: TemplateRef;\n\n @Input() ngxPermissionsExcept: string | string[];\n @Input() ngxPermissionsExceptElse: TemplateRef;\n @Input() ngxPermissionsExceptThen: TemplateRef;\n\n @Input() ngxPermissionsThen: TemplateRef;\n @Input() ngxPermissionsElse: TemplateRef;\n\n @Output() permissionsAuthorized = new EventEmitter();\n @Output() permissionsUnauthorized = new EventEmitter();\n\n\n constructor(private viewContainer: ViewContainerRef) {}\n\n\n ngOnInit(): void {\n this.viewContainer.clear();\n if (this.getUnAuthorizedTemplate()) {\n this.viewContainer.createEmbeddedView(this.getUnAuthorizedTemplate());\n }\n this.permissionsUnauthorized.emit();\n }\n\n\n private getUnAuthorizedTemplate() {\n return this.ngxPermissionsOnlyElse ||\n this.ngxPermissionsExceptElse ||\n this.ngxPermissionsElse;\n }\n\n}\n\n \n\n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"/injectables/AsyncTestService.html":{"url":"/injectables/AsyncTestService.html","title":"injectable - AsyncTestService","body":"\n \n\n\n\n\n\n Injectables\n AsyncTestService\n\n\n\n \n Infos\n \n \n Source\n \n\n\n\n \n \n File\n \n \n src/app/lazy-roles-async-isolate/async-test.service.ts\n \n\n\n \n Constructor\n \n \n \n \n constructor()\n \n \n \n \n Defined in src/app/lazy-roles-async-isolate/async-test.service.ts:4\n \n \n \n \n \n \n\n \n \n \n Methods\n \n \n \n \n \n Public promiseResolveTrue\n \n \n \n \n \n promiseResolveTrue()\n \n \n \n \n \n \n Defined in src/app/lazy-roles-async-isolate/async-test.service.ts:9\n \n \n \n \n \n \n \n Returns : void\n \n \n \n \n \n \n \n \n \n \n Public promiseResolveFalse\n \n \n \n \n \n promiseResolveFalse()\n \n \n \n \n \n \n Defined in src/app/lazy-roles-async-isolate/async-test.service.ts:13\n \n \n \n \n \n \n \n Returns : void\n \n \n \n \n \n \n \n \n \n \n Public promiseReject\n \n \n \n \n \n promiseReject()\n \n \n \n \n \n \n Defined in src/app/lazy-roles-async-isolate/async-test.service.ts:17\n \n \n \n \n \n \n \n Returns : void\n \n \n \n \n \n \n \n\n \n \n import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class AsyncTestService {\n\n constructor() { }\n\n\n public promiseResolveTrue() {\n return Promise.resolve(true);\n }\n\n public promiseResolveFalse() {\n return Promise.resolve(false);\n }\n\n public promiseReject() {\n return Promise.reject(() => {\n\n });\n }\n}\n\n \n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"/injectables/NgxPermissionsConfigurationService.html":{"url":"/injectables/NgxPermissionsConfigurationService.html","title":"injectable - NgxPermissionsConfigurationService","body":"\n \n\n\n\n\n\n Injectables\n NgxPermissionsConfigurationService\n\n\n\n \n Infos\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/ngx-permissions/src/lib/service/configuration.service.ts\n \n\n\n \n Constructor\n \n \n \n \n constructor(isolate: boolean, configurationStore: any)\n \n \n \n \n Defined in projects/ngx-permissions/src/lib/service/configuration.service.ts:20\n \n \n \n \n \n \n\n \n \n \n Methods\n \n \n \n \n \n Public setDefaultOnAuthorizedStrategy\n \n \n \n \n \n setDefaultOnAuthorizedStrategy(name: string)\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/service/configuration.service.ts:34\n \n \n \n \n \n \n \n Returns : void\n \n \n \n \n \n \n \n \n \n \n Public setDefaultOnUnauthorizedStrategy\n \n \n \n \n \n setDefaultOnUnauthorizedStrategy(name: string)\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/service/configuration.service.ts:42\n \n \n \n \n \n \n \n Returns : void\n \n \n \n \n \n \n \n \n \n \n Public addPermissionStrategy\n \n \n \n \n \n addPermissionStrategy(key: string, func: StrategyFunction)\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/service/configuration.service.ts:50\n \n \n \n \n \n \n \n Returns : void\n \n \n \n \n \n \n \n \n \n \n Public getStrategy\n \n \n \n \n \n getStrategy(key: string)\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/service/configuration.service.ts:54\n \n \n \n \n \n \n \n Returns : void\n \n \n \n \n \n \n \n \n \n \n Public getAllStrategies\n \n \n \n \n \n getAllStrategies()\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/service/configuration.service.ts:58\n \n \n \n \n \n \n \n Returns : void\n \n \n \n \n \n \n \n \n \n \n Private predefinedStrategy\n \n \n \n \n \n predefinedStrategy(strategy: string)\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/service/configuration.service.ts:62\n \n \n \n \n \n \n \n Returns : boolean\n \n \n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n Public onAuthorisedDefaultStrategy\n \n \n \n \n onAuthorisedDefaultStrategy: string\n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/service/configuration.service.ts:19\n \n \n \n \n \n \n \n \n Public onUnAuthorisedDefaultStrategy\n \n \n \n \n onUnAuthorisedDefaultStrategy: string\n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/service/configuration.service.ts:20\n \n \n \n \n \n \n \n \n Public strategies$\n \n \n \n \n strategies$: any\n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/service/configuration.service.ts:18\n \n \n \n \n \n \n \n \n Private strategiesSource\n \n \n \n \n strategiesSource: any\n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/service/configuration.service.ts:17\n \n \n \n \n \n \n \n import { Inject, Injectable, InjectionToken, TemplateRef } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { NgxPermissionsPredefinedStrategies } from '../enums/predefined-strategies.enum';\nimport { NgxPermissionsConfigurationStore } from '../store/configuration.store';\n\nexport type StrategyFunction = (templateRef?: TemplateRef) => void;\n\nexport type Strategy = {\n [ key: string ]: StrategyFunction\n};\n\nexport const USE_CONFIGURATION_STORE = new InjectionToken('USE_CONFIGURATION_STORE');\n\n@Injectable()\nexport class NgxPermissionsConfigurationService {\n\n private strategiesSource: BehaviorSubject;\n public strategies$: Observable;\n public onAuthorisedDefaultStrategy: string | undefined;\n public onUnAuthorisedDefaultStrategy: string | undefined;\n\n constructor(\n @Inject(USE_CONFIGURATION_STORE) private isolate: boolean = false,\n private configurationStore: NgxPermissionsConfigurationStore\n ) {\n this.strategiesSource = this.isolate ? new BehaviorSubject({}) : this.configurationStore.strategiesSource;\n this.strategies$ = this.strategiesSource.asObservable();\n\n this.onAuthorisedDefaultStrategy = this.isolate ? undefined : this.configurationStore.onAuthorisedDefaultStrategy;\n this.onUnAuthorisedDefaultStrategy = this.isolate ? undefined : this.configurationStore.onUnAuthorisedDefaultStrategy;\n\n }\n\n public setDefaultOnAuthorizedStrategy(name: string | 'remove' | 'show') {\n if (this.strategiesSource.value[ name ] || this.predefinedStrategy(name)) {\n this.onAuthorisedDefaultStrategy = name;\n } else {\n throw new Error(`No ${name} strategy is found please define one`);\n }\n }\n\n public setDefaultOnUnauthorizedStrategy(name: string | 'remove' | 'show') {\n if (this.strategiesSource.value[ name ] || this.predefinedStrategy(name)) {\n this.onUnAuthorisedDefaultStrategy = name;\n } else {\n throw new Error(`No ' ${name} ' strategy is found please define one`);\n }\n }\n\n public addPermissionStrategy(key: string, func: StrategyFunction): void {\n this.strategiesSource.value[ key ] = func;\n }\n\n public getStrategy(key: string) {\n return this.strategiesSource.value[ key ];\n }\n\n public getAllStrategies() {\n return this.strategiesSource.value;\n }\n\n private predefinedStrategy(strategy: string): boolean {\n return strategy === NgxPermissionsPredefinedStrategies.SHOW || strategy === NgxPermissionsPredefinedStrategies.REMOVE;\n }\n\n}\n\n \n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"/injectables/NgxPermissionsConfigurationStore.html":{"url":"/injectables/NgxPermissionsConfigurationStore.html","title":"injectable - NgxPermissionsConfigurationStore","body":"\n \n\n\n\n\n\n Injectables\n NgxPermissionsConfigurationStore\n\n\n\n \n Infos\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/ngx-permissions/src/lib/store/configuration.store.ts\n \n\n\n \n Constructor\n \n \n \n \n constructor()\n \n \n \n \n Defined in projects/ngx-permissions/src/lib/store/configuration.store.ts:12\n \n \n \n \n \n \n\n\n \n \n \n Properties\n \n \n \n \n \n Public onAuthorisedDefaultStrategy\n \n \n \n \n onAuthorisedDefaultStrategy: string\n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/store/configuration.store.ts:11\n \n \n \n \n \n \n \n \n Public onUnAuthorisedDefaultStrategy\n \n \n \n \n onUnAuthorisedDefaultStrategy: string\n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/store/configuration.store.ts:12\n \n \n \n \n \n \n \n \n Public strategies$\n \n \n \n \n strategies$: any\n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/store/configuration.store.ts:9\n \n \n \n \n \n \n \n \n Public strategiesSource\n \n \n \n \n strategiesSource: any\n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/store/configuration.store.ts:8\n \n \n \n \n \n \n \n import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { Strategy } from '../service/configuration.service';\n\n@Injectable()\nexport class NgxPermissionsConfigurationStore {\n\n public strategiesSource: BehaviorSubject = new BehaviorSubject({});\n public strategies$: Observable = this.strategiesSource.asObservable();\n\n public onAuthorisedDefaultStrategy: string | undefined;\n public onUnAuthorisedDefaultStrategy: string | undefined;\n\n constructor() {\n }\n\n}\n\n \n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"/injectables/NgxPermissionsGuard.html":{"url":"/injectables/NgxPermissionsGuard.html","title":"injectable - NgxPermissionsGuard","body":"\n \n\n\n\n\n\n Injectables\n NgxPermissionsGuard\n\n\n\n \n Infos\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/ngx-permissions/src/lib/router/permissions-guard.service.ts\n \n\n\n \n Constructor\n \n \n \n \n constructor(permissionsService: any, rolesService: any, router: any)\n \n \n \n \n Defined in projects/ngx-permissions/src/lib/router/permissions-guard.service.ts:29\n \n \n \n \n \n \n\n \n \n \n Methods\n \n \n \n \n \n canActivate\n \n \n \n \n canActivate(route: any, state: any)\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/router/permissions-guard.service.ts:34\n \n \n \n \n \n \n \n Returns : any\n \n \n \n \n \n \n \n \n \n \n canActivateChild\n \n \n \n \n canActivateChild(childRoute: any, state: any)\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/router/permissions-guard.service.ts:38\n \n \n \n \n \n \n \n Returns : any\n \n \n \n \n \n \n \n \n \n \n canLoad\n \n \n \n \n canLoad(route: any)\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/router/permissions-guard.service.ts:42\n \n \n \n \n \n \n \n Returns : any\n \n \n \n \n \n \n \n \n \n \n Private hasPermissions\n \n \n \n \n \n hasPermissions(route: any, state: any)\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/router/permissions-guard.service.ts:46\n \n \n \n \n \n \n \n Returns : void\n \n \n \n \n \n \n \n \n \n \n Private transformPermission\n \n \n \n \n \n transformPermission(purePermissions: any, route: any, state: any)\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/router/permissions-guard.service.ts:61\n \n \n \n \n \n \n \n Returns : any\n \n \n \n \n \n \n \n \n \n \n Private isParameterAvailable\n \n \n \n \n \n isParameterAvailable(permission: any)\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/router/permissions-guard.service.ts:80\n \n \n \n \n \n \n \n Returns : void\n \n \n \n \n \n \n \n \n \n \n Private passingExceptPermissionsValidation\n \n \n \n \n \n passingExceptPermissionsValidation(permissions: any, route: any, state: any)\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/router/permissions-guard.service.ts:84\n \n \n \n \n \n \n \n Returns : void\n \n \n \n \n \n \n \n \n \n \n Private redirectToAnotherRoute\n \n \n \n \n \n redirectToAnotherRoute(redirectTo: any, route: any, state: any, failedPermissionName: string)\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/router/permissions-guard.service.ts:139\n \n \n \n \n \n \n \n Returns : void\n \n \n \n \n \n \n \n \n \n \n Private isRedirectionWithParameters\n \n \n \n \n \n isRedirectionWithParameters(object: any)\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/router/permissions-guard.service.ts:181\n \n \n \n \n \n \n \n Returns : boolean\n \n \n \n \n \n \n \n \n \n \n Private hasNavigationExtrasAsFunction\n \n \n \n \n \n hasNavigationExtrasAsFunction(redirectTo: any)\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/router/permissions-guard.service.ts:185\n \n \n \n \n \n \n \n Returns : boolean\n \n \n \n \n \n \n \n \n \n \n Private hasNavigationCommandsAsFunction\n \n \n \n \n \n hasNavigationCommandsAsFunction(redirectTo: any)\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/router/permissions-guard.service.ts:190\n \n \n \n \n \n \n \n Returns : boolean\n \n \n \n \n \n \n \n \n \n \n Private onlyRedirectCheck\n \n \n \n \n \n onlyRedirectCheck(permissions: any, route: any, state: any)\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/router/permissions-guard.service.ts:195\n \n \n \n \n \n \n \n Returns : any\n \n \n \n \n \n \n \n \n \n \n Private handleRedirectOfFailedPermission\n \n \n \n \n \n handleRedirectOfFailedPermission(permissions: any, failedPermission: string, route: any, state: any)\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/router/permissions-guard.service.ts:241\n \n \n \n \n \n \n \n Returns : void\n \n \n \n \n \n \n \n \n \n \n Private isFailedPermissionPropertyOfRedirectTo\n \n \n \n \n \n isFailedPermissionPropertyOfRedirectTo(permissions: any, failedPermission: string)\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/router/permissions-guard.service.ts:258\n \n \n \n \n \n \n \n Returns : void\n \n \n \n \n \n \n \n \n \n \n Private checkOnlyPermissions\n \n \n \n \n \n checkOnlyPermissions(purePermissions: any, route: any, state: any)\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/router/permissions-guard.service.ts:262\n \n \n \n \n \n \n \n Returns : void\n \n \n \n \n \n \n \n \n \n \n Private passingOnlyPermissionsValidation\n \n \n \n \n \n passingOnlyPermissionsValidation(permissions: any, route: any, state: any)\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/router/permissions-guard.service.ts:284\n \n \n \n \n \n \n \n Returns : void\n \n \n \n \n \n \n \n\n \n \n import { Injectable } from '@angular/core';\nimport {\n ActivatedRouteSnapshot,\n CanActivate,\n CanActivateChild,\n CanLoad,\n NavigationExtras,\n Route,\n Router,\n RouterStateSnapshot,\n} from '@angular/router';\nimport { forkJoin, from, Observable, of } from 'rxjs';\nimport { first, mergeMap, tap } from 'rxjs/operators';\n\nimport { NgxPermissionsRouterData } from '../model/permissions-router-data.model';\nimport { NgxPermissionsService } from '../service/permissions.service';\nimport { NgxRolesService } from '../service/roles.service';\nimport { isFunction, isPlainObject, transformStringToArray } from '../utils/utils';\n\n\n\n\ninterface NgxRedirectToNavigationParameters {\n navigationCommands: any[] | Function;\n navigationExtras?: NavigationExtras | Function;\n}\n\n@Injectable()\nexport class NgxPermissionsGuard implements CanActivate, CanLoad, CanActivateChild {\n\n constructor(private permissionsService: NgxPermissionsService, private rolesService: NgxRolesService, private router: Router) {\n }\n\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise | boolean {\n return this.hasPermissions(route, state);\n }\n\n canActivateChild(childRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable | Promise | boolean {\n return this.hasPermissions(childRoute, state);\n }\n\n canLoad(route: Route): boolean | Observable | Promise {\n return this.hasPermissions(route);\n }\n\n private hasPermissions(route: ActivatedRouteSnapshot | Route, state?: RouterStateSnapshot) {\n const purePermissions = !!route && route.data ? route.data['permissions'] as NgxPermissionsRouterData : {};\n let permissions: NgxPermissionsRouterData = this.transformPermission(purePermissions, route, state);\n\n if (this.isParameterAvailable(permissions.except)) {\n return this.passingExceptPermissionsValidation(permissions, route, state);\n }\n\n if (this.isParameterAvailable(permissions.only)) {\n return this.passingOnlyPermissionsValidation(permissions, route, state);\n }\n\n return true;\n }\n\n private transformPermission(purePermissions: NgxPermissionsRouterData, route: any, state: any): any {\n let permissions = {\n ...purePermissions\n };\n\n if (isFunction(permissions.except)) {\n permissions.except = (permissions.except as Function)(route, state);\n }\n\n if (isFunction(permissions.only)) {\n permissions.only = (permissions.only as Function)(route, state);\n }\n\n permissions.except = transformStringToArray(permissions.except);\n permissions.only = transformStringToArray(permissions.only);\n\n return permissions;\n }\n\n private isParameterAvailable(permission: any) {\n return !!(permission) && permission.length > 0;\n }\n\n private passingExceptPermissionsValidation(permissions: NgxPermissionsRouterData, route: any, state: any) {\n if (!!permissions.redirectTo && (isFunction(permissions.redirectTo) ||\n (isPlainObject(permissions.redirectTo) && !this.isRedirectionWithParameters(permissions.redirectTo)))) {\n let failedPermission = '';\n\n return from(permissions.except as any[]).pipe(\n mergeMap((data) => {\n return forkJoin([\n this.permissionsService.hasPermission(data),\n this.rolesService.hasOnlyRoles(data)\n ]).pipe(tap((hasPermissions: boolean[]) => {\n const dontHavePermissions = hasPermissions.every((_data) => _data === false);\n\n if (!dontHavePermissions) {\n failedPermission = data;\n }\n }));\n }),\n first((data: any) => data.some((_data: boolean) => _data === true), false),\n mergeMap((isAllFalse) => {\n if (!!failedPermission) {\n this.handleRedirectOfFailedPermission(permissions, failedPermission, route, state);\n\n return of(false);\n }\n\n if (!isAllFalse && permissions.only) {\n return this.onlyRedirectCheck(permissions, route, state);\n }\n\n return of(!isAllFalse);\n })\n ).toPromise();\n }\n\n return Promise.all([\n this.permissionsService.hasPermission(permissions.except),\n this.rolesService.hasOnlyRoles(permissions.except)\n ]).then(([permissionsPr, roles]) => {\n if (permissionsPr || roles) {\n if (permissions.redirectTo) {\n this.redirectToAnotherRoute(permissions.redirectTo, route, state);\n return false;\n } else {\n return false;\n }\n } else {\n if (permissions.only) {\n return this.checkOnlyPermissions(permissions, route, state);\n }\n return true;\n }\n });\n }\n\n private redirectToAnotherRoute(\n redirectTo: string | any[] | NgxRedirectToNavigationParameters | Function,\n route: ActivatedRouteSnapshot | Route,\n state?: RouterStateSnapshot,\n failedPermissionName?: string\n ) {\n if (isFunction(redirectTo)) {\n redirectTo = (redirectTo as Function)(failedPermissionName, route, state);\n }\n\n if (this.isRedirectionWithParameters(redirectTo)) {\n if (this.hasNavigationExtrasAsFunction(redirectTo)) {\n (redirectTo).navigationExtras =\n ((redirectTo).navigationExtras as Function)(\n route,\n state\n );\n }\n\n if (this.hasNavigationCommandsAsFunction(redirectTo)) {\n (redirectTo).navigationCommands =\n ((redirectTo).navigationCommands as Function)(\n route,\n state\n );\n }\n\n this.router.navigate(\n ((redirectTo).navigationCommands as any[]),\n ((redirectTo).navigationExtras as NavigationExtras)\n );\n\n return;\n }\n\n if (Array.isArray(redirectTo)) {\n this.router.navigate(redirectTo);\n } else {\n this.router.navigate([redirectTo]);\n }\n }\n\n private isRedirectionWithParameters(object: any | NgxRedirectToNavigationParameters): boolean {\n return isPlainObject(object) && (!!object.navigationCommands || !!object.navigationExtras);\n }\n\n private hasNavigationExtrasAsFunction(redirectTo: any): boolean {\n return !!(redirectTo).navigationExtras &&\n isFunction((redirectTo).navigationExtras);\n }\n\n private hasNavigationCommandsAsFunction(redirectTo: any): boolean {\n return !!(redirectTo).navigationCommands &&\n isFunction((redirectTo).navigationCommands);\n }\n\n private onlyRedirectCheck(permissions: any, route: ActivatedRouteSnapshot | Route, state?: RouterStateSnapshot): Promise {\n let failedPermission = '';\n\n return from(permissions.only).pipe(\n mergeMap((data: any) => {\n return forkJoin([\n this.permissionsService.hasPermission(data),\n this.rolesService.hasOnlyRoles(data)\n ]).pipe(\n tap((hasPermission: boolean[]) => {\n const failed = hasPermission.every((_data) => _data === false);\n\n if (failed) {\n failedPermission = data;\n }\n })\n );\n }),\n first(\n (data: any) => {\n if (isFunction(permissions.redirectTo)) {\n return data.some((_data: boolean) => _data === true);\n }\n\n return data.every((_data: boolean) => _data === false);\n },\n false\n ),\n mergeMap((pass: boolean): Observable => {\n if (isFunction(permissions.redirectTo)) {\n if (pass) {\n return of(true);\n } else {\n this.handleRedirectOfFailedPermission(permissions, failedPermission, route, state);\n return of(false);\n }\n } else {\n if (!!failedPermission) {\n this.handleRedirectOfFailedPermission(permissions, failedPermission, route, state);\n }\n return of(!pass);\n }\n })\n ).toPromise();\n }\n\n private handleRedirectOfFailedPermission(\n permissions: any,\n failedPermission: string,\n route: ActivatedRouteSnapshot | Route,\n state?: RouterStateSnapshot\n ) {\n if (this.isFailedPermissionPropertyOfRedirectTo(permissions, failedPermission)) {\n this.redirectToAnotherRoute((permissions.redirectTo)[failedPermission], route, state, failedPermission);\n } else {\n if (isFunction(permissions.redirectTo)) {\n this.redirectToAnotherRoute((permissions.redirectTo), route, state, failedPermission);\n } else {\n this.redirectToAnotherRoute((permissions.redirectTo)['default'], route, state, failedPermission);\n }\n }\n }\n\n private isFailedPermissionPropertyOfRedirectTo(permissions: any, failedPermission: string) {\n return !!permissions.redirectTo && permissions.redirectTo[failedPermission];\n }\n\n private checkOnlyPermissions(purePermissions: any, route: ActivatedRouteSnapshot | Route, state?: RouterStateSnapshot) {\n let permissions: NgxPermissionsRouterData = {\n ...purePermissions\n };\n\n return Promise.all([\n this.permissionsService.hasPermission(permissions.only),\n this.rolesService.hasOnlyRoles(permissions.only)\n ]).then(([permissionsPr, roles]) => {\n if (permissionsPr || roles) {\n return true;\n } else {\n if (permissions.redirectTo) {\n this.redirectToAnotherRoute(permissions.redirectTo, route, state);\n return false;\n } else {\n return false;\n }\n }\n });\n }\n\n private passingOnlyPermissionsValidation(\n permissions: NgxPermissionsRouterData, route: ActivatedRouteSnapshot | Route, state?: RouterStateSnapshot) {\n if ((isFunction(permissions.redirectTo) ||\n isPlainObject(permissions.redirectTo) && !this.isRedirectionWithParameters(permissions.redirectTo))) {\n return this.onlyRedirectCheck(permissions, route, state);\n }\n return this.checkOnlyPermissions(permissions, route, state);\n }\n\n}\n\n \n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"/injectables/NgxPermissionsService.html":{"url":"/injectables/NgxPermissionsService.html","title":"injectable - NgxPermissionsService","body":"\n \n\n\n\n\n\n Injectables\n NgxPermissionsService\n\n\n\n \n Infos\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/ngx-permissions/src/lib/service/permissions.service.ts\n \n\n\n \n Constructor\n \n \n \n \n constructor(isolate: boolean, permissionsStore: any)\n \n \n \n \n Defined in projects/ngx-permissions/src/lib/service/permissions.service.ts:19\n \n \n \n \n \n \n\n \n \n \n Methods\n \n \n \n \n \n Public flushPermissions\n \n \n \n \n \n flushPermissions()\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/service/permissions.service.ts:32\n \n \n \n \n \n Remove all permissions from permissions source\n \n \n \n Returns : void\n \n \n \n \n \n \n \n \n \n \n Public hasPermission\n \n \n \n \n \n hasPermission(permission: string | {})\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/service/permissions.service.ts:36\n \n \n \n \n \n \n \n Returns : any\n \n \n \n \n \n \n \n \n \n \n Public loadPermissions\n \n \n \n \n \n loadPermissions(permissions: {}, validationFunction: any)\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/service/permissions.service.ts:45\n \n \n \n \n \n \n \n Returns : void\n \n \n \n \n \n \n \n \n \n \n Public addPermission\n \n \n \n \n \n addPermission(permission: string | {}, validationFunction: any)\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/service/permissions.service.ts:53\n \n \n \n \n \n \n \n Returns : void\n \n \n \n \n \n \n \n \n \n \n Public removePermission\n \n \n \n \n \n removePermission(permissionName: string)\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/service/permissions.service.ts:67\n \n \n \n \n \n \n \n Returns : void\n \n \n \n \n \n \n \n \n \n \n Public getPermission\n \n \n \n \n \n getPermission(name: string)\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/service/permissions.service.ts:75\n \n \n \n \n \n \n \n Returns : any\n \n \n \n \n \n \n \n \n \n \n Public getPermissions\n \n \n \n \n \n getPermissions()\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/service/permissions.service.ts:79\n \n \n \n \n \n \n \n Returns : NgxPermissionsObject\n \n \n \n \n \n \n \n \n \n \n Private reducePermission\n \n \n \n \n \n reducePermission(source: NgxPermissionsObject, name: string, validationFunction: any)\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/service/permissions.service.ts:83\n \n \n \n \n \n \n \n Returns : NgxPermissionsObject\n \n \n \n \n \n \n \n \n \n \n Private hasArrayPermission\n \n \n \n \n \n hasArrayPermission(permissions: {})\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/service/permissions.service.ts:101\n \n \n \n \n \n \n \n Returns : any\n \n \n \n \n \n \n \n \n \n \n Private hasPermissionValidationFunction\n \n \n \n \n \n hasPermissionValidationFunction(key: string)\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/service/permissions.service.ts:126\n \n \n \n \n \n \n \n Returns : boolean\n \n \n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n Public permissions$\n \n \n \n \n permissions$: any\n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/service/permissions.service.ts:19\n \n \n \n \n \n \n \n \n Private permissionsSource\n \n \n \n \n permissionsSource: any\n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/service/permissions.service.ts:18\n \n \n \n \n \n \n \n import { Inject, Injectable, InjectionToken } from '@angular/core';\n\nimport { BehaviorSubject, from, Observable, ObservableInput, of } from 'rxjs';\nimport { catchError, first, map, mergeAll, switchMap, tap } from 'rxjs/operators';\n\nimport { NgxPermission } from '../model/permission.model';\nimport { NgxPermissionsStore } from '../store/permissions.store';\n\nimport { isBoolean, isFunction, transformStringToArray } from '../utils/utils';\n\nexport type NgxPermissionsObject = { [ name: string ]: NgxPermission };\n\nexport const USE_PERMISSIONS_STORE = new InjectionToken('USE_PERMISSIONS_STORE');\n\n@Injectable()\nexport class NgxPermissionsService {\n\n private permissionsSource: BehaviorSubject;\n public permissions$: Observable;\n\n constructor(\n @Inject(USE_PERMISSIONS_STORE) private isolate: boolean = false,\n private permissionsStore: NgxPermissionsStore\n ) {\n this.permissionsSource = isolate ? new BehaviorSubject({}) : permissionsStore.permissionsSource;\n this.permissions$ = this.permissionsSource.asObservable();\n }\n\n /**\n * Remove all permissions from permissions source\n */\n public flushPermissions(): void {\n this.permissionsSource.next({});\n }\n\n public hasPermission(permission: string | string[]): Promise {\n if (!permission || (Array.isArray(permission) && permission.length === 0)) {\n return Promise.resolve(true);\n }\n\n permission = transformStringToArray(permission);\n return this.hasArrayPermission(permission);\n }\n\n public loadPermissions(permissions: string[], validationFunction?: Function): void {\n const newPermissions = permissions.reduce((source, p) =>\n this.reducePermission(source, p, validationFunction)\n , {});\n\n this.permissionsSource.next(newPermissions);\n }\n\n public addPermission(permission: string | string[], validationFunction?: Function): void {\n if (Array.isArray(permission)) {\n const permissions = permission.reduce((source, p) =>\n this.reducePermission(source, p, validationFunction)\n , this.permissionsSource.value);\n\n this.permissionsSource.next(permissions);\n } else {\n const permissions = this.reducePermission(this.permissionsSource.value, permission, validationFunction);\n\n this.permissionsSource.next(permissions);\n }\n }\n\n public removePermission(permissionName: string): void {\n const permissions = {\n ...this.permissionsSource.value\n };\n delete permissions[ permissionName ];\n this.permissionsSource.next(permissions);\n }\n\n public getPermission(name: string): NgxPermission {\n return this.permissionsSource.value[ name ];\n }\n\n public getPermissions(): NgxPermissionsObject {\n return this.permissionsSource.value;\n }\n\n private reducePermission(\n source: NgxPermissionsObject,\n name: string,\n validationFunction?: Function\n ): NgxPermissionsObject {\n if (!!validationFunction && isFunction(validationFunction)) {\n return {\n ...source,\n [ name ]: { name, validationFunction }\n };\n } else {\n return {\n ...source,\n [ name ]: { name }\n };\n }\n }\n\n private hasArrayPermission(permissions: string[]): Promise {\n const promises: Observable[] = permissions.map((key) => {\n if (this.hasPermissionValidationFunction(key)) {\n const immutableValue = { ...this.permissionsSource.value };\n const validationFunction: Function = this.permissionsSource.value[ key ].validationFunction;\n\n return of(null).pipe(\n map(() => validationFunction(key, immutableValue)),\n switchMap((promise: Promise | boolean): ObservableInput => isBoolean(promise) ?\n of(promise as boolean) : promise as Promise),\n catchError(() => of(false))\n );\n }\n\n // check for name of the permission if there is no validation function\n return of(!!this.permissionsSource.value[ key ]);\n });\n\n return from(promises).pipe(\n mergeAll(),\n first((data) => data !== false, false),\n map((data) => data === false ? false : true)\n ).toPromise().then((data: any) => data);\n }\n\n private hasPermissionValidationFunction(key: string): boolean {\n return !!this.permissionsSource.value[ key ] &&\n !!this.permissionsSource.value[ key ].validationFunction &&\n isFunction(this.permissionsSource.value[ key ].validationFunction);\n }\n\n}\n\n \n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"/injectables/NgxPermissionsStore.html":{"url":"/injectables/NgxPermissionsStore.html","title":"injectable - NgxPermissionsStore","body":"\n \n\n\n\n\n\n Injectables\n NgxPermissionsStore\n\n\n\n \n Infos\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/ngx-permissions/src/lib/store/permissions.store.ts\n \n\n\n \n Constructor\n \n \n \n \n constructor()\n \n \n \n \n Defined in projects/ngx-permissions/src/lib/store/permissions.store.ts:8\n \n \n \n \n \n \n\n\n \n \n \n Properties\n \n \n \n \n \n Public permissions$\n \n \n \n \n permissions$: any\n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/store/permissions.store.ts:8\n \n \n \n \n \n \n \n \n Public permissionsSource\n \n \n \n \n permissionsSource: any\n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/store/permissions.store.ts:7\n \n \n \n \n \n \n \n import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n@Injectable()\nexport class NgxPermissionsStore {\n\n public permissionsSource = new BehaviorSubject({});\n public permissions$: Observable = this.permissionsSource.asObservable();\n\n constructor() {\n }\n\n}\n\n \n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"/injectables/NgxRolesService.html":{"url":"/injectables/NgxRolesService.html","title":"injectable - NgxRolesService","body":"\n \n\n\n\n\n\n Injectables\n NgxRolesService\n\n\n\n \n Infos\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/ngx-permissions/src/lib/service/roles.service.ts\n \n\n\n \n Constructor\n \n \n \n \n constructor(isolate: boolean, rolesStore: any, permissionsService: any)\n \n \n \n \n Defined in projects/ngx-permissions/src/lib/service/roles.service.ts:18\n \n \n \n \n \n \n\n \n \n \n Methods\n \n \n \n \n \n Public addRole\n \n \n \n \n \n addRole(name: string, validationFunction: any)\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/service/roles.service.ts:29\n \n \n \n \n \n \n \n Returns : void\n \n \n \n \n \n \n \n \n \n \n Public addRoles\n \n \n \n \n \n addRoles(rolesObj: { [name: string]: any; })\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/service/roles.service.ts:37\n \n \n \n \n \n \n \n Returns : void\n \n \n \n \n \n \n \n \n \n \n Public flushRoles\n \n \n \n \n \n flushRoles()\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/service/roles.service.ts:43\n \n \n \n \n \n \n \n Returns : void\n \n \n \n \n \n \n \n \n \n \n Public removeRole\n \n \n \n \n \n removeRole(roleName: string)\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/service/roles.service.ts:47\n \n \n \n \n \n \n \n Returns : void\n \n \n \n \n \n \n \n \n \n \n Public getRoles\n \n \n \n \n \n getRoles()\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/service/roles.service.ts:55\n \n \n \n \n \n \n \n Returns : void\n \n \n \n \n \n \n \n \n \n \n Public getRole\n \n \n \n \n \n getRole(name: string)\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/service/roles.service.ts:59\n \n \n \n \n \n \n \n Returns : void\n \n \n \n \n \n \n \n \n \n \n Public hasOnlyRoles\n \n \n \n \n \n hasOnlyRoles(names: string | {})\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/service/roles.service.ts:63\n \n \n \n \n \n \n \n Returns : any\n \n \n \n \n \n \n \n \n \n \n Private hasRoleKey\n \n \n \n \n \n hasRoleKey(roleName: {})\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/service/roles.service.ts:76\n \n \n \n \n \n \n \n Returns : any\n \n \n \n \n \n \n \n \n \n \n Private hasRolePermission\n \n \n \n \n \n hasRolePermission(roles: NgxRolesObject, roleNames: {})\n \n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/service/roles.service.ts:104\n \n \n \n \n \n \n \n Returns : any\n \n \n \n \n \n \n \n\n \n \n \n Properties\n \n \n \n \n \n Public roles$\n \n \n \n \n roles$: any\n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/service/roles.service.ts:18\n \n \n \n \n \n \n \n \n Private rolesSource\n \n \n \n \n rolesSource: any\n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/service/roles.service.ts:16\n \n \n \n \n \n \n \n import { Inject, Injectable, InjectionToken } from '@angular/core';\nimport { BehaviorSubject, Observable, ObservableInput, from, of } from 'rxjs';\nimport { catchError, every, first, map, mergeAll, mergeMap, switchMap } from 'rxjs/operators';\nimport { NgxRole } from '../model/role.model';\nimport { NgxRolesStore } from '../store/roles.store';\nimport { isBoolean, isFunction, isPromise, transformStringToArray } from '../utils/utils';\nimport { NgxPermissionsService } from './permissions.service';\n\nexport const USE_ROLES_STORE = new InjectionToken('USE_ROLES_STORE');\n\nexport type NgxRolesObject = { [name: string]: NgxRole };\n\n@Injectable()\nexport class NgxRolesService {\n\n private rolesSource: BehaviorSubject;\n\n public roles$: Observable;\n\n constructor(\n @Inject(USE_ROLES_STORE) private isolate: boolean = false,\n private rolesStore: NgxRolesStore,\n private permissionsService: NgxPermissionsService\n ) {\n this.rolesSource = this.isolate ? new BehaviorSubject({}) : this.rolesStore.rolesSource;\n this.roles$ = this.rolesSource.asObservable();\n }\n\n public addRole(name: string, validationFunction: Function | string[]) {\n const roles = {\n ...this.rolesSource.value,\n [name]: { name, validationFunction }\n };\n this.rolesSource.next(roles);\n }\n\n public addRoles(rolesObj: { [name: string]: Function | string[] }) {\n Object.keys(rolesObj).forEach((key, index) => {\n this.addRole(key, rolesObj[key]);\n });\n }\n\n public flushRoles() {\n this.rolesSource.next({});\n }\n\n public removeRole(roleName: string) {\n let roles = {\n ...this.rolesSource.value\n };\n delete roles[roleName];\n this.rolesSource.next(roles);\n }\n\n public getRoles() {\n return this.rolesSource.value;\n }\n\n public getRole(name: string) {\n return this.rolesSource.value[name];\n }\n\n public hasOnlyRoles(names: string | string[]): Promise {\n if (!names || (Array.isArray(names) && names.length === 0)) {\n return Promise.resolve(true);\n }\n\n names = transformStringToArray(names);\n\n return Promise.all([this.hasRoleKey(names), this.hasRolePermission(this.rolesSource.value, names)])\n .then(([hasRoles, hasPermissions]: [boolean, boolean]) => {\n return hasRoles || hasPermissions;\n });\n }\n\n private hasRoleKey(roleName: string[]): Promise {\n const promises: Observable[] = roleName.map((key) => {\n if (\n !!this.rolesSource.value[key] &&\n !!this.rolesSource.value[key].validationFunction &&\n isFunction(this.rolesSource.value[key].validationFunction) &&\n !isPromise(this.rolesSource.value[key].validationFunction)\n ) {\n const validationFunction: Function = this.rolesSource.value[key].validationFunction;\n\n return of(null).pipe(\n map(() => validationFunction()),\n switchMap((promise: Promise | boolean): ObservableInput => isBoolean(promise) ?\n of(promise as boolean) : promise as Promise),\n catchError(() => of(false))\n );\n }\n\n return of(false);\n });\n\n return from(promises).pipe(\n mergeAll(),\n first((data: any) => data !== false, false),\n map((data) => data === false ? false : true)\n ).toPromise().then((data: any) => data);\n }\n\n private hasRolePermission(roles: NgxRolesObject, roleNames: string[]): Promise {\n return from(roleNames).pipe(\n mergeMap((key) => {\n if (roles[key] && Array.isArray(roles[key].validationFunction)) {\n return from(roles[key].validationFunction).pipe(\n mergeMap((permission) => this.permissionsService.hasPermission(permission)),\n every((hasPermissions) => hasPermissions === true)\n );\n }\n\n return of(false);\n }),\n first((hasPermission) => hasPermission === true, false)\n ).toPromise();\n }\n\n}\n\n \n\n\n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"/classes/AppPage.html":{"url":"/classes/AppPage.html","title":"class - AppPage","body":"\n \n\n\n\n\n\n\n\n Classes\n AppPage\n\n\n\n \n Infos\n \n \n Source\n \n\n\n\n \n \n File\n \n \n e2e/src/app.po.ts\n \n\n\n\n\n\n \n \n \n Methods\n \n \n \n \n \n navigateTo\n \n \n \n \n navigateTo()\n \n \n \n \n \n \n Defined in e2e/src/app.po.ts:4\n \n \n \n \n \n \n \n Returns : void\n \n \n \n \n \n \n \n \n \n \n getParagraphText\n \n \n \n \n getParagraphText()\n \n \n \n \n \n \n Defined in e2e/src/app.po.ts:8\n \n \n \n \n \n \n \n Returns : void\n \n \n \n \n \n \n \n\n\n \n \n import { browser, by, element } from 'protractor';\n\nexport class AppPage {\n navigateTo() {\n return browser.get('/');\n }\n\n getParagraphText() {\n return element(by.css('app-root h1')).getText();\n }\n}\n\n \n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"/classes/NgxPermission.html":{"url":"/classes/NgxPermission.html","title":"class - NgxPermission","body":"\n \n\n\n\n\n\n\n\n Classes\n NgxPermission\n\n\n\n \n Infos\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/ngx-permissions/src/lib/model/permission.model.ts\n \n\n\n\n\n \n Constructor\n \n \n \n \n constructor(name: string, validationFunction: any)\n \n \n \n \n Defined in projects/ngx-permissions/src/lib/model/permission.model.ts:3\n \n \n \n \n \n \n\n\n\n \n \n \n Properties\n \n \n \n \n \n name\n \n \n \n \n name: string\n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/model/permission.model.ts:2\n \n \n \n \n \n \n \n \n validationFunction\n \n \n \n \n validationFunction: any\n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/model/permission.model.ts:3\n \n \n \n \n \n \n \n export class NgxPermission {\n name: string;\n validationFunction?: Function;\n\n constructor(name: string, validationFunction: Function) {\n this.name = name;\n this.validationFunction = validationFunction;\n }\n\n}\n\n \n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"/classes/NgxRole.html":{"url":"/classes/NgxRole.html","title":"class - NgxRole","body":"\n \n\n\n\n\n\n\n\n Classes\n NgxRole\n\n\n\n \n Infos\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/ngx-permissions/src/lib/model/role.model.ts\n \n\n\n\n\n \n Constructor\n \n \n \n \n constructor(name: string, validationFunction: any)\n \n \n \n \n Defined in projects/ngx-permissions/src/lib/model/role.model.ts:3\n \n \n \n \n \n \n\n\n\n \n \n \n Properties\n \n \n \n \n \n name\n \n \n \n \n name: string\n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/model/role.model.ts:2\n \n \n \n \n \n \n \n \n validationFunction\n \n \n \n \n validationFunction: any\n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/model/role.model.ts:3\n \n \n \n \n \n \n \n export class NgxRole {\n name: string;\n validationFunction: Function | string[];\n\n constructor(name: string, validationFunction: Function | string[]) {\n this.name = name;\n this.validationFunction = validationFunction;\n }\n}\n\n \n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"/classes/NgxRolesStore.html":{"url":"/classes/NgxRolesStore.html","title":"class - NgxRolesStore","body":"\n \n\n\n\n\n\n\n\n Classes\n NgxRolesStore\n\n\n\n \n Infos\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/ngx-permissions/src/lib/store/roles.store.ts\n \n\n\n\n\n\n\n\n \n \n \n Properties\n \n \n \n \n \n Public roles$\n \n \n \n \n roles$: any\n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/store/roles.store.ts:7\n \n \n \n \n \n \n \n \n Public rolesSource\n \n \n \n \n rolesSource: any\n \n \n \n \n \n Defined in projects/ngx-permissions/src/lib/store/roles.store.ts:5\n \n \n \n \n \n \n \n import { BehaviorSubject, Observable } from 'rxjs';\n\nexport class NgxRolesStore {\n\n public rolesSource = new BehaviorSubject({});\n\n public roles$: Observable = this.rolesSource.asObservable();\n\n}\n\n \n\n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"/interfaces/NgxPermissionsModuleConfig.html":{"url":"/interfaces/NgxPermissionsModuleConfig.html","title":"interface - NgxPermissionsModuleConfig","body":"\n \n\n\n\n\n\n\n\n\n Interfaces\n NgxPermissionsModuleConfig\n\n\n\n \n Infos\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/ngx-permissions/src/lib/index.ts\n \n\n\n\n\n\n \n Properties\n \n \n \n \n configurationIsolate\n \n \n \n \n configurationIsolate: boolean\n\n \n \n\n\n \n \n Type : boolean\n\n \n \n\n\n\n \n \n Defined in projects/ngx-permissions/src/lib/index.ts:37\n \n \n\n \n \n \n \n \n \n permissionsIsolate\n \n \n \n \n permissionsIsolate: boolean\n\n \n \n\n\n \n \n Type : boolean\n\n \n \n\n\n\n \n \n Defined in projects/ngx-permissions/src/lib/index.ts:36\n \n \n\n \n \n \n \n \n \n rolesIsolate\n \n \n \n \n rolesIsolate: boolean\n\n \n \n\n\n \n \n Type : boolean\n\n \n \n\n\n\n \n \n Defined in projects/ngx-permissions/src/lib/index.ts:35\n \n \n\n \n \n \n \n \n import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { NgxPermissionsDirective } from './directive/permissions.directive';\nimport { NgxPermissionsGuard } from './router/permissions-guard.service';\nimport { NgxPermissionsConfigurationService, USE_CONFIGURATION_STORE } from './service/configuration.service';\nimport { NgxPermissionsService, USE_PERMISSIONS_STORE } from './service/permissions.service';\nimport { NgxRolesService, USE_ROLES_STORE } from './service/roles.service';\nimport { NgxPermissionsConfigurationStore } from './store/configuration.store';\nimport { NgxPermissionsStore } from './store/permissions.store';\nimport { NgxRolesStore } from './store/roles.store';\nimport { NgxPermissionsAllowStubDirective } from './testing/permissions-allow.directive.stub';\nimport { NgxPermissionsRestrictStubDirective } from './testing/permissions-restrict.directive.stub';\n\nexport * from './store/roles.store';\nexport * from './store/permissions.store';\nexport * from './store/configuration.store';\n\nexport * from './directive/permissions.directive';\n\nexport * from './service/permissions.service';\nexport * from './service/roles.service';\nexport * from './service/configuration.service';\n\nexport * from './router/permissions-guard.service';\n\nexport * from './model/permissions-router-data.model';\nexport * from './model/role.model';\n\nexport * from './testing/permissions-allow.directive.stub';\nexport * from './testing/permissions-restrict.directive.stub';\n\nexport * from './enums/predefined-strategies.enum';\n\nexport interface NgxPermissionsModuleConfig {\n // isolate the service instance, only works for lazy loaded modules or components with the \"providers\" property\n rolesIsolate?: boolean;\n permissionsIsolate?: boolean;\n configurationIsolate?: boolean;\n}\n\n\n@NgModule({\n imports: [],\n declarations: [\n NgxPermissionsDirective\n ],\n exports: [\n NgxPermissionsDirective\n ]\n})\nexport class NgxPermissionsModule {\n static forRoot(config: NgxPermissionsModuleConfig = {}): ModuleWithProviders {\n return {\n ngModule: NgxPermissionsModule,\n providers: [\n NgxPermissionsStore,\n NgxRolesStore,\n NgxPermissionsConfigurationStore,\n NgxPermissionsService,\n NgxPermissionsGuard,\n NgxRolesService,\n NgxPermissionsConfigurationService,\n { provide: USE_PERMISSIONS_STORE, useValue: config.permissionsIsolate },\n { provide: USE_ROLES_STORE, useValue: config.rolesIsolate },\n { provide: USE_CONFIGURATION_STORE, useValue: config.configurationIsolate },\n ]\n };\n }\n\n static forChild(config: NgxPermissionsModuleConfig = {}): ModuleWithProviders {\n return {\n ngModule: NgxPermissionsModule,\n providers: [\n { provide: USE_PERMISSIONS_STORE, useValue: config.permissionsIsolate },\n { provide: USE_ROLES_STORE, useValue: config.rolesIsolate },\n { provide: USE_CONFIGURATION_STORE, useValue: config.configurationIsolate },\n NgxPermissionsConfigurationService,\n NgxPermissionsService,\n NgxRolesService,\n NgxPermissionsGuard\n ]\n };\n }\n}\n\n@NgModule({\n imports: [],\n declarations: [\n NgxPermissionsAllowStubDirective\n ],\n exports: [\n NgxPermissionsAllowStubDirective\n ]\n})\nexport class NgxPermissionsAllowStubModule {\n}\n\n\n@NgModule({\n imports: [],\n declarations: [\n NgxPermissionsRestrictStubDirective\n ],\n exports: [\n NgxPermissionsRestrictStubDirective\n ]\n})\nexport class NgxPermissionsRestrictStubModule {\n}\n\n\n\n \n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"/interfaces/NgxPermissionsRouterData.html":{"url":"/interfaces/NgxPermissionsRouterData.html","title":"interface - NgxPermissionsRouterData","body":"\n \n\n\n\n\n\n\n\n\n Interfaces\n NgxPermissionsRouterData\n\n\n\n \n Infos\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/ngx-permissions/src/lib/model/permissions-router-data.model.ts\n \n\n\n\n\n\n \n Properties\n \n \n \n \n except\n \n \n \n \n except: any\n\n \n \n\n\n \n \n Type : any\n\n \n \n\n\n\n \n \n Defined in projects/ngx-permissions/src/lib/model/permissions-router-data.model.ts:3\n \n \n\n \n \n \n \n \n \n only\n \n \n \n \n only: any\n\n \n \n\n\n \n \n Type : any\n\n \n \n\n\n\n \n \n Defined in projects/ngx-permissions/src/lib/model/permissions-router-data.model.ts:2\n \n \n\n \n \n \n \n \n \n redirectTo\n \n \n \n \n redirectTo: string\n\n \n \n\n\n \n \n Type : string\n\n \n \n\n\n\n \n \n Defined in projects/ngx-permissions/src/lib/model/permissions-router-data.model.ts:4\n \n \n\n \n \n \n \n \n export interface NgxPermissionsRouterData {\n only?: string | string[] | Function;\n except?: string | string[] | Function;\n redirectTo?: string;\n}\n\n \n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"/interfaces/NgxRedirectToNavigationParameters.html":{"url":"/interfaces/NgxRedirectToNavigationParameters.html","title":"interface - NgxRedirectToNavigationParameters","body":"\n \n\n\n\n\n\n\n\n\n Interfaces\n NgxRedirectToNavigationParameters\n\n\n\n \n Infos\n \n \n Source\n \n\n\n\n \n \n File\n \n \n projects/ngx-permissions/src/lib/router/permissions-guard.service.ts\n \n\n\n\n\n\n \n Properties\n \n \n \n \n navigationCommands\n \n \n \n \n navigationCommands: any\n\n \n \n\n\n \n \n Type : any\n\n \n \n\n\n\n \n \n Defined in projects/ngx-permissions/src/lib/router/permissions-guard.service.ts:24\n \n \n\n \n \n \n \n \n \n navigationExtras\n \n \n \n \n navigationExtras: any\n\n \n \n\n\n \n \n Type : any\n\n \n \n\n\n\n \n \n Defined in projects/ngx-permissions/src/lib/router/permissions-guard.service.ts:25\n \n \n\n \n \n \n \n \n import { Injectable } from '@angular/core';\nimport {\n ActivatedRouteSnapshot,\n CanActivate,\n CanActivateChild,\n CanLoad,\n NavigationExtras,\n Route,\n Router,\n RouterStateSnapshot,\n} from '@angular/router';\nimport { forkJoin, from, Observable, of } from 'rxjs';\nimport { first, mergeMap, tap } from 'rxjs/operators';\n\nimport { NgxPermissionsRouterData } from '../model/permissions-router-data.model';\nimport { NgxPermissionsService } from '../service/permissions.service';\nimport { NgxRolesService } from '../service/roles.service';\nimport { isFunction, isPlainObject, transformStringToArray } from '../utils/utils';\n\n\n\n\ninterface NgxRedirectToNavigationParameters {\n navigationCommands: any[] | Function;\n navigationExtras?: NavigationExtras | Function;\n}\n\n@Injectable()\nexport class NgxPermissionsGuard implements CanActivate, CanLoad, CanActivateChild {\n\n constructor(private permissionsService: NgxPermissionsService, private rolesService: NgxRolesService, private router: Router) {\n }\n\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise | boolean {\n return this.hasPermissions(route, state);\n }\n\n canActivateChild(childRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable | Promise | boolean {\n return this.hasPermissions(childRoute, state);\n }\n\n canLoad(route: Route): boolean | Observable | Promise {\n return this.hasPermissions(route);\n }\n\n private hasPermissions(route: ActivatedRouteSnapshot | Route, state?: RouterStateSnapshot) {\n const purePermissions = !!route && route.data ? route.data['permissions'] as NgxPermissionsRouterData : {};\n let permissions: NgxPermissionsRouterData = this.transformPermission(purePermissions, route, state);\n\n if (this.isParameterAvailable(permissions.except)) {\n return this.passingExceptPermissionsValidation(permissions, route, state);\n }\n\n if (this.isParameterAvailable(permissions.only)) {\n return this.passingOnlyPermissionsValidation(permissions, route, state);\n }\n\n return true;\n }\n\n private transformPermission(purePermissions: NgxPermissionsRouterData, route: any, state: any): any {\n let permissions = {\n ...purePermissions\n };\n\n if (isFunction(permissions.except)) {\n permissions.except = (permissions.except as Function)(route, state);\n }\n\n if (isFunction(permissions.only)) {\n permissions.only = (permissions.only as Function)(route, state);\n }\n\n permissions.except = transformStringToArray(permissions.except);\n permissions.only = transformStringToArray(permissions.only);\n\n return permissions;\n }\n\n private isParameterAvailable(permission: any) {\n return !!(permission) && permission.length > 0;\n }\n\n private passingExceptPermissionsValidation(permissions: NgxPermissionsRouterData, route: any, state: any) {\n if (!!permissions.redirectTo && (isFunction(permissions.redirectTo) ||\n (isPlainObject(permissions.redirectTo) && !this.isRedirectionWithParameters(permissions.redirectTo)))) {\n let failedPermission = '';\n\n return from(permissions.except as any[]).pipe(\n mergeMap((data) => {\n return forkJoin([\n this.permissionsService.hasPermission(data),\n this.rolesService.hasOnlyRoles(data)\n ]).pipe(tap((hasPermissions: boolean[]) => {\n const dontHavePermissions = hasPermissions.every((_data) => _data === false);\n\n if (!dontHavePermissions) {\n failedPermission = data;\n }\n }));\n }),\n first((data: any) => data.some((_data: boolean) => _data === true), false),\n mergeMap((isAllFalse) => {\n if (!!failedPermission) {\n this.handleRedirectOfFailedPermission(permissions, failedPermission, route, state);\n\n return of(false);\n }\n\n if (!isAllFalse && permissions.only) {\n return this.onlyRedirectCheck(permissions, route, state);\n }\n\n return of(!isAllFalse);\n })\n ).toPromise();\n }\n\n return Promise.all([\n this.permissionsService.hasPermission(permissions.except),\n this.rolesService.hasOnlyRoles(permissions.except)\n ]).then(([permissionsPr, roles]) => {\n if (permissionsPr || roles) {\n if (permissions.redirectTo) {\n this.redirectToAnotherRoute(permissions.redirectTo, route, state);\n return false;\n } else {\n return false;\n }\n } else {\n if (permissions.only) {\n return this.checkOnlyPermissions(permissions, route, state);\n }\n return true;\n }\n });\n }\n\n private redirectToAnotherRoute(\n redirectTo: string | any[] | NgxRedirectToNavigationParameters | Function,\n route: ActivatedRouteSnapshot | Route,\n state?: RouterStateSnapshot,\n failedPermissionName?: string\n ) {\n if (isFunction(redirectTo)) {\n redirectTo = (redirectTo as Function)(failedPermissionName, route, state);\n }\n\n if (this.isRedirectionWithParameters(redirectTo)) {\n if (this.hasNavigationExtrasAsFunction(redirectTo)) {\n (redirectTo).navigationExtras =\n ((redirectTo).navigationExtras as Function)(\n route,\n state\n );\n }\n\n if (this.hasNavigationCommandsAsFunction(redirectTo)) {\n (redirectTo).navigationCommands =\n ((redirectTo).navigationCommands as Function)(\n route,\n state\n );\n }\n\n this.router.navigate(\n ((redirectTo).navigationCommands as any[]),\n ((redirectTo).navigationExtras as NavigationExtras)\n );\n\n return;\n }\n\n if (Array.isArray(redirectTo)) {\n this.router.navigate(redirectTo);\n } else {\n this.router.navigate([redirectTo]);\n }\n }\n\n private isRedirectionWithParameters(object: any | NgxRedirectToNavigationParameters): boolean {\n return isPlainObject(object) && (!!object.navigationCommands || !!object.navigationExtras);\n }\n\n private hasNavigationExtrasAsFunction(redirectTo: any): boolean {\n return !!(redirectTo).navigationExtras &&\n isFunction((redirectTo).navigationExtras);\n }\n\n private hasNavigationCommandsAsFunction(redirectTo: any): boolean {\n return !!(redirectTo).navigationCommands &&\n isFunction((redirectTo).navigationCommands);\n }\n\n private onlyRedirectCheck(permissions: any, route: ActivatedRouteSnapshot | Route, state?: RouterStateSnapshot): Promise {\n let failedPermission = '';\n\n return from(permissions.only).pipe(\n mergeMap((data: any) => {\n return forkJoin([\n this.permissionsService.hasPermission(data),\n this.rolesService.hasOnlyRoles(data)\n ]).pipe(\n tap((hasPermission: boolean[]) => {\n const failed = hasPermission.every((_data) => _data === false);\n\n if (failed) {\n failedPermission = data;\n }\n })\n );\n }),\n first(\n (data: any) => {\n if (isFunction(permissions.redirectTo)) {\n return data.some((_data: boolean) => _data === true);\n }\n\n return data.every((_data: boolean) => _data === false);\n },\n false\n ),\n mergeMap((pass: boolean): Observable => {\n if (isFunction(permissions.redirectTo)) {\n if (pass) {\n return of(true);\n } else {\n this.handleRedirectOfFailedPermission(permissions, failedPermission, route, state);\n return of(false);\n }\n } else {\n if (!!failedPermission) {\n this.handleRedirectOfFailedPermission(permissions, failedPermission, route, state);\n }\n return of(!pass);\n }\n })\n ).toPromise();\n }\n\n private handleRedirectOfFailedPermission(\n permissions: any,\n failedPermission: string,\n route: ActivatedRouteSnapshot | Route,\n state?: RouterStateSnapshot\n ) {\n if (this.isFailedPermissionPropertyOfRedirectTo(permissions, failedPermission)) {\n this.redirectToAnotherRoute((permissions.redirectTo)[failedPermission], route, state, failedPermission);\n } else {\n if (isFunction(permissions.redirectTo)) {\n this.redirectToAnotherRoute((permissions.redirectTo), route, state, failedPermission);\n } else {\n this.redirectToAnotherRoute((permissions.redirectTo)['default'], route, state, failedPermission);\n }\n }\n }\n\n private isFailedPermissionPropertyOfRedirectTo(permissions: any, failedPermission: string) {\n return !!permissions.redirectTo && permissions.redirectTo[failedPermission];\n }\n\n private checkOnlyPermissions(purePermissions: any, route: ActivatedRouteSnapshot | Route, state?: RouterStateSnapshot) {\n let permissions: NgxPermissionsRouterData = {\n ...purePermissions\n };\n\n return Promise.all([\n this.permissionsService.hasPermission(permissions.only),\n this.rolesService.hasOnlyRoles(permissions.only)\n ]).then(([permissionsPr, roles]) => {\n if (permissionsPr || roles) {\n return true;\n } else {\n if (permissions.redirectTo) {\n this.redirectToAnotherRoute(permissions.redirectTo, route, state);\n return false;\n } else {\n return false;\n }\n }\n });\n }\n\n private passingOnlyPermissionsValidation(\n permissions: NgxPermissionsRouterData, route: ActivatedRouteSnapshot | Route, state?: RouterStateSnapshot) {\n if ((isFunction(permissions.redirectTo) ||\n isPlainObject(permissions.redirectTo) && !this.isRedirectionWithParameters(permissions.redirectTo))) {\n return this.onlyRedirectCheck(permissions, route, state);\n }\n return this.checkOnlyPermissions(permissions, route, state);\n }\n\n}\n\n \n\n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"/miscellaneous.html":{"url":"/miscellaneous.html","title":"miscellaneous - miscellaneous","body":"\n \n\n\n\n\n\n\n\n\n\n\n Miscellaneous\n\n\n Variables\n projects/ngx-permissions/src/lib/enums/predefined-strategies.enum.ts\n \n \n \n \n \n NgxPermissionsPredefinedStrategies\n \n \n \n \n NgxPermissionsPredefinedStrategies: \n \n \n \n \n \n \n projects/ngx-permissions/src/lib/service/configuration.service.ts\n \n \n \n \n \n USE_CONFIGURATION_STORE\n \n \n \n \n USE_CONFIGURATION_STORE: \n \n \n \n \n \n \n projects/ngx-permissions/src/lib/service/permissions.service.ts\n \n \n \n \n \n USE_PERMISSIONS_STORE\n \n \n \n \n USE_PERMISSIONS_STORE: \n \n \n \n \n \n \n projects/ngx-permissions/src/lib/service/roles.service.ts\n \n \n \n \n \n USE_ROLES_STORE\n \n \n \n \n USE_ROLES_STORE: \n \n \n \n \n \n \n projects/ngx-permissions/src/test.ts\n \n \n \n \n \n require\n \n \n \n \n require: any\n \n \n \n \n \n \n \n \n \n context\n \n \n \n \n context: \n \n \n \n \n \n \n src/environments/environment.prod.ts\n \n \n \n \n \n environment\n \n \n \n \n environment: \n \n \n \n \n \n \n src/environments/environment.ts\n \n \n \n \n \n environment\n \n \n \n \n environment: \n \n \n \n \n \n \n src/test.ts\n \n \n \n \n \n require\n \n \n \n \n require: any\n \n \n \n \n \n \n \n \n \n context\n \n \n \n \n context: \n \n \n \n \n \n \n\n Functions\n projects/ngx-permissions/src/lib/utils/utils.ts\n \n \n \n \n \n isFunction\n \n \n \n \n isFunction(functionToCheck: undefined)\n \n \n \n \n \n \n \n \n \n \n \n isPlainObject\n \n \n \n \n isPlainObject(value: undefined)\n \n \n \n \n \n \n \n \n \n \n \n isString\n \n \n \n \n isString(value: undefined)\n \n \n \n \n \n \n \n \n \n \n \n isBoolean\n \n \n \n \n isBoolean(value: undefined)\n \n \n \n \n \n \n \n \n \n \n \n isPromise\n \n \n \n \n isPromise(promise: undefined)\n \n \n \n \n \n \n \n \n \n \n \n notEmptyValue\n \n \n \n \n notEmptyValue(value: undefined)\n \n \n \n \n \n \n \n \n \n \n \n transformStringToArray\n \n \n \n \n transformStringToArray(value: undefined)\n \n \n \n \n \n \n \n \n\n\n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"},"/coverage.html":{"url":"/coverage.html","title":"coverage - coverage","body":"\n \n\n\n\n\n\n\n\n\n\n\n\n Documentation coverage\n\n\n\n\n\n \n \n File\n Type\n Identifier\n Statements\n \n \n \n \n \n e2e/src/app.po.ts\n \n \n class\n \n \n AppPage\n \n \n 33 %\n (1/3)\n \n \n \n \n projects/ngx-permissions/src/lib/index.ts\n \n \n interface\n \n \n NgxPermissionsModuleConfig\n \n \n 25 %\n (1/4)\n \n \n \n \n projects/ngx-permissions/src/lib/model/permission.model.ts\n \n \n class\n \n \n NgxPermission\n \n \n 25 %\n (1/4)\n \n \n \n \n projects/ngx-permissions/src/lib/model/permissions-router-data.model.ts\n \n \n interface\n \n \n NgxPermissionsRouterData\n \n \n 25 %\n (1/4)\n \n \n \n \n projects/ngx-permissions/src/lib/model/role.model.ts\n \n \n class\n \n \n NgxRole\n \n \n 25 %\n (1/4)\n \n \n \n \n projects/ngx-permissions/src/lib/router/permissions-guard.service.ts\n \n \n injectable\n \n \n NgxPermissionsGuard\n \n \n 0 %\n (0/18)\n \n \n \n \n projects/ngx-permissions/src/lib/router/permissions-guard.service.ts\n \n \n interface\n \n \n NgxRedirectToNavigationParameters\n \n \n 33 %\n (1/3)\n \n \n \n \n projects/ngx-permissions/src/lib/service/configuration.service.ts\n \n \n injectable\n \n \n NgxPermissionsConfigurationService\n \n \n 0 %\n (0/12)\n \n \n \n \n projects/ngx-permissions/src/lib/service/permissions.service.ts\n \n \n injectable\n \n \n NgxPermissionsService\n \n \n 7 %\n (1/14)\n \n \n \n \n projects/ngx-permissions/src/lib/service/roles.service.ts\n \n \n injectable\n \n \n NgxRolesService\n \n \n 0 %\n (0/13)\n \n \n \n \n projects/ngx-permissions/src/lib/store/configuration.store.ts\n \n \n injectable\n \n \n NgxPermissionsConfigurationStore\n \n \n 0 %\n (0/6)\n \n \n \n \n projects/ngx-permissions/src/lib/store/permissions.store.ts\n \n \n injectable\n \n \n NgxPermissionsStore\n \n \n 0 %\n (0/4)\n \n \n \n \n projects/ngx-permissions/src/lib/store/roles.store.ts\n \n \n class\n \n \n NgxRolesStore\n \n \n 33 %\n (1/3)\n \n \n \n \n src/app/app.component.ts\n \n \n component\n \n \n AppComponent\n \n \n 0 %\n (0/7)\n \n \n \n \n src/app/home/home.component.ts\n \n \n component\n \n \n HomeComponent\n \n \n 0 %\n (0/3)\n \n \n \n \n src/app/initial-load/initial-load.component.ts\n \n \n component\n \n \n InitialLoadComponent\n \n \n 0 %\n (0/3)\n \n \n \n \n src/app/lazy-isolate/isolate/isolate.component.ts\n \n \n component\n \n \n IsolateComponent\n \n \n 0 %\n (0/3)\n \n \n \n \n src/app/lazy-module/lazy-component/lazy-component.component.ts\n \n \n component\n \n \n LazyComponentComponent\n \n \n 0 %\n (0/3)\n \n \n \n \n src/app/lazy-role-isolate/lazy-role-isolate-test/lazy-role-isolate-test.component.ts\n \n \n component\n \n \n LazyRoleIsolateTestComponent\n \n \n 0 %\n (0/3)\n \n \n \n \n src/app/lazy-roles-async-isolate/async-test.service.ts\n \n \n injectable\n \n \n AsyncTestService\n \n \n 0 %\n (0/5)\n \n \n \n \n src/app/lazy-roles-async-isolate/lazy-roles-async-test/lazy-roles-async-test.component.ts\n \n \n component\n \n \n LazyRolesAsyncTestComponent\n \n \n 0 %\n (0/3)\n \n \n \n\n\n \n \n results matching \"\"\n \n \n \n No results matching \"\"\n \n\n"}} +} diff --git a/docs/js/sourceCode.js b/docs/js/sourceCode.js new file mode 100644 index 0000000..606a3fe --- /dev/null +++ b/docs/js/sourceCode.js @@ -0,0 +1,29 @@ +document.addEventListener('DOMContentLoaded', function() { + var $tabSource = document.querySelector('#source-tab'), + $prismPre = document.querySelector('pre'); + if ($prismPre) { + $prismCode = $prismPre.querySelector('code'), + $content = document.querySelector('.content'), + prismLinks = document.querySelectorAll('.link-to-prism') + + for (var i = 0; i < prismLinks.length; i++) { + prismLinks[i].addEventListener('click', linkToPrism, false); + } + + function linkToPrism(event) { + var targetLine = event.target.getAttribute('data-line'); + event.preventDefault(); + + $prismPre.setAttribute('data-line', targetLine); + Prism.highlightElement($prismCode, function() {}); + + $tabSource.click(); + + setTimeout(function() { + var $prismHighlightLine = document.querySelector('.line-highlight'), + top = parseInt(getComputedStyle($prismHighlightLine)['top']); + $content.scrollTop = top; + }, 500); + }; + } +}); diff --git a/docs/js/svg-pan-zoom.controls.js b/docs/js/svg-pan-zoom.controls.js new file mode 100644 index 0000000..1d88bd9 --- /dev/null +++ b/docs/js/svg-pan-zoom.controls.js @@ -0,0 +1,23 @@ +document.addEventListener('DOMContentLoaded', function() { + panZoom = svgPanZoom(document.getElementById('module-graph-svg').querySelector('svg'), { + zoomEnabled: true, + minZoom: 1, + maxZoom: 5 + }); + + document.getElementById('zoom-in').addEventListener('click', function(ev) { + ev.preventDefault(); + panZoom.zoomIn(); + }); + + document.getElementById('zoom-out').addEventListener('click', function(ev) { + ev.preventDefault(); + panZoom.zoomOut(); + }); + + document.getElementById('reset').addEventListener('click', function(ev) { + ev.preventDefault(); + panZoom.resetZoom(); + panZoom.resetPan(); + }); +}); diff --git a/docs/js/tabs.js b/docs/js/tabs.js new file mode 100644 index 0000000..dbe4c28 --- /dev/null +++ b/docs/js/tabs.js @@ -0,0 +1,21 @@ +document.addEventListener('DOMContentLoaded', function() { + var tabs = document.getElementsByClassName('nav-tabs'), + updateAddress = function(e) { + if(history.pushState && e.target.dataset.link) { + history.pushState(null, null, '#' + e.target.dataset.link); + } + }; + if (tabs.length > 0) { + tabs = tabs[0].querySelectorAll('li'); + for (var i = 0; i < tabs.length; i++) { + tabs[i].addEventListener('click', updateAddress); + var linkTag = tabs[i].querySelector('a'); + if (location.hash !== '') { + var currentHash = location.hash.substr(1); + if (currentHash === linkTag.dataset.link) { + linkTag.click(); + } + } + } + } +}); diff --git a/docs/js/tree.js b/docs/js/tree.js new file mode 100644 index 0000000..ea51573 --- /dev/null +++ b/docs/js/tree.js @@ -0,0 +1,132 @@ +document.addEventListener('DOMContentLoaded', function() { + var handler = new Tautologistics.NodeHtmlParser.HtmlBuilder(function(error, dom) { + if (error) { + console.log('handler ko'); + } + }), + parser = new Tautologistics.NodeHtmlParser.Parser(handler), + currentLocation = window.location; + parser.parseComplete(COMPONENT_TEMPLATE); + + var newNodes = [], + newEdges = [], + parsedHtml = handler.dom[0], + nodeCount = 0, + nodeLevel = 0; + + newNodes.push({ + _id: 0, + label: parsedHtml.name, + type: parsedHtml.type + }) + //Add id for nodes + var traverseIds = function(o) { + for (i in o) { + if (!!o[i] && typeof(o[i]) == "object") { + if (!o[i].length && o[i].type === 'tag') { + nodeCount += 1; + o[i]._id = nodeCount; + } + traverseIds(o[i]); + } + } + } + parsedHtml._id = 0; + traverseIds(parsedHtml); + + + var DeepIterator = deepIterator.default, + it = DeepIterator(parsedHtml); + for (let { + value, + parent, + parentNode, + key, + type + } of it) { + if (type === 'NonIterableObject' && typeof key !== 'undefined' && value.type === 'tag') { + var newNode = { + id: value._id, + label: value.name, + type: value.type + }; + for(var i = 0; i < COMPONENTS.length; i++) { + if (COMPONENTS[i].selector === value.name) { + newNode.font = { + multi: 'html' + }; + newNode.label = '' + newNode.label + ''; + newNode.color = '#FB7E81'; + newNode.name = COMPONENTS[i].name; + } + } + for(var i = 0; i < DIRECTIVES.length; i++) { + if (value.attributes) { + for(attr in value.attributes) { + if (DIRECTIVES[i].selector.indexOf(attr) !== -1) { + newNode.font = { + multi: 'html' + }; + newNode.label = '' + newNode.label + ''; + newNode.color = '#FF9800'; + newNode.name = DIRECTIVES[i].name; + } + } + } + } + newNodes.push(newNode); + newEdges.push({ + from: parentNode._parent._id, + to: value._id, + arrows: 'to' + }); + } + } + + newNodes.shift(); + + var container = document.getElementById('tree-container'), + data = { + nodes: newNodes, + edges: newEdges + }, + options = { + layout: { + hierarchical: { + sortMethod: 'directed', + enabled: true + } + }, + nodes: { + shape: 'ellipse', + fixed: true + } + }, + + handleClickNode = function(params) { + var clickeNodeId; + if (params.nodes.length > 0) { + clickeNodeId = params.nodes[0]; + for(var i = 0; i < newNodes.length; i++) { + if (newNodes[i].id === clickeNodeId) { + for(var j = 0; j < COMPONENTS.length; j++) { + if (COMPONENTS[j].name === newNodes[i].name) { + document.location.href = currentLocation.origin + currentLocation.pathname.replace(ACTUAL_COMPONENT.name, newNodes[i].name); + } + } + } + } + } + }, + + myTabs = document.getElementsByClassName('nav-tabs')[0], + myTabsCollection = myTabs.getElementsByTagName('A'), + myLastTab = myTabsCollection[myTabsCollection.length - 1]; + myLastTab.addEventListener('click', function(event) { + setTimeout(function() { + container.style.height = document.getElementsByClassName('content')[0].offsetHeight - 140 + 'px'; + var network = new vis.Network(container, data, options); + network.on('click', handleClickNode); + }, 200); // Fade is 0.150 + }); +}); diff --git a/docs/miscellaneous.html b/docs/miscellaneous.html new file mode 100644 index 0000000..2af7ecd --- /dev/null +++ b/docs/miscellaneous.html @@ -0,0 +1,844 @@ + + + + + + ngx-permissions + + + + + + + + +

                                                      + + + +
                                                      +
                                                      + +
                                                      +
                                                      + + + + + + + + + + + +

                                                      Variables

                                                      +

                                                      projects/ngx-permissions/src/lib/enums/predefined-strategies.enum.ts

                                                      +
                                                      + + + + + + + + + +
                                                      + NgxPermissionsPredefinedStrategies +
                                                      + NgxPermissionsPredefinedStrategies: + +
                                                      +
                                                      +

                                                      projects/ngx-permissions/src/lib/service/configuration.service.ts

                                                      +
                                                      + + + + + + + + + +
                                                      + USE_CONFIGURATION_STORE +
                                                      + USE_CONFIGURATION_STORE: + +
                                                      +
                                                      +

                                                      projects/ngx-permissions/src/lib/service/permissions.service.ts

                                                      +
                                                      + + + + + + + + + +
                                                      + USE_PERMISSIONS_STORE +
                                                      + USE_PERMISSIONS_STORE: + +
                                                      +
                                                      +

                                                      projects/ngx-permissions/src/lib/service/roles.service.ts

                                                      +
                                                      + + + + + + + + + +
                                                      + USE_ROLES_STORE +
                                                      + USE_ROLES_STORE: + +
                                                      +
                                                      +

                                                      projects/ngx-permissions/src/test.ts

                                                      +
                                                      + + + + + + + + + +
                                                      + require +
                                                      + require: any + +
                                                      + + + + + + + + + +
                                                      + context +
                                                      + context: + +
                                                      +
                                                      +

                                                      src/environments/environment.prod.ts

                                                      +
                                                      + + + + + + + + + +
                                                      + environment +
                                                      + environment: + +
                                                      +
                                                      +

                                                      src/environments/environment.ts

                                                      +
                                                      + + + + + + + + + +
                                                      + environment +
                                                      + environment: + +
                                                      +
                                                      +

                                                      src/test.ts

                                                      +
                                                      + + + + + + + + + +
                                                      + require +
                                                      + require: any + +
                                                      + + + + + + + + + +
                                                      + context +
                                                      + context: + +
                                                      +
                                                      + +

                                                      Functions

                                                      +

                                                      projects/ngx-permissions/src/lib/utils/utils.ts

                                                      +
                                                      + + + + + + + + + + + + +
                                                      + isFunction +
                                                      + isFunction(functionToCheck: undefined) +
                                                      + + + + + + + + + + + + +
                                                      + isPlainObject +
                                                      + isPlainObject(value: undefined) +
                                                      + + + + + + + + + + + + +
                                                      + isString +
                                                      + isString(value: undefined) +
                                                      + + + + + + + + + + + + +
                                                      + isBoolean +
                                                      + isBoolean(value: undefined) +
                                                      + + + + + + + + + + + + +
                                                      + isPromise +
                                                      + isPromise(promise: undefined) +
                                                      + + + + + + + + + + + + +
                                                      + notEmptyValue +
                                                      + notEmptyValue(value: undefined) +
                                                      + + + + + + + + + + + + +
                                                      + transformStringToArray +
                                                      + transformStringToArray(value: undefined) +
                                                      +
                                                      + + + + +
                                                      +
                                                      +

                                                      results matching ""

                                                      +
                                                        +
                                                        +
                                                        +

                                                        No results matching ""

                                                        +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/modules.html b/docs/modules.html new file mode 100644 index 0000000..7127f33 --- /dev/null +++ b/docs/modules.html @@ -0,0 +1,697 @@ + + + + + + ngx-permissions + + + + + + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        + +

                                                        Modules

                                                        +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        +

                                                        AppModule

                                                        +
                                                        +
                                                        +

                                                        + + Your browser does not support SVG + +

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        +

                                                        LazyIsolateModule

                                                        +
                                                        +
                                                        +

                                                        + + Your browser does not support SVG + +

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        +

                                                        LazyIsolateRoutingModule

                                                        +
                                                        +
                                                        +

                                                        + + Your browser does not support SVG + +

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        +

                                                        LazyModule

                                                        +
                                                        +
                                                        +

                                                        + + Your browser does not support SVG + +

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        +

                                                        LazyRoleIsolateModule

                                                        +
                                                        +
                                                        +

                                                        + + Your browser does not support SVG + +

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        +

                                                        LazyRolesAsyncIsolateModule

                                                        +
                                                        +
                                                        +

                                                        + + Your browser does not support SVG + +

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        +

                                                        NgxPermissionsAllowStubModule

                                                        +
                                                        +
                                                        +

                                                        + + Your browser does not support SVG + +

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        +

                                                        NgxPermissionsModule

                                                        +
                                                        +
                                                        +

                                                        + + Your browser does not support SVG + +

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        +

                                                        NgxPermissionsRestrictStubModule

                                                        +
                                                        +
                                                        +

                                                        + + Your browser does not support SVG + +

                                                        + +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        + + + + + + + + + + +
                                                        +
                                                        +

                                                        results matching ""

                                                        +
                                                          +
                                                          +
                                                          +

                                                          No results matching ""

                                                          +
                                                          +
                                                          +
                                                          +
                                                          +
                                                          + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/modules/AppModule.html b/docs/modules/AppModule.html new file mode 100644 index 0000000..280cf79 --- /dev/null +++ b/docs/modules/AppModule.html @@ -0,0 +1,760 @@ + + + + + + ngx-permissions + + + + + + + + + + + + +
                                                          +
                                                          + +
                                                          +
                                                          + + + +
                                                          +
                                                          + + + + + + +dependencies + +Legend + +  Declarations + +  Module + +  Bootstrap + +  Providers + +  Exports + +cluster_AppModule + + + +cluster_AppModule_declarations + + + +cluster_AppModule_imports + + + +cluster_AppModule_bootstrap + + + + +AppComponent + +AppComponent + + + +AppModule + +AppModule + + + +AppComponent->AppModule + + + + + +HomeComponent + +HomeComponent + + + +HomeComponent->AppModule + + + + + +InitialLoadComponent + +InitialLoadComponent + + + +InitialLoadComponent->AppModule + + + + + +AppComponent + +AppComponent + + + +AppModule->AppComponent + + + + + +BrowserModule + +BrowserModule + + + +BrowserModule->AppModule + + + + + +AppRoutingModule + +AppRoutingModule + + + +AppRoutingModule->AppModule + + + + + +NgxPermissionsModule.forRoot() + +NgxPermissionsModule.forRoot() + + + +NgxPermissionsModule.forRoot()->AppModule + + + + + + +
                                                          +
                                                          + + + +
                                                          +
                                                          + + + + + +
                                                          +
                                                          +

                                                          +

                                                          File

                                                          +

                                                          +

                                                          + src/app/app.module.ts +

                                                          + + +
                                                          +
                                                          +
                                                          +

                                                          Declarations

                                                          + +
                                                          +
                                                          +

                                                          Bootstrap

                                                          + +
                                                          +
                                                          +
                                                          +
                                                          +
                                                          +
                                                          import { BrowserModule } from '@angular/platform-browser';
                                                          +import { NgModule } from '@angular/core';
                                                          +
                                                          +import { AppComponent } from './app.component';
                                                          +import { NgxPermissionsModule } from 'ngx-permissions';
                                                          +import { AppRoutingModule } from './app-routing.module';
                                                          +import { HomeComponent } from './home/home.component';
                                                          +import { InitialLoadComponent } from './initial-load/initial-load.component';
                                                          +@NgModule({
                                                          +  declarations: [
                                                          +    AppComponent,
                                                          +    HomeComponent,
                                                          +    InitialLoadComponent
                                                          +  ],
                                                          +  imports: [
                                                          +    BrowserModule,
                                                          +    AppRoutingModule,
                                                          +    NgxPermissionsModule.forRoot()
                                                          +  ],
                                                          +  providers: [],
                                                          +  bootstrap: [AppComponent]
                                                          +})
                                                          +export class AppModule { }
                                                          +
                                                          +
                                                          +
                                                          + + + + + + + + + + +
                                                          +
                                                          +

                                                          results matching ""

                                                          +
                                                            +
                                                            +
                                                            +

                                                            No results matching ""

                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/modules/AppModule/dependencies.svg b/docs/modules/AppModule/dependencies.svg new file mode 100644 index 0000000..7bf6f0f --- /dev/null +++ b/docs/modules/AppModule/dependencies.svg @@ -0,0 +1,130 @@ + + + + + + +dependencies + +Legend + +  Declarations + +  Module + +  Bootstrap + +  Providers + +  Exports + +cluster_AppModule + + + +cluster_AppModule_declarations + + + +cluster_AppModule_imports + + + +cluster_AppModule_bootstrap + + + + +AppComponent + +AppComponent + + + +AppModule + +AppModule + + + +AppComponent->AppModule + + + + + +HomeComponent + +HomeComponent + + + +HomeComponent->AppModule + + + + + +InitialLoadComponent + +InitialLoadComponent + + + +InitialLoadComponent->AppModule + + + + + +AppComponent + +AppComponent + + + +AppModule->AppComponent + + + + + +BrowserModule + +BrowserModule + + + +BrowserModule->AppModule + + + + + +AppRoutingModule + +AppRoutingModule + + + +AppRoutingModule->AppModule + + + + + +NgxPermissionsModule.forRoot() + +NgxPermissionsModule.forRoot() + + + +NgxPermissionsModule.forRoot()->AppModule + + + + + diff --git a/docs/modules/LazyIsolateModule.html b/docs/modules/LazyIsolateModule.html new file mode 100644 index 0000000..5624f3d --- /dev/null +++ b/docs/modules/LazyIsolateModule.html @@ -0,0 +1,706 @@ + + + + + + ngx-permissions + + + + + + + + + + + + +
                                                            +
                                                            + +
                                                            +
                                                            + + + +
                                                            +
                                                            + + + + + + +dependencies + +Legend + +  Declarations + +  Module + +  Bootstrap + +  Providers + +  Exports + +cluster_LazyIsolateModule + + + +cluster_LazyIsolateModule_declarations + + + +cluster_LazyIsolateModule_imports + + + + +IsolateComponent + +IsolateComponent + + + +LazyIsolateModule + +LazyIsolateModule + + + +IsolateComponent->LazyIsolateModule + + + + + +CommonModule + +CommonModule + + + +CommonModule->LazyIsolateModule + + + + + +LazyIsolateRoutingModule + +LazyIsolateRoutingModule + + + +LazyIsolateRoutingModule->LazyIsolateModule + + + + + +NgxPermissionsModule.forChild(args) + +NgxPermissionsModule.forChild(args) + + + +NgxPermissionsModule.forChild(args)->LazyIsolateModule + + + + + + +
                                                            +
                                                            + + + +
                                                            +
                                                            + + + + + +
                                                            +
                                                            +

                                                            +

                                                            File

                                                            +

                                                            +

                                                            + src/app/lazy-isolate/lazy-isolate.module.ts +

                                                            + + +
                                                            +
                                                            +
                                                            +

                                                            Declarations

                                                            + +
                                                            +
                                                            +

                                                            Imports

                                                            + +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            import { NgModule } from '@angular/core';
                                                            +import { CommonModule } from '@angular/common';
                                                            +import { IsolateComponent } from './isolate/isolate.component';
                                                            +import { NgxPermissionsModule } from 'ngx-permissions';
                                                            +import { LazyIsolateRoutingModule } from './lazy-isolate-routing.module';
                                                            +
                                                            +@NgModule({
                                                            +  imports: [
                                                            +    CommonModule,
                                                            +    LazyIsolateRoutingModule,
                                                            +    NgxPermissionsModule.forChild({permissionsIsolate: true, rolesIsolate: true})
                                                            +  ],
                                                            +  declarations: [IsolateComponent]
                                                            +})
                                                            +export class LazyIsolateModule { }
                                                            +
                                                            +
                                                            +
                                                            + + + + + + + + + + +
                                                            +
                                                            +

                                                            results matching ""

                                                            +
                                                              +
                                                              +
                                                              +

                                                              No results matching ""

                                                              +
                                                              +
                                                              +
                                                              +
                                                              +
                                                              + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/modules/LazyIsolateModule/dependencies.svg b/docs/modules/LazyIsolateModule/dependencies.svg new file mode 100644 index 0000000..8b541ba --- /dev/null +++ b/docs/modules/LazyIsolateModule/dependencies.svg @@ -0,0 +1,90 @@ + + + + + + +dependencies + +Legend + +  Declarations + +  Module + +  Bootstrap + +  Providers + +  Exports + +cluster_LazyIsolateModule + + + +cluster_LazyIsolateModule_declarations + + + +cluster_LazyIsolateModule_imports + + + + +IsolateComponent + +IsolateComponent + + + +LazyIsolateModule + +LazyIsolateModule + + + +IsolateComponent->LazyIsolateModule + + + + + +CommonModule + +CommonModule + + + +CommonModule->LazyIsolateModule + + + + + +LazyIsolateRoutingModule + +LazyIsolateRoutingModule + + + +LazyIsolateRoutingModule->LazyIsolateModule + + + + + +NgxPermissionsModule.forChild(args) + +NgxPermissionsModule.forChild(args) + + + +NgxPermissionsModule.forChild(args)->LazyIsolateModule + + + + + diff --git a/docs/modules/LazyIsolateRoutingModule.html b/docs/modules/LazyIsolateRoutingModule.html new file mode 100644 index 0000000..7328fa8 --- /dev/null +++ b/docs/modules/LazyIsolateRoutingModule.html @@ -0,0 +1,713 @@ + + + + + + ngx-permissions + + + + + + + + + + + + +
                                                              +
                                                              + +
                                                              +
                                                              + + + +
                                                              +
                                                              + + + + + + +dependencies + +Legend + +  Declarations + +  Module + +  Bootstrap + +  Providers + +  Exports + +cluster_LazyIsolateRoutingModule + + + +cluster_LazyIsolateRoutingModule_imports + + + +cluster_LazyIsolateRoutingModule_exports + + + + +RouterModule.forChild(args) + +RouterModule.forChild(args) + + + +LazyIsolateRoutingModule + +LazyIsolateRoutingModule + + + +RouterModule.forChild(args)->LazyIsolateRoutingModule + + + + + +RouterModule + +RouterModule + + + +LazyIsolateRoutingModule->RouterModule + + + + + + +
                                                              +
                                                              + + + +
                                                              +
                                                              + + + + + +
                                                              +
                                                              +

                                                              +

                                                              File

                                                              +

                                                              +

                                                              + src/app/lazy-isolate/lazy-isolate-routing.module.ts +

                                                              + + +
                                                              +
                                                              +
                                                              +
                                                              +
                                                              +
                                                              +
                                                              import { RouterModule, Routes } from '@angular/router';
                                                              +import { NgModule } from '@angular/core';
                                                              +import { IsolateComponent } from './isolate/isolate.component';
                                                              +import { NgxPermissionsGuard } from 'ngx-permissions';
                                                              +
                                                              +const appRoutes: Routes = [
                                                              +  { path: '',
                                                              +    component: IsolateComponent,
                                                              +    canActivateChild: [NgxPermissionsGuard],
                                                              +    children: [
                                                              +      {
                                                              +        path: 'except-should',
                                                              +        component: IsolateComponent,
                                                              +        data: {
                                                              +          permissions: {
                                                              +            except: 'ADDDMIN'
                                                              +          }
                                                              +        }
                                                              +      },
                                                              +      {
                                                              +        path: 'only-should',
                                                              +        component: IsolateComponent,
                                                              +        data: {
                                                              +          permissions: {
                                                              +            only: 'GUEST'
                                                              +          }
                                                              +        }
                                                              +      },
                                                              +      {
                                                              +        path: 'except-should-not',
                                                              +        component: IsolateComponent,
                                                              +        data: {
                                                              +          permissions: {
                                                              +            except: 'GUEST'
                                                              +          }
                                                              +        }
                                                              +      },
                                                              +      {
                                                              +        path: 'only-should-not',
                                                              +        component: IsolateComponent,
                                                              +        data: {
                                                              +          permissions: {
                                                              +            only: 'ADMIN'
                                                              +          }
                                                              +        }
                                                              +      }
                                                              +    ]
                                                              +  },
                                                              +
                                                              +];
                                                              +@NgModule({
                                                              +  imports: [
                                                              +    RouterModule.forChild(appRoutes),
                                                              +  ],
                                                              +  exports: [
                                                              +    RouterModule
                                                              +  ],
                                                              +  providers: [
                                                              +    // CanDeactivateGuard
                                                              +  ]
                                                              +})
                                                              +export class LazyIsolateRoutingModule {}
                                                              +
                                                              +
                                                              +
                                                              + + + + + + + + + + +
                                                              +
                                                              +

                                                              results matching ""

                                                              +
                                                                +
                                                                +
                                                                +

                                                                No results matching ""

                                                                +
                                                                +
                                                                +
                                                                +
                                                                +
                                                                + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/modules/LazyIsolateRoutingModule/dependencies.svg b/docs/modules/LazyIsolateRoutingModule/dependencies.svg new file mode 100644 index 0000000..b9d3979 --- /dev/null +++ b/docs/modules/LazyIsolateRoutingModule/dependencies.svg @@ -0,0 +1,66 @@ + + + + + + +dependencies + +Legend + +  Declarations + +  Module + +  Bootstrap + +  Providers + +  Exports + +cluster_LazyIsolateRoutingModule + + + +cluster_LazyIsolateRoutingModule_imports + + + +cluster_LazyIsolateRoutingModule_exports + + + + +RouterModule.forChild(args) + +RouterModule.forChild(args) + + + +LazyIsolateRoutingModule + +LazyIsolateRoutingModule + + + +RouterModule.forChild(args)->LazyIsolateRoutingModule + + + + + +RouterModule + +RouterModule + + + +LazyIsolateRoutingModule->RouterModule + + + + + diff --git a/docs/modules/LazyModule.html b/docs/modules/LazyModule.html new file mode 100644 index 0000000..2544549 --- /dev/null +++ b/docs/modules/LazyModule.html @@ -0,0 +1,699 @@ + + + + + + ngx-permissions + + + + + + + + + + + + +
                                                                +
                                                                + +
                                                                +
                                                                + + + +
                                                                +
                                                                + + + + + + +dependencies + +Legend + +  Declarations + +  Module + +  Bootstrap + +  Providers + +  Exports + +cluster_LazyModule + + + +cluster_LazyModule_declarations + + + +cluster_LazyModule_imports + + + + +LazyComponentComponent + +LazyComponentComponent + + + +LazyModule + +LazyModule + + + +LazyComponentComponent->LazyModule + + + + + +CommonModule + +CommonModule + + + +CommonModule->LazyModule + + + + + +LazyRoutingModule + +LazyRoutingModule + + + +LazyRoutingModule->LazyModule + + + + + +NgxPermissionsModule.forChild() + +NgxPermissionsModule.forChild() + + + +NgxPermissionsModule.forChild()->LazyModule + + + + + + +
                                                                +
                                                                + + + +
                                                                +
                                                                + + + + + +
                                                                +
                                                                +

                                                                +

                                                                File

                                                                +

                                                                +

                                                                + src/app/lazy-module/lazy-module.module.ts +

                                                                + + +
                                                                +
                                                                +
                                                                +

                                                                Declarations

                                                                + +
                                                                +
                                                                +
                                                                +
                                                                +
                                                                +
                                                                import { NgModule } from '@angular/core';
                                                                +import { CommonModule } from '@angular/common';
                                                                +import { LazyRoutingModule } from './lazy-routing.module';
                                                                +import { LazyComponentComponent } from './lazy-component/lazy-component.component';
                                                                +import { NgxPermissionsModule } from 'ngx-permissions';
                                                                +
                                                                +@NgModule({
                                                                +  imports: [
                                                                +    CommonModule,
                                                                +    LazyRoutingModule,
                                                                +    NgxPermissionsModule.forChild()
                                                                +
                                                                +  ],
                                                                +  declarations: [LazyComponentComponent]
                                                                +})
                                                                +export class LazyModule { }
                                                                +
                                                                +
                                                                +
                                                                + + + + + + + + + + +
                                                                +
                                                                +

                                                                results matching ""

                                                                +
                                                                  +
                                                                  +
                                                                  +

                                                                  No results matching ""

                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/modules/LazyModule/dependencies.svg b/docs/modules/LazyModule/dependencies.svg new file mode 100644 index 0000000..d7b86be --- /dev/null +++ b/docs/modules/LazyModule/dependencies.svg @@ -0,0 +1,90 @@ + + + + + + +dependencies + +Legend + +  Declarations + +  Module + +  Bootstrap + +  Providers + +  Exports + +cluster_LazyModule + + + +cluster_LazyModule_declarations + + + +cluster_LazyModule_imports + + + + +LazyComponentComponent + +LazyComponentComponent + + + +LazyModule + +LazyModule + + + +LazyComponentComponent->LazyModule + + + + + +CommonModule + +CommonModule + + + +CommonModule->LazyModule + + + + + +LazyRoutingModule + +LazyRoutingModule + + + +LazyRoutingModule->LazyModule + + + + + +NgxPermissionsModule.forChild() + +NgxPermissionsModule.forChild() + + + +NgxPermissionsModule.forChild()->LazyModule + + + + + diff --git a/docs/modules/LazyRoleIsolateModule.html b/docs/modules/LazyRoleIsolateModule.html new file mode 100644 index 0000000..e364706 --- /dev/null +++ b/docs/modules/LazyRoleIsolateModule.html @@ -0,0 +1,705 @@ + + + + + + ngx-permissions + + + + + + + + + + + + +
                                                                  +
                                                                  + +
                                                                  +
                                                                  + + + +
                                                                  +
                                                                  + + + + + + +dependencies + +Legend + +  Declarations + +  Module + +  Bootstrap + +  Providers + +  Exports + +cluster_LazyRoleIsolateModule + + + +cluster_LazyRoleIsolateModule_declarations + + + +cluster_LazyRoleIsolateModule_imports + + + + +LazyRoleIsolateTestComponent + +LazyRoleIsolateTestComponent + + + +LazyRoleIsolateModule + +LazyRoleIsolateModule + + + +LazyRoleIsolateTestComponent->LazyRoleIsolateModule + + + + + +CommonModule + +CommonModule + + + +CommonModule->LazyRoleIsolateModule + + + + + +LazyIsolateRolesRoutingModule + +LazyIsolateRolesRoutingModule + + + +LazyIsolateRolesRoutingModule->LazyRoleIsolateModule + + + + + +NgxPermissionsModule.forChild(args) + +NgxPermissionsModule.forChild(args) + + + +NgxPermissionsModule.forChild(args)->LazyRoleIsolateModule + + + + + + +
                                                                  +
                                                                  + + + +
                                                                  +
                                                                  + + + + + +
                                                                  +
                                                                  +

                                                                  +

                                                                  File

                                                                  +

                                                                  +

                                                                  + src/app/lazy-role-isolate/lazy-role-isolate.module.ts +

                                                                  + + +
                                                                  +
                                                                  +
                                                                  +

                                                                  Declarations

                                                                  + +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  import { NgModule } from '@angular/core';
                                                                  +import { CommonModule } from '@angular/common';
                                                                  +import { NgxPermissionsModule } from 'ngx-permissions';
                                                                  +
                                                                  +import { LazyIsolateRolesRoutingModule } from './lazy-isolate-role-routing.module';
                                                                  +import { LazyRoleIsolateTestComponent } from './lazy-role-isolate-test/lazy-role-isolate-test.component';
                                                                  +
                                                                  +@NgModule({
                                                                  +  imports: [
                                                                  +    CommonModule,
                                                                  +    LazyIsolateRolesRoutingModule,
                                                                  +    NgxPermissionsModule.forChild({
                                                                  +      permissionsIsolate: true,
                                                                  +      rolesIsolate: true,
                                                                  +      configurationIsolate: true
                                                                  +    })
                                                                  +  ],
                                                                  +  declarations: [
                                                                  +  LazyRoleIsolateTestComponent
                                                                  +  ]
                                                                  +})
                                                                  +export class LazyRoleIsolateModule { }
                                                                  +
                                                                  +
                                                                  +
                                                                  + + + + + + + + + + +
                                                                  +
                                                                  +

                                                                  results matching ""

                                                                  +
                                                                    +
                                                                    +
                                                                    +

                                                                    No results matching ""

                                                                    +
                                                                    +
                                                                    +
                                                                    +
                                                                    +
                                                                    + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/modules/LazyRoleIsolateModule/dependencies.svg b/docs/modules/LazyRoleIsolateModule/dependencies.svg new file mode 100644 index 0000000..61b67f1 --- /dev/null +++ b/docs/modules/LazyRoleIsolateModule/dependencies.svg @@ -0,0 +1,90 @@ + + + + + + +dependencies + +Legend + +  Declarations + +  Module + +  Bootstrap + +  Providers + +  Exports + +cluster_LazyRoleIsolateModule + + + +cluster_LazyRoleIsolateModule_declarations + + + +cluster_LazyRoleIsolateModule_imports + + + + +LazyRoleIsolateTestComponent + +LazyRoleIsolateTestComponent + + + +LazyRoleIsolateModule + +LazyRoleIsolateModule + + + +LazyRoleIsolateTestComponent->LazyRoleIsolateModule + + + + + +CommonModule + +CommonModule + + + +CommonModule->LazyRoleIsolateModule + + + + + +LazyIsolateRolesRoutingModule + +LazyIsolateRolesRoutingModule + + + +LazyIsolateRolesRoutingModule->LazyRoleIsolateModule + + + + + +NgxPermissionsModule.forChild(args) + +NgxPermissionsModule.forChild(args) + + + +NgxPermissionsModule.forChild(args)->LazyRoleIsolateModule + + + + + diff --git a/docs/modules/LazyRolesAsyncIsolateModule.html b/docs/modules/LazyRolesAsyncIsolateModule.html new file mode 100644 index 0000000..af51e8a --- /dev/null +++ b/docs/modules/LazyRolesAsyncIsolateModule.html @@ -0,0 +1,729 @@ + + + + + + ngx-permissions + + + + + + + + + + + + +
                                                                    +
                                                                    + +
                                                                    +
                                                                    + + + +
                                                                    +
                                                                    + + + + + + +dependencies + +Legend + +  Declarations + +  Module + +  Bootstrap + +  Providers + +  Exports + +cluster_LazyRolesAsyncIsolateModule + + + +cluster_LazyRolesAsyncIsolateModule_declarations + + + +cluster_LazyRolesAsyncIsolateModule_imports + + + +cluster_LazyRolesAsyncIsolateModule_providers + + + + +LazyRolesAsyncTestComponent + +LazyRolesAsyncTestComponent + + + +LazyRolesAsyncIsolateModule + +LazyRolesAsyncIsolateModule + + + +LazyRolesAsyncTestComponent->LazyRolesAsyncIsolateModule + + + + + +CommonModule + +CommonModule + + + +CommonModule->LazyRolesAsyncIsolateModule + + + + + +NgxPermissionsModule.forChild(args) + +NgxPermissionsModule.forChild(args) + + + +NgxPermissionsModule.forChild(args)->LazyRolesAsyncIsolateModule + + + + + +LazyIsolateAsyncRolesRoutingModule + +LazyIsolateAsyncRolesRoutingModule + + + +LazyIsolateAsyncRolesRoutingModule->LazyRolesAsyncIsolateModule + + + + + +AsyncTestService + +AsyncTestService + + + +AsyncTestService->LazyRolesAsyncIsolateModule + + + + + + +
                                                                    +
                                                                    + + + +
                                                                    +
                                                                    + + + + + +
                                                                    +
                                                                    +

                                                                    +

                                                                    File

                                                                    +

                                                                    +

                                                                    + src/app/lazy-roles-async-isolate/lazy-roles-async-isolate.module.ts +

                                                                    + + +
                                                                    +
                                                                    +
                                                                    +

                                                                    Declarations

                                                                    + +
                                                                    +
                                                                    +

                                                                    Providers

                                                                    + +
                                                                    +
                                                                    +
                                                                    +
                                                                    +
                                                                    +
                                                                    import { NgModule } from '@angular/core';
                                                                    +import { CommonModule } from '@angular/common';
                                                                    +import { LazyRolesAsyncTestComponent } from './lazy-roles-async-test/lazy-roles-async-test.component';
                                                                    +import { NgxPermissionsModule } from 'ngx-permissions';
                                                                    +import { AsyncTestService } from './async-test.service';
                                                                    +import { LazyIsolateAsyncRolesRoutingModule } from './lazy-isolate-role-async-routing.module';
                                                                    +
                                                                    +@NgModule({
                                                                    +  imports: [
                                                                    +    CommonModule,
                                                                    +    NgxPermissionsModule.forChild({
                                                                    +      permissionsIsolate: true,
                                                                    +      rolesIsolate: true
                                                                    +    }),
                                                                    +    LazyIsolateAsyncRolesRoutingModule
                                                                    +  ],
                                                                    +  providers: [
                                                                    +    AsyncTestService
                                                                    +  ],
                                                                    +  declarations: [LazyRolesAsyncTestComponent]
                                                                    +})
                                                                    +export class LazyRolesAsyncIsolateModule { }
                                                                    +
                                                                    +
                                                                    +
                                                                    + + + + + + + + + + +
                                                                    +
                                                                    +

                                                                    results matching ""

                                                                    +
                                                                      +
                                                                      +
                                                                      +

                                                                      No results matching ""

                                                                      +
                                                                      +
                                                                      +
                                                                      +
                                                                      +
                                                                      + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/modules/LazyRolesAsyncIsolateModule/dependencies.svg b/docs/modules/LazyRolesAsyncIsolateModule/dependencies.svg new file mode 100644 index 0000000..61c07fc --- /dev/null +++ b/docs/modules/LazyRolesAsyncIsolateModule/dependencies.svg @@ -0,0 +1,106 @@ + + + + + + +dependencies + +Legend + +  Declarations + +  Module + +  Bootstrap + +  Providers + +  Exports + +cluster_LazyRolesAsyncIsolateModule + + + +cluster_LazyRolesAsyncIsolateModule_declarations + + + +cluster_LazyRolesAsyncIsolateModule_imports + + + +cluster_LazyRolesAsyncIsolateModule_providers + + + + +LazyRolesAsyncTestComponent + +LazyRolesAsyncTestComponent + + + +LazyRolesAsyncIsolateModule + +LazyRolesAsyncIsolateModule + + + +LazyRolesAsyncTestComponent->LazyRolesAsyncIsolateModule + + + + + +CommonModule + +CommonModule + + + +CommonModule->LazyRolesAsyncIsolateModule + + + + + +NgxPermissionsModule.forChild(args) + +NgxPermissionsModule.forChild(args) + + + +NgxPermissionsModule.forChild(args)->LazyRolesAsyncIsolateModule + + + + + +LazyIsolateAsyncRolesRoutingModule + +LazyIsolateAsyncRolesRoutingModule + + + +LazyIsolateAsyncRolesRoutingModule->LazyRolesAsyncIsolateModule + + + + + +AsyncTestService + +AsyncTestService + + + +AsyncTestService->LazyRolesAsyncIsolateModule + + + + + diff --git a/docs/modules/NgxPermissionsAllowStubModule.html b/docs/modules/NgxPermissionsAllowStubModule.html new file mode 100644 index 0000000..8bafc85 --- /dev/null +++ b/docs/modules/NgxPermissionsAllowStubModule.html @@ -0,0 +1,777 @@ + + + + + + ngx-permissions + + + + + + + + + + + + +
                                                                      +
                                                                      + +
                                                                      +
                                                                      + + + +
                                                                      +
                                                                      + + + + + + +dependencies + +Legend + +  Declarations + +  Module + +  Bootstrap + +  Providers + +  Exports + +cluster_NgxPermissionsAllowStubModule + + + +cluster_NgxPermissionsAllowStubModule_declarations + + + +cluster_NgxPermissionsAllowStubModule_exports + + + + +NgxPermissionsAllowStubDirective + +NgxPermissionsAllowStubDirective + + + +NgxPermissionsAllowStubModule + +NgxPermissionsAllowStubModule + + + +NgxPermissionsAllowStubDirective->NgxPermissionsAllowStubModule + + + + + +NgxPermissionsAllowStubDirective + +NgxPermissionsAllowStubDirective + + + +NgxPermissionsAllowStubModule->NgxPermissionsAllowStubDirective + + + + + + +
                                                                      +
                                                                      + + + +
                                                                      +
                                                                      + + + + + +
                                                                      +
                                                                      +

                                                                      +

                                                                      File

                                                                      +

                                                                      +

                                                                      + projects/ngx-permissions/src/lib/index.ts +

                                                                      + + +
                                                                      +
                                                                      +
                                                                      +

                                                                      Declarations

                                                                      + +
                                                                      +
                                                                      +

                                                                      Exports

                                                                      + +
                                                                      +
                                                                      +
                                                                      +
                                                                      +
                                                                      +
                                                                      import { ModuleWithProviders, NgModule } from '@angular/core';
                                                                      +import { NgxPermissionsDirective } from './directive/permissions.directive';
                                                                      +import { NgxPermissionsGuard } from './router/permissions-guard.service';
                                                                      +import { NgxPermissionsConfigurationService, USE_CONFIGURATION_STORE } from './service/configuration.service';
                                                                      +import { NgxPermissionsService, USE_PERMISSIONS_STORE } from './service/permissions.service';
                                                                      +import { NgxRolesService, USE_ROLES_STORE } from './service/roles.service';
                                                                      +import { NgxPermissionsConfigurationStore } from './store/configuration.store';
                                                                      +import { NgxPermissionsStore } from './store/permissions.store';
                                                                      +import { NgxRolesStore } from './store/roles.store';
                                                                      +import { NgxPermissionsAllowStubDirective } from './testing/permissions-allow.directive.stub';
                                                                      +import { NgxPermissionsRestrictStubDirective } from './testing/permissions-restrict.directive.stub';
                                                                      +
                                                                      +export * from './store/roles.store';
                                                                      +export * from './store/permissions.store';
                                                                      +export * from './store/configuration.store';
                                                                      +
                                                                      +export * from './directive/permissions.directive';
                                                                      +
                                                                      +export * from './service/permissions.service';
                                                                      +export * from './service/roles.service';
                                                                      +export * from './service/configuration.service';
                                                                      +
                                                                      +export * from './router/permissions-guard.service';
                                                                      +
                                                                      +export * from './model/permissions-router-data.model';
                                                                      +export * from './model/role.model';
                                                                      +
                                                                      +export * from './testing/permissions-allow.directive.stub';
                                                                      +export * from './testing/permissions-restrict.directive.stub';
                                                                      +
                                                                      +export * from './enums/predefined-strategies.enum';
                                                                      +
                                                                      +export interface NgxPermissionsModuleConfig {
                                                                      +    // isolate the service instance, only works for lazy loaded modules or components with the "providers" property
                                                                      +    rolesIsolate?: boolean;
                                                                      +    permissionsIsolate?: boolean;
                                                                      +    configurationIsolate?: boolean;
                                                                      +}
                                                                      +
                                                                      +
                                                                      +@NgModule({
                                                                      +    imports: [],
                                                                      +    declarations: [
                                                                      +        NgxPermissionsDirective
                                                                      +    ],
                                                                      +    exports: [
                                                                      +        NgxPermissionsDirective
                                                                      +    ]
                                                                      +})
                                                                      +export class NgxPermissionsModule {
                                                                      +    static forRoot(config: NgxPermissionsModuleConfig = {}): ModuleWithProviders {
                                                                      +        return {
                                                                      +            ngModule: NgxPermissionsModule,
                                                                      +            providers: [
                                                                      +                NgxPermissionsStore,
                                                                      +                NgxRolesStore,
                                                                      +                NgxPermissionsConfigurationStore,
                                                                      +                NgxPermissionsService,
                                                                      +                NgxPermissionsGuard,
                                                                      +                NgxRolesService,
                                                                      +                NgxPermissionsConfigurationService,
                                                                      +                { provide: USE_PERMISSIONS_STORE, useValue: config.permissionsIsolate },
                                                                      +                { provide: USE_ROLES_STORE, useValue: config.rolesIsolate },
                                                                      +                { provide: USE_CONFIGURATION_STORE, useValue: config.configurationIsolate },
                                                                      +            ]
                                                                      +        };
                                                                      +    }
                                                                      +
                                                                      +    static forChild(config: NgxPermissionsModuleConfig = {}): ModuleWithProviders {
                                                                      +        return {
                                                                      +            ngModule: NgxPermissionsModule,
                                                                      +            providers: [
                                                                      +                { provide: USE_PERMISSIONS_STORE, useValue: config.permissionsIsolate },
                                                                      +                { provide: USE_ROLES_STORE, useValue: config.rolesIsolate },
                                                                      +                { provide: USE_CONFIGURATION_STORE, useValue: config.configurationIsolate },
                                                                      +                NgxPermissionsConfigurationService,
                                                                      +                NgxPermissionsService,
                                                                      +                NgxRolesService,
                                                                      +                NgxPermissionsGuard
                                                                      +            ]
                                                                      +        };
                                                                      +    }
                                                                      +}
                                                                      +
                                                                      +@NgModule({
                                                                      +    imports: [],
                                                                      +    declarations: [
                                                                      +        NgxPermissionsAllowStubDirective
                                                                      +    ],
                                                                      +    exports: [
                                                                      +        NgxPermissionsAllowStubDirective
                                                                      +    ]
                                                                      +})
                                                                      +export class NgxPermissionsAllowStubModule {
                                                                      +}
                                                                      +
                                                                      +
                                                                      +@NgModule({
                                                                      +    imports: [],
                                                                      +    declarations: [
                                                                      +        NgxPermissionsRestrictStubDirective
                                                                      +    ],
                                                                      +    exports: [
                                                                      +        NgxPermissionsRestrictStubDirective
                                                                      +    ]
                                                                      +})
                                                                      +export class NgxPermissionsRestrictStubModule {
                                                                      +}
                                                                      +
                                                                      +
                                                                      +
                                                                      +
                                                                      +
                                                                      + + + + + + + + + + +
                                                                      +
                                                                      +

                                                                      results matching ""

                                                                      +
                                                                        +
                                                                        +
                                                                        +

                                                                        No results matching ""

                                                                        +
                                                                        +
                                                                        +
                                                                        +
                                                                        +
                                                                        + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/modules/NgxPermissionsAllowStubModule/dependencies.svg b/docs/modules/NgxPermissionsAllowStubModule/dependencies.svg new file mode 100644 index 0000000..303c448 --- /dev/null +++ b/docs/modules/NgxPermissionsAllowStubModule/dependencies.svg @@ -0,0 +1,66 @@ + + + + + + +dependencies + +Legend + +  Declarations + +  Module + +  Bootstrap + +  Providers + +  Exports + +cluster_NgxPermissionsAllowStubModule + + + +cluster_NgxPermissionsAllowStubModule_declarations + + + +cluster_NgxPermissionsAllowStubModule_exports + + + + +NgxPermissionsAllowStubDirective + +NgxPermissionsAllowStubDirective + + + +NgxPermissionsAllowStubModule + +NgxPermissionsAllowStubModule + + + +NgxPermissionsAllowStubDirective->NgxPermissionsAllowStubModule + + + + + +NgxPermissionsAllowStubDirective + +NgxPermissionsAllowStubDirective + + + +NgxPermissionsAllowStubModule->NgxPermissionsAllowStubDirective + + + + + diff --git a/docs/modules/NgxPermissionsModule.html b/docs/modules/NgxPermissionsModule.html new file mode 100644 index 0000000..860699a --- /dev/null +++ b/docs/modules/NgxPermissionsModule.html @@ -0,0 +1,777 @@ + + + + + + ngx-permissions + + + + + + + + + + + + +
                                                                        +
                                                                        + +
                                                                        +
                                                                        + + + +
                                                                        +
                                                                        + + + + + + +dependencies + +Legend + +  Declarations + +  Module + +  Bootstrap + +  Providers + +  Exports + +cluster_NgxPermissionsModule + + + +cluster_NgxPermissionsModule_declarations + + + +cluster_NgxPermissionsModule_exports + + + + +NgxPermissionsDirective + +NgxPermissionsDirective + + + +NgxPermissionsModule + +NgxPermissionsModule + + + +NgxPermissionsDirective->NgxPermissionsModule + + + + + +NgxPermissionsDirective + +NgxPermissionsDirective + + + +NgxPermissionsModule->NgxPermissionsDirective + + + + + + +
                                                                        +
                                                                        + + + +
                                                                        +
                                                                        + + + + + +
                                                                        +
                                                                        +

                                                                        +

                                                                        File

                                                                        +

                                                                        +

                                                                        + projects/ngx-permissions/src/lib/index.ts +

                                                                        + + +
                                                                        +
                                                                        +
                                                                        +

                                                                        Declarations

                                                                        + +
                                                                        +
                                                                        +

                                                                        Exports

                                                                        + +
                                                                        +
                                                                        +
                                                                        +
                                                                        +
                                                                        +
                                                                        import { ModuleWithProviders, NgModule } from '@angular/core';
                                                                        +import { NgxPermissionsDirective } from './directive/permissions.directive';
                                                                        +import { NgxPermissionsGuard } from './router/permissions-guard.service';
                                                                        +import { NgxPermissionsConfigurationService, USE_CONFIGURATION_STORE } from './service/configuration.service';
                                                                        +import { NgxPermissionsService, USE_PERMISSIONS_STORE } from './service/permissions.service';
                                                                        +import { NgxRolesService, USE_ROLES_STORE } from './service/roles.service';
                                                                        +import { NgxPermissionsConfigurationStore } from './store/configuration.store';
                                                                        +import { NgxPermissionsStore } from './store/permissions.store';
                                                                        +import { NgxRolesStore } from './store/roles.store';
                                                                        +import { NgxPermissionsAllowStubDirective } from './testing/permissions-allow.directive.stub';
                                                                        +import { NgxPermissionsRestrictStubDirective } from './testing/permissions-restrict.directive.stub';
                                                                        +
                                                                        +export * from './store/roles.store';
                                                                        +export * from './store/permissions.store';
                                                                        +export * from './store/configuration.store';
                                                                        +
                                                                        +export * from './directive/permissions.directive';
                                                                        +
                                                                        +export * from './service/permissions.service';
                                                                        +export * from './service/roles.service';
                                                                        +export * from './service/configuration.service';
                                                                        +
                                                                        +export * from './router/permissions-guard.service';
                                                                        +
                                                                        +export * from './model/permissions-router-data.model';
                                                                        +export * from './model/role.model';
                                                                        +
                                                                        +export * from './testing/permissions-allow.directive.stub';
                                                                        +export * from './testing/permissions-restrict.directive.stub';
                                                                        +
                                                                        +export * from './enums/predefined-strategies.enum';
                                                                        +
                                                                        +export interface NgxPermissionsModuleConfig {
                                                                        +    // isolate the service instance, only works for lazy loaded modules or components with the "providers" property
                                                                        +    rolesIsolate?: boolean;
                                                                        +    permissionsIsolate?: boolean;
                                                                        +    configurationIsolate?: boolean;
                                                                        +}
                                                                        +
                                                                        +
                                                                        +@NgModule({
                                                                        +    imports: [],
                                                                        +    declarations: [
                                                                        +        NgxPermissionsDirective
                                                                        +    ],
                                                                        +    exports: [
                                                                        +        NgxPermissionsDirective
                                                                        +    ]
                                                                        +})
                                                                        +export class NgxPermissionsModule {
                                                                        +    static forRoot(config: NgxPermissionsModuleConfig = {}): ModuleWithProviders {
                                                                        +        return {
                                                                        +            ngModule: NgxPermissionsModule,
                                                                        +            providers: [
                                                                        +                NgxPermissionsStore,
                                                                        +                NgxRolesStore,
                                                                        +                NgxPermissionsConfigurationStore,
                                                                        +                NgxPermissionsService,
                                                                        +                NgxPermissionsGuard,
                                                                        +                NgxRolesService,
                                                                        +                NgxPermissionsConfigurationService,
                                                                        +                { provide: USE_PERMISSIONS_STORE, useValue: config.permissionsIsolate },
                                                                        +                { provide: USE_ROLES_STORE, useValue: config.rolesIsolate },
                                                                        +                { provide: USE_CONFIGURATION_STORE, useValue: config.configurationIsolate },
                                                                        +            ]
                                                                        +        };
                                                                        +    }
                                                                        +
                                                                        +    static forChild(config: NgxPermissionsModuleConfig = {}): ModuleWithProviders {
                                                                        +        return {
                                                                        +            ngModule: NgxPermissionsModule,
                                                                        +            providers: [
                                                                        +                { provide: USE_PERMISSIONS_STORE, useValue: config.permissionsIsolate },
                                                                        +                { provide: USE_ROLES_STORE, useValue: config.rolesIsolate },
                                                                        +                { provide: USE_CONFIGURATION_STORE, useValue: config.configurationIsolate },
                                                                        +                NgxPermissionsConfigurationService,
                                                                        +                NgxPermissionsService,
                                                                        +                NgxRolesService,
                                                                        +                NgxPermissionsGuard
                                                                        +            ]
                                                                        +        };
                                                                        +    }
                                                                        +}
                                                                        +
                                                                        +@NgModule({
                                                                        +    imports: [],
                                                                        +    declarations: [
                                                                        +        NgxPermissionsAllowStubDirective
                                                                        +    ],
                                                                        +    exports: [
                                                                        +        NgxPermissionsAllowStubDirective
                                                                        +    ]
                                                                        +})
                                                                        +export class NgxPermissionsAllowStubModule {
                                                                        +}
                                                                        +
                                                                        +
                                                                        +@NgModule({
                                                                        +    imports: [],
                                                                        +    declarations: [
                                                                        +        NgxPermissionsRestrictStubDirective
                                                                        +    ],
                                                                        +    exports: [
                                                                        +        NgxPermissionsRestrictStubDirective
                                                                        +    ]
                                                                        +})
                                                                        +export class NgxPermissionsRestrictStubModule {
                                                                        +}
                                                                        +
                                                                        +
                                                                        +
                                                                        +
                                                                        +
                                                                        + + + + + + + + + + +
                                                                        +
                                                                        +

                                                                        results matching ""

                                                                        +
                                                                          +
                                                                          +
                                                                          +

                                                                          No results matching ""

                                                                          +
                                                                          +
                                                                          +
                                                                          +
                                                                          +
                                                                          + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/modules/NgxPermissionsModule/dependencies.svg b/docs/modules/NgxPermissionsModule/dependencies.svg new file mode 100644 index 0000000..ce427f8 --- /dev/null +++ b/docs/modules/NgxPermissionsModule/dependencies.svg @@ -0,0 +1,66 @@ + + + + + + +dependencies + +Legend + +  Declarations + +  Module + +  Bootstrap + +  Providers + +  Exports + +cluster_NgxPermissionsModule + + + +cluster_NgxPermissionsModule_declarations + + + +cluster_NgxPermissionsModule_exports + + + + +NgxPermissionsDirective + +NgxPermissionsDirective + + + +NgxPermissionsModule + +NgxPermissionsModule + + + +NgxPermissionsDirective->NgxPermissionsModule + + + + + +NgxPermissionsDirective + +NgxPermissionsDirective + + + +NgxPermissionsModule->NgxPermissionsDirective + + + + + diff --git a/docs/modules/NgxPermissionsRestrictStubModule.html b/docs/modules/NgxPermissionsRestrictStubModule.html new file mode 100644 index 0000000..5ac7c4e --- /dev/null +++ b/docs/modules/NgxPermissionsRestrictStubModule.html @@ -0,0 +1,777 @@ + + + + + + ngx-permissions + + + + + + + + + + + + +
                                                                          +
                                                                          + +
                                                                          +
                                                                          + + + +
                                                                          +
                                                                          + + + + + + +dependencies + +Legend + +  Declarations + +  Module + +  Bootstrap + +  Providers + +  Exports + +cluster_NgxPermissionsRestrictStubModule + + + +cluster_NgxPermissionsRestrictStubModule_declarations + + + +cluster_NgxPermissionsRestrictStubModule_exports + + + + +NgxPermissionsRestrictStubDirective + +NgxPermissionsRestrictStubDirective + + + +NgxPermissionsRestrictStubModule + +NgxPermissionsRestrictStubModule + + + +NgxPermissionsRestrictStubDirective->NgxPermissionsRestrictStubModule + + + + + +NgxPermissionsRestrictStubDirective + +NgxPermissionsRestrictStubDirective + + + +NgxPermissionsRestrictStubModule->NgxPermissionsRestrictStubDirective + + + + + + +
                                                                          +
                                                                          + + + +
                                                                          +
                                                                          + + + + + +
                                                                          +
                                                                          +

                                                                          +

                                                                          File

                                                                          +

                                                                          +

                                                                          + projects/ngx-permissions/src/lib/index.ts +

                                                                          + + +
                                                                          +
                                                                          +
                                                                          +

                                                                          Declarations

                                                                          + +
                                                                          +
                                                                          +

                                                                          Exports

                                                                          + +
                                                                          +
                                                                          +
                                                                          +
                                                                          +
                                                                          +
                                                                          import { ModuleWithProviders, NgModule } from '@angular/core';
                                                                          +import { NgxPermissionsDirective } from './directive/permissions.directive';
                                                                          +import { NgxPermissionsGuard } from './router/permissions-guard.service';
                                                                          +import { NgxPermissionsConfigurationService, USE_CONFIGURATION_STORE } from './service/configuration.service';
                                                                          +import { NgxPermissionsService, USE_PERMISSIONS_STORE } from './service/permissions.service';
                                                                          +import { NgxRolesService, USE_ROLES_STORE } from './service/roles.service';
                                                                          +import { NgxPermissionsConfigurationStore } from './store/configuration.store';
                                                                          +import { NgxPermissionsStore } from './store/permissions.store';
                                                                          +import { NgxRolesStore } from './store/roles.store';
                                                                          +import { NgxPermissionsAllowStubDirective } from './testing/permissions-allow.directive.stub';
                                                                          +import { NgxPermissionsRestrictStubDirective } from './testing/permissions-restrict.directive.stub';
                                                                          +
                                                                          +export * from './store/roles.store';
                                                                          +export * from './store/permissions.store';
                                                                          +export * from './store/configuration.store';
                                                                          +
                                                                          +export * from './directive/permissions.directive';
                                                                          +
                                                                          +export * from './service/permissions.service';
                                                                          +export * from './service/roles.service';
                                                                          +export * from './service/configuration.service';
                                                                          +
                                                                          +export * from './router/permissions-guard.service';
                                                                          +
                                                                          +export * from './model/permissions-router-data.model';
                                                                          +export * from './model/role.model';
                                                                          +
                                                                          +export * from './testing/permissions-allow.directive.stub';
                                                                          +export * from './testing/permissions-restrict.directive.stub';
                                                                          +
                                                                          +export * from './enums/predefined-strategies.enum';
                                                                          +
                                                                          +export interface NgxPermissionsModuleConfig {
                                                                          +    // isolate the service instance, only works for lazy loaded modules or components with the "providers" property
                                                                          +    rolesIsolate?: boolean;
                                                                          +    permissionsIsolate?: boolean;
                                                                          +    configurationIsolate?: boolean;
                                                                          +}
                                                                          +
                                                                          +
                                                                          +@NgModule({
                                                                          +    imports: [],
                                                                          +    declarations: [
                                                                          +        NgxPermissionsDirective
                                                                          +    ],
                                                                          +    exports: [
                                                                          +        NgxPermissionsDirective
                                                                          +    ]
                                                                          +})
                                                                          +export class NgxPermissionsModule {
                                                                          +    static forRoot(config: NgxPermissionsModuleConfig = {}): ModuleWithProviders {
                                                                          +        return {
                                                                          +            ngModule: NgxPermissionsModule,
                                                                          +            providers: [
                                                                          +                NgxPermissionsStore,
                                                                          +                NgxRolesStore,
                                                                          +                NgxPermissionsConfigurationStore,
                                                                          +                NgxPermissionsService,
                                                                          +                NgxPermissionsGuard,
                                                                          +                NgxRolesService,
                                                                          +                NgxPermissionsConfigurationService,
                                                                          +                { provide: USE_PERMISSIONS_STORE, useValue: config.permissionsIsolate },
                                                                          +                { provide: USE_ROLES_STORE, useValue: config.rolesIsolate },
                                                                          +                { provide: USE_CONFIGURATION_STORE, useValue: config.configurationIsolate },
                                                                          +            ]
                                                                          +        };
                                                                          +    }
                                                                          +
                                                                          +    static forChild(config: NgxPermissionsModuleConfig = {}): ModuleWithProviders {
                                                                          +        return {
                                                                          +            ngModule: NgxPermissionsModule,
                                                                          +            providers: [
                                                                          +                { provide: USE_PERMISSIONS_STORE, useValue: config.permissionsIsolate },
                                                                          +                { provide: USE_ROLES_STORE, useValue: config.rolesIsolate },
                                                                          +                { provide: USE_CONFIGURATION_STORE, useValue: config.configurationIsolate },
                                                                          +                NgxPermissionsConfigurationService,
                                                                          +                NgxPermissionsService,
                                                                          +                NgxRolesService,
                                                                          +                NgxPermissionsGuard
                                                                          +            ]
                                                                          +        };
                                                                          +    }
                                                                          +}
                                                                          +
                                                                          +@NgModule({
                                                                          +    imports: [],
                                                                          +    declarations: [
                                                                          +        NgxPermissionsAllowStubDirective
                                                                          +    ],
                                                                          +    exports: [
                                                                          +        NgxPermissionsAllowStubDirective
                                                                          +    ]
                                                                          +})
                                                                          +export class NgxPermissionsAllowStubModule {
                                                                          +}
                                                                          +
                                                                          +
                                                                          +@NgModule({
                                                                          +    imports: [],
                                                                          +    declarations: [
                                                                          +        NgxPermissionsRestrictStubDirective
                                                                          +    ],
                                                                          +    exports: [
                                                                          +        NgxPermissionsRestrictStubDirective
                                                                          +    ]
                                                                          +})
                                                                          +export class NgxPermissionsRestrictStubModule {
                                                                          +}
                                                                          +
                                                                          +
                                                                          +
                                                                          +
                                                                          +
                                                                          + + + + + + + + + + +
                                                                          +
                                                                          +

                                                                          results matching ""

                                                                          +
                                                                            +
                                                                            +
                                                                            +

                                                                            No results matching ""

                                                                            +
                                                                            +
                                                                            +
                                                                            +
                                                                            +
                                                                            + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/modules/NgxPermissionsRestrictStubModule/dependencies.svg b/docs/modules/NgxPermissionsRestrictStubModule/dependencies.svg new file mode 100644 index 0000000..e276415 --- /dev/null +++ b/docs/modules/NgxPermissionsRestrictStubModule/dependencies.svg @@ -0,0 +1,66 @@ + + + + + + +dependencies + +Legend + +  Declarations + +  Module + +  Bootstrap + +  Providers + +  Exports + +cluster_NgxPermissionsRestrictStubModule + + + +cluster_NgxPermissionsRestrictStubModule_declarations + + + +cluster_NgxPermissionsRestrictStubModule_exports + + + + +NgxPermissionsRestrictStubDirective + +NgxPermissionsRestrictStubDirective + + + +NgxPermissionsRestrictStubModule + +NgxPermissionsRestrictStubModule + + + +NgxPermissionsRestrictStubDirective->NgxPermissionsRestrictStubModule + + + + + +NgxPermissionsRestrictStubDirective + +NgxPermissionsRestrictStubDirective + + + +NgxPermissionsRestrictStubModule->NgxPermissionsRestrictStubDirective + + + + + diff --git a/docs/overview.html b/docs/overview.html new file mode 100644 index 0000000..7925438 --- /dev/null +++ b/docs/overview.html @@ -0,0 +1,980 @@ + + + + + + ngx-permissions + + + + + + + + + + + + +
                                                                            +
                                                                            + +
                                                                            +
                                                                            +

                                                                            Overview

                                                                            +
                                                                            +
                                                                            + + + + + + +dependencies + +Legend + +  Declarations + +  Module + +  Bootstrap + +  Providers + +  Exports + +cluster_AppModule + + + +cluster_AppModule_imports + + + +cluster_AppModule_bootstrap + + + +cluster_LazyIsolateModule + + + +cluster_LazyIsolateModule_imports + + + +cluster_LazyIsolateRoutingModule + + + +cluster_LazyIsolateRoutingModule_imports + + + +cluster_LazyIsolateRoutingModule_exports + + + +cluster_LazyModule + + + +cluster_LazyModule_imports + + + +cluster_LazyRoleIsolateModule + + + +cluster_LazyRoleIsolateModule_imports + + + +cluster_LazyRolesAsyncIsolateModule + + + +cluster_LazyRolesAsyncIsolateModule_imports + + + +cluster_NgxPermissionsAllowStubModule + + + +cluster_NgxPermissionsAllowStubModule_exports + + + +cluster_NgxPermissionsModule + + + +cluster_NgxPermissionsModule_exports + + + +cluster_NgxPermissionsRestrictStubModule + + + +cluster_NgxPermissionsRestrictStubModule_exports + + + + +BrowserModule + +BrowserModule + + + +AppModule + +AppModule + + + +BrowserModule->AppModule + + + + + +AppRoutingModule + +AppRoutingModule + + + +AppRoutingModule->AppModule + + + + + +NgxPermissionsModule.forRoot() + +NgxPermissionsModule.forRoot() + + + +NgxPermissionsModule.forRoot()->AppModule + + + + + +AppComponent + +AppComponent + + + +AppModule->AppComponent + + + + + +CommonModule + +CommonModule + + + +LazyIsolateModule + +LazyIsolateModule + + + +CommonModule->LazyIsolateModule + + + + + +LazyModule + +LazyModule + + + +CommonModule->LazyModule + + + + + +LazyRoleIsolateModule + +LazyRoleIsolateModule + + + +CommonModule->LazyRoleIsolateModule + + + + + +LazyRolesAsyncIsolateModule + +LazyRolesAsyncIsolateModule + + + +CommonModule->LazyRolesAsyncIsolateModule + + + + + +LazyIsolateRoutingModule + +LazyIsolateRoutingModule + + + +LazyIsolateRoutingModule->LazyIsolateModule + + + + + +RouterModule + +RouterModule + + + +LazyIsolateRoutingModule->RouterModule + + + + + +NgxPermissionsModule.forChild(args) + +NgxPermissionsModule.forChild(args) + + + +NgxPermissionsModule.forChild(args)->LazyIsolateModule + + + + + +NgxPermissionsModule.forChild(args)->LazyRoleIsolateModule + + + + + +NgxPermissionsModule.forChild(args)->LazyRolesAsyncIsolateModule + + + + + +RouterModule.forChild(args) + +RouterModule.forChild(args) + + + +RouterModule.forChild(args)->LazyIsolateRoutingModule + + + + + +LazyRoutingModule + +LazyRoutingModule + + + +LazyRoutingModule->LazyModule + + + + + +NgxPermissionsModule.forChild() + +NgxPermissionsModule.forChild() + + + +NgxPermissionsModule.forChild()->LazyModule + + + + + +LazyIsolateRolesRoutingModule + +LazyIsolateRolesRoutingModule + + + +LazyIsolateRolesRoutingModule->LazyRoleIsolateModule + + + + + +LazyIsolateAsyncRolesRoutingModule + +LazyIsolateAsyncRolesRoutingModule + + + +LazyIsolateAsyncRolesRoutingModule->LazyRolesAsyncIsolateModule + + + + + +NgxPermissionsAllowStubDirective + +NgxPermissionsAllowStubDirective + + + +NgxPermissionsAllowStubModule + +NgxPermissionsAllowStubModule + + + +NgxPermissionsAllowStubModule->NgxPermissionsAllowStubDirective + + + + + +NgxPermissionsDirective + +NgxPermissionsDirective + + + +NgxPermissionsModule + +NgxPermissionsModule + + + +NgxPermissionsModule->NgxPermissionsDirective + + + + + +NgxPermissionsRestrictStubDirective + +NgxPermissionsRestrictStubDirective + + + +NgxPermissionsRestrictStubModule + +NgxPermissionsRestrictStubModule + + + +NgxPermissionsRestrictStubModule->NgxPermissionsRestrictStubDirective + + + + + + +
                                                                            +
                                                                            + + + +
                                                                            +
                                                                            +
                                                                            +
                                                                            +
                                                                            +
                                                                            +
                                                                            +

                                                                            +

                                                                            + 9 modules +

                                                                            +
                                                                            +
                                                                            +
                                                                            +
                                                                            +
                                                                            +
                                                                            +

                                                                            +

                                                                            7 components

                                                                            +
                                                                            +
                                                                            +
                                                                            +
                                                                            +
                                                                            +
                                                                            +

                                                                            +

                                                                            3 directives

                                                                            +
                                                                            +
                                                                            +
                                                                            +
                                                                            +
                                                                            +
                                                                            +

                                                                            +

                                                                            7 injectables

                                                                            +
                                                                            +
                                                                            +
                                                                            +
                                                                            +
                                                                            +
                                                                            +

                                                                            +

                                                                            4 classes

                                                                            +
                                                                            +
                                                                            +
                                                                            +
                                                                            +
                                                                            +
                                                                            +

                                                                            +

                                                                            3 interfaces

                                                                            +
                                                                            +
                                                                            +
                                                                            +
                                                                            +
                                                                            + + + + + + + + + + + + + +
                                                                            +
                                                                            +

                                                                            results matching ""

                                                                            +
                                                                              +
                                                                              +
                                                                              +

                                                                              No results matching ""

                                                                              +
                                                                              +
                                                                              +
                                                                              +
                                                                              +
                                                                              + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/styles/bootstrap-card.css b/docs/styles/bootstrap-card.css new file mode 100644 index 0000000..0869c68 --- /dev/null +++ b/docs/styles/bootstrap-card.css @@ -0,0 +1,219 @@ +.card { + position: relative; + display: block; + margin-bottom: 20px; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 4px; +} + +.card-block { + padding: 15px; +} +.card-block:before, .card-block:after { + content: " "; + display: table; +} +.card-block:after { + clear: both; +} + +.card-title { + margin: 5px; + margin-bottom: 2px; + text-align: center; +} + +.card-subtitle { + margin-top: -10px; + margin-bottom: 0; +} + +.card-text:last-child { + margin-bottom: 0; + margin-top: 10px; +} + +.card-link:hover { + text-decoration: none; +} +.card-link + .card-link { + margin-left: 15px; +} + +.card > .list-group:first-child .list-group-item:first-child { + border-top-right-radius: 4px; + border-top-left-radius: 4px; +} +.card > .list-group:last-child .list-group-item:last-child { + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} + +.card-header { + padding: 10px 15px; + background-color: #f5f5f5; + border-bottom: 1px solid #ddd; +} +.card-header:before, .card-header:after { + content: " "; + display: table; +} +.card-header:after { + clear: both; +} +.card-header:first-child { + border-radius: 4px 4px 0 0; +} + +.card-footer { + padding: 10px 15px; + background-color: #f5f5f5; + border-top: 1px solid #ddd; +} +.card-footer:before, .card-footer:after { + content: " "; + display: table; +} +.card-footer:after { + clear: both; +} +.card-footer:last-child { + border-radius: 0 0 4px 4px; +} + +.card-header-tabs { + margin-right: -5px; + margin-bottom: -10px; + margin-left: -5px; + border-bottom: 0; +} + +.card-header-pills { + margin-right: -5px; + margin-left: -5px; +} + +.card-primary { + background-color: #337ab7; + border-color: #337ab7; +} +.card-primary .card-header, +.card-primary .card-footer { + background-color: transparent; +} + +.card-success { + background-color: #5cb85c; + border-color: #5cb85c; +} +.card-success .card-header, +.card-success .card-footer { + background-color: transparent; +} + +.card-info { + background-color: #5bc0de; + border-color: #5bc0de; +} +.card-info .card-header, +.card-info .card-footer { + background-color: transparent; +} + +.card-warning { + background-color: #f0ad4e; + border-color: #f0ad4e; +} +.card-warning .card-header, +.card-warning .card-footer { + background-color: transparent; +} + +.card-danger { + background-color: #d9534f; + border-color: #d9534f; +} +.card-danger .card-header, +.card-danger .card-footer { + background-color: transparent; +} + +.card-outline-primary { + background-color: transparent; + border-color: #337ab7; +} + +.card-outline-secondary { + background-color: transparent; + border-color: #ccc; +} + +.card-outline-info { + background-color: transparent; + border-color: #5bc0de; +} + +.card-outline-success { + background-color: transparent; + border-color: #5cb85c; +} + +.card-outline-warning { + background-color: transparent; + border-color: #f0ad4e; +} + +.card-outline-danger { + background-color: transparent; + border-color: #d9534f; +} + +.card-inverse .card-header, +.card-inverse .card-footer { + border-color: rgba(255, 255, 255, 0.2); +} +.card-inverse .card-header, +.card-inverse .card-footer, +.card-inverse .card-title, +.card-inverse .card-blockquote { + color: #fff; +} +.card-inverse .card-link, +.card-inverse .card-text, +.card-inverse .card-subtitle, +.card-inverse .card-blockquote .blockquote-footer { + color: rgba(255, 255, 255, 0.65); +} +.card-inverse .card-link:hover, .card-inverse .card-link:focus { + color: #fff; +} + +.card-blockquote { + padding: 0; + margin-bottom: 0; + border-left: 0; +} + +.card-img { + border-radius: .25em; +} + +.card-img-overlay { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + padding: 15px; +} + +.card-img-top { + border-top-right-radius: 4px; + border-top-left-radius: 4px; +} + +.card-img-bottom { + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} diff --git a/docs/styles/bootstrap.min.css b/docs/styles/bootstrap.min.css new file mode 100644 index 0000000..ed3905e --- /dev/null +++ b/docs/styles/bootstrap.min.css @@ -0,0 +1,6 @@ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;filter:alpha(opacity=0);opacity:0;line-break:auto}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}} +/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/docs/styles/compodoc.css b/docs/styles/compodoc.css new file mode 100644 index 0000000..91f1bba --- /dev/null +++ b/docs/styles/compodoc.css @@ -0,0 +1,704 @@ +body { + position: absolute; + width: 100%; + height: 100%; + font-family: 'Roboto', sans-serif; +} + +/* roboto-300 - latin */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 300; + src: url('../fonts/roboto-v15-latin-300.eot'); /* IE9 Compat Modes */ + src: local('Roboto Light'), local('Roboto-Light'), + url('../fonts/roboto-v15-latin-300.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('../fonts/roboto-v15-latin-300.woff2') format('woff2'), /* Super Modern Browsers */ + url('../fonts/roboto-v15-latin-300.woff') format('woff'), /* Modern Browsers */ + url('../fonts/roboto-v15-latin-300.ttf') format('truetype'), /* Safari, Android, iOS */ + url('../fonts/roboto-v15-latin-300.svg#Roboto') format('svg'); /* Legacy iOS */ +} +/* roboto-regular - latin */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 400; + src: url('../fonts/roboto-v15-latin-regular.eot'); /* IE9 Compat Modes */ + src: local('Roboto'), local('Roboto-Regular'), + url('../fonts/roboto-v15-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('../fonts/roboto-v15-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */ + url('../fonts/roboto-v15-latin-regular.woff') format('woff'), /* Modern Browsers */ + url('../fonts/roboto-v15-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */ + url('../fonts/roboto-v15-latin-regular.svg#Roboto') format('svg'); /* Legacy iOS */ +} +/* roboto-700 - latin */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 700; + src: url('../fonts/roboto-v15-latin-700.eot'); /* IE9 Compat Modes */ + src: local('Roboto Bold'), local('Roboto-Bold'), + url('../fonts/roboto-v15-latin-700.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('../fonts/roboto-v15-latin-700.woff2') format('woff2'), /* Super Modern Browsers */ + url('../fonts/roboto-v15-latin-700.woff') format('woff'), /* Modern Browsers */ + url('../fonts/roboto-v15-latin-700.ttf') format('truetype'), /* Safari, Android, iOS */ + url('../fonts/roboto-v15-latin-700.svg#Roboto') format('svg'); /* Legacy iOS */ +} + +h1 { + font-size: 26px; +} +h2 { + font-size: 22px; +} +h3 { + font-size: 20px; +} +h4, h5 { + font-size: 18px; +} + +/** + * Mobile navbar + */ + +.navbar { + min-height: 50px; +} + +.navbar-brand { + height: 50px; + font-size: 14px; + line-height: 20px; + padding: 15px; +} + +.navbar-static-top { + margin-bottom: 0; + height: 50px; +} + + +/** + * Main container + */ + +.container-fluid { + overflow-y: hidden; + overflow-x: hidden; +} + +.container-fluid.main { + height: 100%; + padding: 0; +} + +.container-fluid.overview { + margin-top: 50px; +} + +.container-fluid.modules, .container-fluid.components, .container-fluid.directives, .container-fluid.classes, .container-fluid.injectables, .container-fluid.pipes, .content.routes table { + margin-top: 25px; +} + +.container-fluid.module { + padding: 0; + margin-top: 0; +} + +.container-fluid.module h3 a { + margin-left: 10px; + color: #333; +} + +.row.main { + height: 100%; + margin: 0; +} + + +/** + * Copyright + */ + +.copyright { + margin: 0; + padding: 15px; + text-align: center; + display: flex; + flex-direction: column; + display: -webkit-flex; + -webkit-flex-direction: column; + align-items: center; + -webkit-align-items: center; + z-index: 1; +} + +.copyright img { + width: 80px; + margin-top: 10px; +} + +.copyright a { + color: #009dff; + text-decoration: underline; +} + + +/** + * Content + */ + +.content { + height: 100%; + overflow-y: auto; + -webkit-overflow-scrolling: touch; + width: calc(100% - 300px); + position: absolute; + top: 0; + left: 300px; + padding: 15px 30px; +} + +.content>h1:first-of-type { + margin-top: 15px +} + +.content>h3:first-of-type { + margin-top: 5px; +} + +.content.readme h1:first-of-type { + margin-top: 0; +} + +.content table { + margin-top: 20px; +} + + +/** + * Icons + */ + +.glyphicon, .fa { + margin-right: 10px; +} + +.fa-code-fork { + margin-right: 14px; +} + +.fa-long-arrow-down { + margin-right: 16px; +} + + +/** + * Menu + */ + +#book-search-input { + padding: 6px; + background: 0 0; + transition: top .5s ease; + background: #fff; + border-bottom: 1px solid rgba(0, 0, 0, .07); + border-top: 1px solid rgba(0, 0, 0, .07); + margin-bottom: 5px; + margin-top: -1px +} + +#book-search-input input, #book-search-input input:focus, #book-search-input input:hover { + width: 100%; + background: 0 0; + border: 1px solid transparent; + box-shadow: none; + outline: 0; + line-height: 22px; + padding: 7px 7px; + color: inherit +} + +.panel-body { + padding: 0px; +} + +.panel-group .panel-heading+.panel-collapse>.list-group, .panel-group .panel-heading+.panel-collapse>.panel-body { + border-top: 0; +} + +.panel-body table tr td { + padding-left: 15px +} + +.panel-body .table { + margin-bottom: 0px; +} + +.panel-group .panel:first-child { + border-top: 0; +} + +.menu { + background: #fafafa; + border-right: 1px solid #e7e7e7; + height: 100%; + padding: 0; + width: 300px; + overflow-y: auto; + -webkit-overflow-scrolling: touch; +} + +.menu ul.list { + list-style: none; + margin: 0; + padding: 0; +} + +.menu ul.list li a { + display: block; + padding: 10px 15px; + border-bottom: none; + color: #364149; + background: 0 0; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + position: relative +} + +.menu ul.list li a.active { + color: #008cff; +} + +.menu ul.list li.divider { + height: 1px; + margin: 7px 0; + overflow: hidden; + background: rgba(0, 0, 0, .07) +} + +.menu ul.list li.chapter ul.links { + padding-left: 20px; +} + +.menu ul.list li.for-chapter { + padding-left: 20px; +} + +.menu ul.list li.chapter .simple { + padding: 10px 15px; + position: relative; +} + +.menu .panel-group { + width: 100%; + height: 100%; + overflow-y: auto; +} + +.menu .panel-default { + border-right: none; + border-left: none; + border-bottom: none; +} + +.menu .panel-group .panel-heading+.panel-collapse>.panel-body { + border-top: none; + overflow-y: auto; + max-height: 350px; +} + +.menu .panel-default:last-of-type { + border-bottom: 1px solid #ddd; +} + +.panel-group .panel+.panel { + margin-top: 0; +} + +.panel-group .panel { + z-index: 2; + position: relative; + border-radius: 0; + box-shadow: none; + border-left: 0; + border-right: 0; +} + +.menu a { + color: #3c3c3c; +} + +.xs-menu ul.list li:nth-child(2){ + margin: 0; + background: none; +} +.menu ul.list li:nth-child(2){ + margin: 0; + background: none; +} +.menu .title { + padding: 8px 0; +} + +.menu-toggler { + cursor: pointer; +} +.menu-toggler .fa-angle-down, .menu-toggler .fa-angle-up { + cursor: pointer; + padding: 5px 10px; + font-size: 16px; + position: absolute; + right: 0; + top: 7px; +} + +.overview .card-title .fa { + font-size: 50px; +} + +.breadcrumb { + background: none; + padding-left: 0; + margin-bottom: 10px; + font-size: 24px; + padding-top: 0; +} + +.breadcrumb a { + text-decoration: underline; + color: #333; +} + +.comment { + margin: 15px 0; +} + +.io-description { + margin: 10px 0; +} + +.io-file { + margin: 20px 0; +} + +.navbar .btn-menu { + position: absolute; + right: 0; + margin: 10px; +} + +.content ul.nav { + padding-left: 0; +} + +.xs-menu { + height: calc(100% - 50px); + display: none; + width: 100%; + overflow-y: scroll; + z-index: 1; + top: 50px; + position: absolute; +} + +.xs-menu .copyright { + margin-top: 20px; + position: relative; +} + +.tab-source-code { + padding: 10px 0; +} + +pre { + padding: 12px 12px; + border: none; + background: #23241f; +} +code { + background: none; + padding: 2px 0; +} + +@media (max-width: 767px) { + .container-fluid { + margin-top: 50px; + } + .container-fluid.main { + height: calc(100% - 50px); + } + .content { + width: 100%; + left: 0; + position: relative; + } + .menu ul.list li.title { + display: none; + } +} + +/** + * Search + */ + +.search-results { + display: none; + max-width: 800px; + margin: 0 auto; + padding: 20px 15px 40px 15px +} +.search-results .no-results { + display: none; +} + +.with-search .search-results { + display: block; +} +.with-search .content-data { + display: none; +} + +.with-search .xs-menu { + height: 51px; +} +.with-search .xs-menu nav { + display: none; +} + +.search-results.no-results .has-results { + display: none; +} + +.search-results.no-results .no-results { + display: block; +} +.search-results .search-results-title { + text-transform: uppercase; + text-align: center; + font-weight: 200; + margin-bottom: 35px; + opacity: .6 +} +.search-results ul.search-results-list { + list-style-type: none; + padding-left: 0; +} +.search-results ul.search-results-list li { + margin-bottom: 1.5rem; + padding-bottom: 0.5rem; +} +.search-results ul.search-results-list li p em { + background-color: rgba(255, 220, 0, 0.4); + font-style: normal; +} + +.jsdoc-params { + list-style: square; + margin-top: 10px; + margin-bottom: 0 !important; +} +.jsdoc-params li { + padding-bottom: 10px; +} +.jsdoc-example-ul ul { + padding-left: 20px; +} + +i { + font-style: italic; +} + +.coverage a { + color: #333; + text-decoration: underline; +} + +.coverage tr.low { + background: rgba(216, 96, 75, 0.75); +} +.coverage tr.medium { + background: rgba(218, 178, 38, 0.75); +} +.coverage tr.good { + background: rgba(143, 189, 8, 0.75); +} +.coverage tr.very-good { + background: rgba(77, 199, 31, 0.75); +} + +.coverage-header { + background: #fafafa; +} +thead.coverage-header >tr>td, thead.coverage-header>tr>th { + border-bottom-width: 0; +} +.coverage-count { + color: grey; + font-size: 12px; + margin-left: 10px; + display: inline-block; + width: 50px; +} +.coverage-badge { + background: #5d5d5d; + border-radius: 4px; + display: inline-block; + color: white; + padding: 4px; + padding-right: 0; + padding-left: 8px; +} +.coverage-badge .count{ + padding: 6px; + margin-left: 5px; + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; +} +.coverage-badge .count.low { + background: #d8624c; +} +.coverage-badge .count.medium { + background: #dab226; +} +.coverage-badge .count.good { + background: #8fbd08; +} +.coverage-badge .count.very-good { + background: #4dc71f; +} + +.content ul { + list-style: disc; + margin-top: 0; + padding-left: 20px; + margin-bottom: 16px; +} +.content ul.list-group { + padding-left: 0; +} +.content ul ul { + list-style-type: circle; +} +.compodoc-table { + width: inherit; +} +.compodoc-table thead { + font-weight: bold; +} +.modifier { + background: #9a9a9a; + padding: 1px 5px; + color: white; + border-radius: 4px; +} +.modifier-icon { + color: #c7254e; +} +.modifier-icon.method { + color: white; + background: #c7254e; + padding: 4px; + border-radius: 8px; + font-size: 10px; + margin-right: 2px; +} +.modifier-icon.method.square { + border-radius: 4px; +} +.modifier-icon.method.export { + display: none; +} +.modifier-icon.method .fa-circle, .modifier-icon.method .fa-square { + display: none; +} +.modifier-icon.method .fa-lock { + margin-right: 0; +} + +/* Routes graph */ + +.node text { + font-size: 12px; +} + +.node .icon { + font-size: 15px; + cursor: default; +} +.node .icon.has-children { + cursor: pointer; +} + +path.link { + fill: none; + stroke: #9ecae1; + stroke-width: 1.5px; +} + +#body-routes a { + text-decoration: underline; +} +#body-routes svg { + overflow: visible; +} + +/* Miscellaneous */ + +.content.miscellaneous h2 { + margin-bottom: 20px; +} +.content.miscellaneous h4 { + padding-top: 20px; +} + +/* highlight line */ +.line-highlight { + background: linear-gradient(to right, hsla(0, 0%, 100%,.1) 70%, hsla(24, 20%, 50%,0)); +} + +#tree-container { + width: 100%; + height: 100%; +} + +#tree { + position: relative; +} +.tree-legend { + position: absolute; + bottom: 10px; + left: 10px; + border: 1px solid #ddd; + padding: 5px 10px; +} +.tree-legend .title { + margin-bottom: 8px; +} +.tree-legend .color { + width: 20px; + height: 12px; + display: inline-block; + margin-right: 5px; +} +.tree-legend .htmlelement { + background: #97c2fc; +} +.tree-legend .component { + background: #fb7e81; +} +.tree-legend .directive { + background: #FF9800; +} + +#module-graph-svg { + width: 100%; + height: 250px; +} + +#module-graph-svg svg { + width: 100%; + height: 100%; +} diff --git a/docs/styles/font-awesome.min.css b/docs/styles/font-awesome.min.css new file mode 100644 index 0000000..9b27f8e --- /dev/null +++ b/docs/styles/font-awesome.min.css @@ -0,0 +1,4 @@ +/*! + * Font Awesome 4.6.3 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.6.3');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.6.3') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.6.3') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.6.3') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.6.3') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.6.3#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto} diff --git a/docs/styles/laravel.css b/docs/styles/laravel.css new file mode 100644 index 0000000..fc53842 --- /dev/null +++ b/docs/styles/laravel.css @@ -0,0 +1,69 @@ +.navbar-default .navbar-brand { + color: #f4645f; + text-decoration: none; + font-size: 16px; +} + +.menu ul.list li a[data-type="chapter-link"], .menu ul.list li.chapter .simple { + color: #525252; + border-bottom: 1px dashed rgba(0,0,0,.1); +} + +.content h1, .content h2, .content h3, .content h4, .content h5 { + color: #292e31; + font-weight: normal; +} + +.content { + color: #4c555a; +} + +a { + color: #f4645f; + text-decoration: underline; +} +a:hover { + color: #f1362f; +} + +.menu ul.list li:nth-child(2) { + margin-top: 0; +} + +.menu ul.list li.title a { + color: #f4645f; + text-decoration: none; + font-size: 16px; +} + +.menu ul.list li a { + color: #f4645f; + text-decoration: none; +} +.menu ul.list li a.active { + color: #f4645f; + font-weight: bold; +} + +code { + box-sizing: border-box; + display: inline-block; + padding: 0 5px; + background: #f0f2f1; + border-radius: 3px; + color: #b93d6a; + font-size: 13px; + line-height: 20px; + box-shadow: 0 1px 1px rgba(0,0,0,.125); +} + +pre { + margin: 0; + padding: 12px 12px; + background: rgba(238,238,238,.35); + border-radius: 3px; + font-size: 13px; + line-height: 1.5em; + font-weight: 500; + box-shadow: 0 1px 1px rgba(0,0,0,.125); +} diff --git a/docs/styles/original.css b/docs/styles/original.css new file mode 100644 index 0000000..735dcd9 --- /dev/null +++ b/docs/styles/original.css @@ -0,0 +1,47 @@ +.navbar-default .navbar-brand, .menu ul.list li.title { + font-weight: bold; + color: #3c3c3c; + padding-bottom: 5px; +} + +.menu ul.list li a[data-type="chapter-link"], .menu ul.list li.chapter .simple { + font-weight: bold; + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + font-size: 14px; +} + +.menu ul.list li a[href="./routes.html"] { + border-bottom: none; +} + +.menu ul.list > li:nth-child(2) { + display: none; +} + +.menu ul.list li.chapter ul.links { + background: #fff; + padding-left: 0; +} + +.menu ul.list li.chapter ul.links li { + border-bottom: 1px solid #ddd; + padding-left: 20px; +} + +.menu ul.list li.chapter ul.links li:last-child { + border-bottom: none; +} + +.menu ul.list li a.active { + color: inherit; + font-weight: bold; +} + +#book-search-input { + margin-bottom: 0; + border-bottom: none; +} +.menu ul.list li.divider { + margin: 0; +} diff --git a/docs/styles/postmark.css b/docs/styles/postmark.css new file mode 100644 index 0000000..4a996c1 --- /dev/null +++ b/docs/styles/postmark.css @@ -0,0 +1,210 @@ +.navbar-default { + background: #FFDE00; + border: none; +} +.navbar-default .navbar-brand { + color: #333; + font-weight: bold; +} +.menu { + background: #333; + color: #fcfcfc; +} +.menu ul.list li a { + color: #333; +} + +.menu ul.list li.title { + background: #FFDE00; + color: #333; + padding-bottom: 5px; +} + +.menu ul.list li:nth-child(2) { + margin-top: 0; +} + +.menu ul.list li.chapter a, .menu ul.list li.chapter .simple { + color: white; + text-decoration: none; +} + +.menu ul.list li.chapter ul.links a { + color: #949494; + text-transform: none; + padding-left: 35px; +} +.menu ul.list li.chapter ul.links a:hover, .menu ul.list li.chapter ul.links a.active { + color: #FFDE00; +} + +.menu ul.list li.chapter ul.links { + padding-left: 0; +} + +.menu ul.list li.divider { + background: rgba(255, 255, 255, 0.07); +} + +#book-search-input input, #book-search-input input:focus, #book-search-input input:hover { + color: #949494; +} + +.copyright { + color: #b3b3b3; +} + +.content { + background: #fcfcfc; +} + +.content a { + color: #007DCC; +} +.content a:visited { + color: #0165a5; +} +.copyright { + background: #272525; +} +.menu ul.list li:nth-last-child(2) { + background: none; +} +.list-group-item:first-child, .list-group-item:last-child { + border-radius: 0; +} + +.menu ul.list li.title a { + text-decoration: none; + font-weight: bold; +} +.menu ul.list li.title a:hover { + background: rgba(255,255,255,0.1); +} + +.breadcrumb>li+li:before { + content: "»\00a0" +} + +.breadcrumb { + padding-bottom: 15px; + border-bottom: 1px solid #e1e4e5; +} +code { + white-space: nowrap; + max-width: 100%; + background: #F5F5F5; + padding: 2px 5px; + color: #666666; + overflow-x: auto; + border-radius: 0; +} +pre { + white-space: pre; + margin: 0; + padding: 12px 12px; + font-size: 12px; + line-height: 1.5; + display: block; + overflow: auto; + color: #404040; + background: #f3f3f3; +} +pre code.hljs { + border: none; + background: inherit; +} + +/* +Atom One Light by Daniel Gamage +Original One Light Syntax theme from https://github.com/atom/one-light-syntax +base: #fafafa +mono-1: #383a42 +mono-2: #686b77 +mono-3: #a0a1a7 +hue-1: #0184bb +hue-2: #4078f2 +hue-3: #a626a4 +hue-4: #50a14f +hue-5: #e45649 +hue-5-2: #c91243 +hue-6: #986801 +hue-6-2: #c18401 +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + color: #383a42; + background: #fafafa; +} + +.hljs-comment, +.hljs-quote { + color: #a0a1a7; + font-style: italic; +} + +.hljs-doctag, +.hljs-keyword, +.hljs-formula { + color: #a626a4; +} + +.hljs-section, +.hljs-name, +.hljs-selector-tag, +.hljs-deletion, +.hljs-subst { + color: #e45649; +} + +.hljs-literal { + color: #0184bb; +} + +.hljs-string, +.hljs-regexp, +.hljs-addition, +.hljs-attribute, +.hljs-meta-string { + color: #50a14f; +} + +.hljs-built_in, +.hljs-class .hljs-title { + color: #c18401; +} + +.hljs-attr, +.hljs-variable, +.hljs-template-variable, +.hljs-type, +.hljs-selector-class, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-number { + color: #986801; +} + +.hljs-symbol, +.hljs-bullet, +.hljs-link, +.hljs-meta, +.hljs-selector-id, +.hljs-title { + color: #4078f2; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} + +.hljs-link { + text-decoration: underline; +} diff --git a/docs/styles/prism.css b/docs/styles/prism.css new file mode 100644 index 0000000..d9fec1f --- /dev/null +++ b/docs/styles/prism.css @@ -0,0 +1,208 @@ +/* http://prismjs.com/download.html?themes=prism-okaidia&languages=markup+css+clike+javascript+json+markdown+typescript&plugins=line-highlight+line-numbers */ +/** + * okaidia theme for JavaScript, CSS and HTML + * Loosely based on Monokai textmate theme by http://www.monokai.nl/ + * @author ocodia + */ + +code[class*="language-"], +pre[class*="language-"] { + color: #f8f8f2; + background: none; + text-shadow: 0 1px rgba(0, 0, 0, 0.3); + font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + line-height: 1.5; + + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} + +/* Code blocks */ +pre[class*="language-"] { + padding: 1em; + margin: .5em 0; + overflow: auto; + border-radius: 0.3em; +} + +:not(pre) > code[class*="language-"], +pre[class*="language-"] { + background: #272822; +} + +/* Inline code */ +:not(pre) > code[class*="language-"] { + padding: .1em; + border-radius: .3em; + white-space: normal; +} + +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: slategray; +} + +.token.punctuation { + color: #f8f8f2; +} + +.namespace { + opacity: .7; +} + +.token.property, +.token.tag, +.token.constant, +.token.symbol, +.token.deleted { + color: #f92672; +} + +.token.boolean, +.token.number { + color: #ae81ff; +} + +.token.selector, +.token.attr-name, +.token.string, +.token.char, +.token.builtin, +.token.inserted { + color: #a6e22e; +} + +.token.operator, +.token.entity, +.token.url, +.language-css .token.string, +.style .token.string, +.token.variable { + color: #f8f8f2; +} + +.token.atrule, +.token.attr-value, +.token.function { + color: #e6db74; +} + +.token.keyword { + color: #66d9ef; +} + +.token.regex, +.token.important { + color: #fd971f; +} + +.token.important, +.token.bold { + font-weight: bold; +} +.token.italic { + font-style: italic; +} + +.token.entity { + cursor: help; +} + +pre[data-line] { + position: relative; + padding: 1em 0 1em 3em; +} + +.line-highlight { + position: absolute; + left: 0; + right: 0; + padding: inherit 0; + margin-top: 1em; /* Same as .prism’s padding-top */ + + background: hsla(24, 20%, 50%,.08); + background: linear-gradient(to right, hsla(24, 20%, 50%,.1) 70%, hsla(24, 20%, 50%,0)); + + pointer-events: none; + + line-height: inherit; + white-space: pre; +} + + .line-highlight:before, + .line-highlight[data-end]:after { + content: attr(data-start); + position: absolute; + top: .4em; + left: .6em; + min-width: 1em; + padding: 0 .5em; + background-color: hsla(24, 20%, 50%,.4); + color: hsl(24, 20%, 95%); + font: bold 65%/1.5 sans-serif; + text-align: center; + vertical-align: .3em; + border-radius: 999px; + text-shadow: none; + box-shadow: 0 1px white; + } + + .line-highlight[data-end]:after { + content: attr(data-end); + top: auto; + bottom: .4em; + } + +pre.line-numbers { + position: relative; + padding-left: 3.8em; + counter-reset: linenumber; +} + +pre.line-numbers > code { + position: relative; +} + +.line-numbers .line-numbers-rows { + position: absolute; + pointer-events: none; + top: 0; + font-size: 100%; + left: -3.8em; + width: 3em; /* works for line-numbers below 1000 lines */ + letter-spacing: -1px; + border-right: 1px solid #999; + + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + +} + + .line-numbers-rows > span { + pointer-events: none; + display: block; + counter-increment: linenumber; + } + + .line-numbers-rows > span:before { + content: counter(linenumber); + color: #999; + display: block; + padding-right: 0.8em; + text-align: right; + } diff --git a/docs/styles/readthedocs.css b/docs/styles/readthedocs.css new file mode 100644 index 0000000..a101f20 --- /dev/null +++ b/docs/styles/readthedocs.css @@ -0,0 +1,98 @@ +.navbar-default { + background: #2980B9; + border: none; +} +.navbar-default .navbar-brand { + color: #fcfcfc; +} +.menu { + background: #343131; + color: #fcfcfc; +} +.menu ul.list li a { + color: #fcfcfc; +} + +.menu ul.list li a.active { + color: #0099e5; +} + +.menu ul.list li.title { + background: #2980B9; + padding-bottom: 5px; +} + +.menu ul.list li:nth-child(2) { + margin-top: 0; +} + +.menu ul.list li.chapter a, .menu ul.list li.chapter .simple { + color: #555; + text-transform: uppercase; + text-decoration: none; +} + +.menu ul.list li.chapter ul.links a { + color: #b3b3b3; + text-transform: none; + padding-left: 35px; +} +.menu ul.list li.chapter ul.links a:hover { + background: #4E4A4A; +} + +.menu ul.list li.chapter ul.links { + padding-left: 0; +} + +.menu ul.list li.divider { + background: rgba(255, 255, 255, 0.07); +} + +#book-search-input input, #book-search-input input:focus, #book-search-input input:hover { + color: #949494; +} + +.copyright { + color: #b3b3b3; +} + +.content { + background: #fcfcfc; +} + +.content a { + color: #2980B9; +} +.content a:hover { + color: #3091d1; +} +.content a:visited { + color: #9B59B6; +} +.copyright { + background: #272525; +} +.menu ul.list li:nth-last-child(2) { + background: none; +} +code { + white-space: nowrap; + max-width: 100%; + background: #fff; + padding: 2px 5px; + color: #E74C3C; + overflow-x: auto; + border-radius: 0; +} +pre { + white-space: pre; + margin: 0; + padding: 12px 12px; + font-size: 12px; + line-height: 1.5; + display: block; + overflow: auto; + color: #404040; + background: rgba(238,238,238,.35); +} diff --git a/docs/styles/reset.css b/docs/styles/reset.css new file mode 100644 index 0000000..af94440 --- /dev/null +++ b/docs/styles/reset.css @@ -0,0 +1,48 @@ +/* http://meyerweb.com/eric/tools/css/reset/ + v2.0 | 20110126 + License: none (public domain) +*/ + +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, big, cite, code, +del, dfn, em, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +b, u, i, center, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td, +article, aside, canvas, details, embed, +figure, figcaption, footer, header, hgroup, +menu, nav, output, ruby, section, summary, +time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline; +} +/* HTML5 display-role reset for older browsers */ +article, aside, details, figcaption, figure, +footer, header, hgroup, menu, nav, section { + display: block; +} +body { + line-height: 1; +} +ol, ul { + list-style: none; +} +blockquote, q { + quotes: none; +} +blockquote:before, blockquote:after, +q:before, q:after { + content: ''; + content: none; +} +table { + border-collapse: collapse; + border-spacing: 0; +} \ No newline at end of file diff --git a/docs/styles/stripe.css b/docs/styles/stripe.css new file mode 100644 index 0000000..2b33376 --- /dev/null +++ b/docs/styles/stripe.css @@ -0,0 +1,65 @@ +.navbar-default .navbar-brand { + color: #0099e5; +} + +.menu ul.list li a[data-type="chapter-link"], .menu ul.list li.chapter .simple { + color: #939da3; + text-transform: uppercase; +} + +.content h1, .content h2, .content h3, .content h4, .content h5 { + color: #292e31; + font-weight: normal; +} + +.content { + color: #4c555a; +} + +.menu ul.list li.title { + padding: 5px 0; +} + +a { + color: #0099e5; + text-decoration: none; +} +a:hover { + color: #292e31; + text-decoration: none; +} + +.menu ul.list li:nth-child(2) { + margin-top: 0; +} + +.menu ul.list li.title a, .navbar a { + color: #0099e5; + text-decoration: none; + font-size: 16px; +} + +.menu ul.list li a.active { + color: #0099e5; +} + +code { + box-sizing: border-box; + display: inline-block; + padding: 0 5px; + background: #fafcfc; + border-radius: 4px; + color: #b93d6a; + font-size: 13px; + line-height: 20px +} + +pre { + margin: 0; + padding: 12px 12px; + background: #272b2d; + border-radius: 5px; + font-size: 13px; + line-height: 1.5em; + font-weight: 500 +} diff --git a/docs/styles/style.css b/docs/styles/style.css new file mode 100644 index 0000000..7b38040 --- /dev/null +++ b/docs/styles/style.css @@ -0,0 +1,6 @@ +@import "./reset.css"; +@import "./bootstrap.min.css"; +@import "./bootstrap-card.css"; +@import "./prism.css"; +@import "./font-awesome.min.css"; +@import "./compodoc.css"; diff --git a/docs/styles/vagrant.css b/docs/styles/vagrant.css new file mode 100644 index 0000000..c1c35b1 --- /dev/null +++ b/docs/styles/vagrant.css @@ -0,0 +1,96 @@ +.navbar-default .navbar-brand { + background: white; + color: #8d9ba8; +} + +.menu .list { + background: #0c5593; +} + +.menu .chapter { + padding: 0 20px; +} + +.menu ul.list li a[data-type="chapter-link"], .menu ul.list li.chapter .simple { + color: white; + text-transform: uppercase; + border-bottom: 1px solid rgba(255,255,255,0.4); +} + +.content h1, .content h2, .content h3, .content h4, .content h5 { + color: #292e31; + font-weight: normal; +} + +.content { + color: #4c555a; +} + +a { + color: #0094bf; + text-decoration: underline; +} +a:hover { + color: #f1362f; +} + +.menu ul.list li.title { + background: white; + padding-bottom: 5px; +} + +.menu ul.list li:nth-child(2) { + margin-top: 0; +} + +.menu ul.list li:nth-last-child(2) { + background: none; +} + +.menu ul.list li.title a { + padding: 10px 15px; +} + +.menu ul.list li.title a, .navbar a { + color: #8d9ba8; + text-decoration: none; + font-size: 16px; + font-weight: 300; +} + +.menu ul.list li a { + color: white; + padding: 10px; + font-weight: 300; + text-decoration: none; +} +.menu ul.list li a.active { + color: white; + font-weight: bold; +} + +.copyright { + color: white; + background: #000; +} + +code { + box-sizing: border-box; + display: inline-block; + padding: 0 5px; + background: rgba(0,148,191,0.1); + border-radius: 3px; + color: #0094bf; + font-size: 13px; + line-height: 20px; +} + +pre { + margin: 0; + padding: 12px 12px; + background: rgba(238,238,238,.35); + border-radius: 3px; + font-size: 13px; + line-height: 1.5em; + font-weight: 500; +} diff --git a/application/protractor.conf.js b/e2e/protractor.conf.js similarity index 86% rename from application/protractor.conf.js rename to e2e/protractor.conf.js index 7ee3b5e..86776a3 100644 --- a/application/protractor.conf.js +++ b/e2e/protractor.conf.js @@ -6,7 +6,7 @@ const { SpecReporter } = require('jasmine-spec-reporter'); exports.config = { allScriptsTimeout: 11000, specs: [ - './e2e/**/*.e2e-spec.ts' + './src/**/*.e2e-spec.ts' ], capabilities: { 'browserName': 'chrome' @@ -21,8 +21,8 @@ exports.config = { }, onPrepare() { require('ts-node').register({ - project: 'e2e/tsconfig.e2e.json' + project: require('path').join(__dirname, './tsconfig.e2e.json') }); jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); } -}; +}; \ No newline at end of file diff --git a/application/e2e/app.e2e-spec.ts b/e2e/src/app.e2e-spec.ts similarity index 54% rename from application/e2e/app.e2e-spec.ts rename to e2e/src/app.e2e-spec.ts index 7d1ff82..e42d1f9 100644 --- a/application/e2e/app.e2e-spec.ts +++ b/e2e/src/app.e2e-spec.ts @@ -1,10 +1,10 @@ -import { ApplicationPage } from './app.po'; +import { AppPage } from './app.po'; -describe('application App', () => { - let page: ApplicationPage; +describe('workspace-project App', () => { + let page: AppPage; beforeEach(() => { - page = new ApplicationPage(); + page = new AppPage(); }); it('should display welcome message', () => { diff --git a/application/e2e/app.po.ts b/e2e/src/app.po.ts similarity index 85% rename from application/e2e/app.po.ts rename to e2e/src/app.po.ts index 86cdb04..82ea75b 100644 --- a/application/e2e/app.po.ts +++ b/e2e/src/app.po.ts @@ -1,6 +1,6 @@ import { browser, by, element } from 'protractor'; -export class ApplicationPage { +export class AppPage { navigateTo() { return browser.get('/'); } diff --git a/application/e2e/tsconfig.e2e.json b/e2e/tsconfig.e2e.json similarity index 76% rename from application/e2e/tsconfig.e2e.json rename to e2e/tsconfig.e2e.json index 1d9e5ed..a6dd622 100644 --- a/application/e2e/tsconfig.e2e.json +++ b/e2e/tsconfig.e2e.json @@ -1,8 +1,7 @@ { "extends": "../tsconfig.json", "compilerOptions": { - "outDir": "../out-tsc/e2e", - "baseUrl": "./", + "outDir": "../out-tsc/app", "module": "commonjs", "target": "es5", "types": [ @@ -11,4 +10,4 @@ "node" ] } -} +} \ No newline at end of file diff --git a/gulpfile.js b/gulpfile.js deleted file mode 100644 index 88aabe1..0000000 --- a/gulpfile.js +++ /dev/null @@ -1,247 +0,0 @@ -/* eslint-disable */ -var gulp = require('gulp'), - path = require('path'), - ngc = require('@angular/compiler-cli/src/main').main, - rollup = require('gulp-rollup'), - rename = require('gulp-rename'), - del = require('del'), - runSequence = require('run-sequence'), - inlineResources = require('./tools/gulp/inline-resources'); - -const rootFolder = path.join(__dirname); -const srcFolder = path.join(rootFolder, 'src'); -const tmpFolder = path.join(rootFolder, '.tmp'); -const buildFolder = path.join(rootFolder, 'build'); -const distFolder = path.join(rootFolder, 'dist'); - -/** - * 1. Delete /dist folder - */ -gulp.task('clean:dist', function () { - - // Delete contents but not dist folder to avoid broken npm links - // when dist directory is removed while npm link references it. - return deleteFolders([distFolder + '/**', '!' + distFolder]); -}); - -/** - * 2. Clone the /src folder into /.tmp. If an npm link inside /src has been made, - * then it's likely that a node_modules folder exists. Ignore this folder - * when copying to /.tmp. - */ -gulp.task('copy:source', function () { - return gulp.src([`${srcFolder}/**/*`, `!${srcFolder}/node_modules`]) - .pipe(gulp.dest(tmpFolder)); -}); - -/** - * 3. Inline template (.html) and style (.css) files into the the component .ts files. - * We do this on the /.tmp folder to avoid editing the original /src files - */ -gulp.task('inline-resources', function () { - return Promise.resolve() - .then(() => inlineResources(tmpFolder)); -}); - - -/** - * 4. Run the Angular compiler, ngc, on the /.tmp folder. This will output all - * compiled modules to the /build folder. - */ -gulp.task('ngc', function () { - const exitCode = ngc([ '--project', `${tmpFolder}/tsconfig.es5.json` ]); - - if (exitCode === 1) { - // This error is caught in the 'compile' task by the runSequence method callback - // so that when ngc fails to compile, the whole compile process stops running - return Promise.reject('ngc compilation failed'); - } - - return Promise.resolve(exitCode); -}); - -/** - * 5. Run rollup inside the /build folder to generate our Flat ES module and place the - * generated file into the /dist folder - */ -gulp.task('rollup:fesm', function () { - return gulp.src(`${buildFolder}/**/*.js`) - // transform the files here. - .pipe(rollup({ - - // Bundle's entry point - // See https://github.com/rollup/rollup/wiki/JavaScript-API#entry - entry: `${buildFolder}/index.js`, - - // Allow mixing of hypothetical and actual files. "Actual" files can be files - // accessed by Rollup or produced by plugins further down the chain. - // This prevents errors like: 'path/file' does not exist in the hypothetical file system - // when subdirectories are used in the `src` directory. - allowRealFiles: true, - - // A list of IDs of modules that should remain external to the bundle - // See https://github.com/rollup/rollup/wiki/JavaScript-API#external - external: [ - '@angular/core', - '@angular/common', - '@angular/router', - 'rxjs', - 'rxjs/operators' - ], - - // Format of generated bundle - // See https://github.com/rollup/rollup/wiki/JavaScript-API#format - format: 'es', - onwarn: function (warning) { - // Suppress this error message... there are hundreds of them. Angular team says to ignore it. - // https://github.com/rollup/rollup/wiki/Troubleshooting#this-is-undefined - if (warning.code === 'THIS_IS_UNDEFINED') return; - console.error(warning.message); - } - })) - .pipe(gulp.dest(distFolder)); -}); - -/** - * 6. Run rollup inside the /build folder to generate our UMD module and place the - * generated file into the /dist folder - */ -gulp.task('rollup:umd', function () { - return gulp.src(`${buildFolder}/**/*.js`) - // transform the files here. - .pipe(rollup({ - - // Bundle's entry point - // See https://github.com/rollup/rollup/wiki/JavaScript-API#entry - entry: `${buildFolder}/index.js`, - - // Allow mixing of hypothetical and actual files. "Actual" files can be files - // accessed by Rollup or produced by plugins further down the chain. - // This prevents errors like: 'path/file' does not exist in the hypothetical file system - // when subdirectories are used in the `src` directory. - allowRealFiles: true, - - // A list of IDs of modules that should remain external to the bundle - // See https://github.com/rollup/rollup/wiki/JavaScript-API#external - external: [ - '@angular/core', - '@angular/common', - '@angular/router', - 'rxjs', - 'rxjs/operators' - ], - - // Format of generated bundle - // See https://github.com/rollup/rollup/wiki/JavaScript-API#format - format: 'umd', - - // Export mode to use - // See https://github.com/rollup/rollup/wiki/JavaScript-API#exports - exports: 'named', - - // The name to use for the module for UMD/IIFE bundles - // (required for bundles with exports) - // See https://github.com/rollup/rollup/wiki/JavaScript-API#modulename - moduleName: 'ngx-permissions', - - // See https://github.com/rollup/rollup/wiki/JavaScript-API#globals - globals: { - typescript: 'ts', - '@angular/core': '_angular_core', - '@angular/router': '_angular_router', - 'rxjs': 'rxjs', - 'rxjs/operators': 'rxjs_operators' - }, - onwarn: function (warning) { - // Suppress this error message... there are hundreds of them. Angular team says to ignore it. - // https://github.com/rollup/rollup/wiki/Troubleshooting#this-is-undefined - if (warning.code === 'THIS_IS_UNDEFINED') return; - console.error(warning.message); - } - })) - .pipe(rename('ngx-permissions.umd.js')) - .pipe(gulp.dest(distFolder)); -}); - -/** - * 7. Copy all the files from /build to /dist, except .js files. We ignore all .js from /build - * because with don't need individual modules anymore, just the Flat ES module generated - * on step 5. - */ -gulp.task('copy:build', function () { - return gulp.src([`${buildFolder}/**/*`, `!${buildFolder}/**/*.js`]) - .pipe(gulp.dest(distFolder)); -}); - -/** - * 8. Copy package.json from /src to /dist - */ -gulp.task('copy:manifest', function () { - return gulp.src([`${srcFolder}/package.json`]) - .pipe(gulp.dest(distFolder)); -}); - -/** - * 9. Copy README.md from / to /dist - */ -gulp.task('copy:readme', function () { - return gulp.src([path.join(rootFolder, 'README.MD')]) - .pipe(gulp.dest(distFolder)); -}); - -/** - * 10. Delete /.tmp folder - */ -gulp.task('clean:tmp', function () { - return deleteFolders([tmpFolder]); -}); - -/** - * 11. Delete /build folder - */ -gulp.task('clean:build', function () { - return deleteFolders([buildFolder]); -}); - -gulp.task('compile', function () { - runSequence( - 'clean:dist', - 'copy:source', - 'inline-resources', - 'ngc', - 'rollup:fesm', - 'rollup:umd', - 'copy:build', - 'copy:manifest', - 'copy:readme', - 'clean:build', - 'clean:tmp', - function (err) { - if (err) { - console.log('ERROR:', err.message); - deleteFolders([distFolder, tmpFolder, buildFolder]); - } else { - console.log('Compilation finished succesfully'); - } - }); -}); - -/** - * Watch for any change in the /src folder and compile files - */ -gulp.task('watch', function () { - gulp.watch(`${srcFolder}/**/*`, ['compile']); -}); - -gulp.task('clean', ['clean:dist', 'clean:tmp', 'clean:build']); - -gulp.task('build', ['clean', 'compile']); -gulp.task('build:watch', ['build', 'watch']); -gulp.task('default', ['build:watch']); - -/** - * Deletes the specified folder - */ -function deleteFolders(folders) { - return del(folders); -} diff --git a/init-test-bed.spec.ts b/init-test-bed.spec.ts deleted file mode 100644 index 69d9de4..0000000 --- a/init-test-bed.spec.ts +++ /dev/null @@ -1,17 +0,0 @@ -import 'reflect-metadata' -import 'zone.js/dist/zone.js' -import 'zone.js/dist/proxy.js' -import 'zone.js/dist/sync-test.js' -import 'zone.js/dist/jasmine-patch.js' -import 'zone.js/dist/async-test.js' -import 'zone.js/dist/fake-async-test.js' -import { TestBed } from '@angular/core/testing' -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting -} from '@angular/platform-browser-dynamic/testing' - -TestBed.initTestEnvironment( - BrowserDynamicTestingModule, - platformBrowserDynamicTesting() -) \ No newline at end of file diff --git a/karma.conf.js b/karma.conf.js deleted file mode 100644 index c34b824..0000000 --- a/karma.conf.js +++ /dev/null @@ -1,103 +0,0 @@ -// Karma configuration -// Generated on Sun Jun 11 2017 22:32:47 GMT+0200 (CEST) - -module.exports = function (config) { - config.set({ - - // base path that will be used to resolve all patterns (eg. files, exclude) - basePath: '', - - - // frameworks to use - // available frameworks: https://npmjs.org/browse/keyword/karma-adapter - frameworks: ['jasmine', 'karma-typescript'], - - - // list of files / patterns to load in the browser - files: [ - 'init-test-bed.spec.ts', - 'src/**/*.ts' - ], - - - // list of files to exclude - exclude: [ - ], - - // preprocess matching files before serving them to the browser - // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor - preprocessors: { - '**/*.ts': ['karma-typescript'] - }, - - karmaTypescriptConfig: { - bundlerOptions: { - entrypoints: /\.spec\.ts$/, - transforms: [ - require('karma-typescript-angular2-transform') - ] - }, - compilerOptions: { - lib: ['ES2015', 'DOM'] - }, - reports: - { - "cobertura": { - "directory": "coverage", - "filename": "coverage.xml", - "subdirectory": "cobertura" - }, - "html": "coverage", - "text-summary": "", - "lcovonly": { - "directory": "coverage", - "filename": "lcov.info", - "subdirectory": "lcovonly" - } - } - }, - customLaunchers: { - Chrome_with_debugging: { - base: 'Chrome', - flags: ['--remote-debugging-port=9222'], - debug: true - } - }, - browserNoActivityTimeout: 100000, - // test results reporter to use - // possible values: 'dots', 'progress' - // available reporters: https://npmjs.org/browse/keyword/karma-reporter - reporters: ['progress', 'karma-typescript'], - - - // web server port - port: 9876, - - - // enable / disable colors in the output (reporters and logs) - colors: true, - - - // level of logging - // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG - logLevel: config.LOG_INFO, - - - // enable / disable watching file and executing tests whenever any file changes - autoWatch: true, - - - // start these browsers - // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher - browsers: ['Chrome'], - - - // Continuous Integration mode - // if true, Karma captures browsers, runs the tests and exits - singleRun: false, - - // Concurrency level - // how many browser should be started simultaneous - concurrency: Infinity - }) -} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index b06431b..e693787 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,71 +1,597 @@ { "name": "ngx-permissions", - "version": "5.0.0-rc.0", + "version": "6.0.0", "lockfileVersion": 1, "requires": true, "dependencies": { - "@angular/common": { - "version": "6.0.0-rc.5", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-6.0.0-rc.5.tgz", - "integrity": "sha512-1NKIKHz7Zqt+OOOp6lF4w/O2/iKjhhYEYpjYG7MRzwQOJmSzxK2KEpw2m80I+rF/SqGakZ46MPthAwa9XC2IBw==", + "@angular-devkit/architect": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.6.0.tgz", + "integrity": "sha512-d/H8DxNk4f+EA/1BCP6QREyRRgd9Ul+PzFaObf0x6eEVRGylyKlA3vx2EepPm+P3lij0vRVhF08hDwJJ9n0jbQ==", "dev": true, + "requires": { + "@angular-devkit/core": "0.6.0", + "rxjs": "6.1.0" + } + }, + "@angular-devkit/build-angular": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.6.0.tgz", + "integrity": "sha512-HUrB9g8Dk1SQUlKrfDUkH97kiaOlriDBYULV5TBwonMj7cih3hUaPmcyHTqKrz/GzGTF2YXMT9DYo0hThWcdGA==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.6.0", + "@angular-devkit/build-optimizer": "0.6.0", + "@angular-devkit/core": "0.6.0", + "@ngtools/webpack": "6.0.0", + "ajv": "6.4.0", + "autoprefixer": "8.4.1", + "cache-loader": "1.2.2", + "chalk": "2.2.2", + "circular-dependency-plugin": "5.0.2", + "clean-css": "4.1.11", + "copy-webpack-plugin": "4.5.1", + "file-loader": "1.1.11", + "glob": "7.1.2", + "html-webpack-plugin": "3.2.0", + "istanbul": "0.4.5", + "istanbul-instrumenter-loader": "3.0.1", + "karma-source-map-support": "1.3.0", + "less": "3.0.4", + "less-loader": "4.1.0", + "license-webpack-plugin": "1.3.1", + "lodash": "4.17.10", + "memory-fs": "0.4.1", + "mini-css-extract-plugin": "0.4.0", + "minimatch": "3.0.4", + "node-sass": "4.9.0", + "opn": "5.3.0", + "parse5": "4.0.0", + "portfinder": "1.0.13", + "postcss": "6.0.22", + "postcss-import": "11.1.0", + "postcss-loader": "2.1.5", + "postcss-url": "7.3.2", + "raw-loader": "0.5.1", + "resolve": "1.7.1", + "rxjs": "6.1.0", + "sass-loader": "7.0.1", + "silent-error": "1.1.0", + "source-map-support": "0.5.5", + "stats-webpack-plugin": "0.6.2", + "style-loader": "0.21.0", + "stylus": "0.54.5", + "stylus-loader": "3.0.2", + "tree-kill": "1.2.0", + "uglifyjs-webpack-plugin": "1.2.5", + "url-loader": "1.0.1", + "webpack": "4.6.0", + "webpack-dev-middleware": "3.1.3", + "webpack-dev-server": "3.1.4", + "webpack-merge": "4.1.2", + "webpack-sources": "1.1.0", + "webpack-subresource-integrity": "1.1.0-rc.4" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "assert-plus": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", + "dev": true + }, + "aws-sign2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", + "dev": true + }, + "boom": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "caseless": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", + "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", + "dev": true + }, + "cryptiles": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "dev": true, + "requires": { + "boom": "2.10.1" + } + }, + "form-data": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "dev": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.6", + "mime-types": "2.1.18" + } + }, + "har-validator": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", + "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "commander": "2.15.1", + "is-my-json-valid": "2.17.2", + "pinkie-promise": "2.0.1" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + } + } + }, + "hawk": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "dev": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "dev": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.1", + "sshpk": "1.14.1" + } + }, + "node-sass": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.9.0.tgz", + "integrity": "sha512-QFHfrZl6lqRU3csypwviz2XLgGNOoWQbo2GOvtsfQqOfL4cy1BtWnhx/XUeAO9LT3ahBzSRXcEO6DdvAH9DzSg==", + "dev": true, + "requires": { + "async-foreach": "0.1.3", + "chalk": "1.1.3", + "cross-spawn": "3.0.1", + "gaze": "1.1.2", + "get-stdin": "4.0.1", + "glob": "7.1.2", + "in-publish": "2.0.0", + "lodash.assign": "4.2.0", + "lodash.clonedeep": "4.5.0", + "lodash.mergewith": "4.6.1", + "meow": "3.7.0", + "mkdirp": "0.5.1", + "nan": "2.10.0", + "node-gyp": "3.6.2", + "npmlog": "4.1.2", + "request": "2.79.0", + "sass-graph": "2.2.4", + "stdout-stream": "1.4.0", + "true-case-path": "1.0.2" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + } + } + }, + "qs": { + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz", + "integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw=", + "dev": true + }, + "request": { + "version": "2.79.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz", + "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=", + "dev": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.7.0", + "caseless": "0.11.0", + "combined-stream": "1.0.6", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "2.0.6", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.18", + "oauth-sign": "0.8.2", + "qs": "6.3.2", + "stringstream": "0.0.5", + "tough-cookie": "2.3.4", + "tunnel-agent": "0.4.3", + "uuid": "3.2.1" + } + }, + "sntp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "tunnel-agent": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", + "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", + "dev": true + } + } + }, + "@angular-devkit/build-ng-packagr": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-ng-packagr/-/build-ng-packagr-0.6.0.tgz", + "integrity": "sha512-iLlkDbNWZWl8B2Ph/ejgC8/sUfFRVdPiM2oCzjCKYNW3BzdvM/exImWZf58QKgtTc/feP3hXGxUEQlMb04HSWw==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.6.0", + "@angular-devkit/core": "0.6.0", + "resolve": "1.7.1", + "rxjs": "6.1.0" + } + }, + "@angular-devkit/build-optimizer": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.6.0.tgz", + "integrity": "sha512-XV6NEf5G3iuXnIUpvSuwGSyTkIP5muS4NKbOWFpqqQhbQ0jacJ9KC3uXSBITD7zZD8ywA3Yq84mPl8c9pLKyXw==", + "dev": true, + "requires": { + "loader-utils": "1.1.0", + "source-map": "0.5.7", + "typescript": "2.7.2", + "webpack-sources": "1.1.0" + } + }, + "@angular-devkit/core": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-0.6.0.tgz", + "integrity": "sha512-hM1AOSF/+XZpv350pODPgoO/2QL61tfRlCXf3u4zHxkXdcboFKGCIi7VEu7TYMWSQzujcTFJciVBrgf/IfQ3cA==", + "dev": true, + "requires": { + "ajv": "6.4.0", + "chokidar": "2.0.3", + "rxjs": "6.1.0", + "source-map": "0.5.7" + } + }, + "@angular-devkit/schematics": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-0.6.0.tgz", + "integrity": "sha512-TK1wdBMXt6N2T8SUyqx45+HntvFknHyNQpGWvnQZLE/f0y9otCOAarVGxbDaxznc1SNYSPNckSQi8rjEsUNVsw==", + "dev": true, + "requires": { + "@angular-devkit/core": "0.6.0", + "rxjs": "6.1.0" + } + }, + "@angular/animations": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-6.0.0.tgz", + "integrity": "sha512-jl3WZmM/csNeyzdb1cEEc5cUX7jLn3NvPYEiP/ZkKmib0XBGIGBBv7xiuoivTJFJsE4/N5sCFEHRFLnuBBE+OA==", "requires": { "tslib": "1.9.0" } }, - "@angular/compiler": { - "version": "6.0.0-rc.5", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-6.0.0-rc.5.tgz", - "integrity": "sha512-Re2oVZd2HRwkbuu5OR1pkgf3vIUZwzezLuOv/NzRgEY/v67cCeYit16Eg/0iGnwLybD3ptqrBtMls1X/ydssZA==", + "@angular/cli": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-6.0.0.tgz", + "integrity": "sha512-IGYewWdCpWRDJF/rA1y5R9MwDkO6gvxWSC27FTUNhkymZr+BUY7UgOnp1uwNtU/lLi7V9D28Pd4btOvrd2y5fA==", "dev": true, + "requires": { + "@angular-devkit/architect": "0.6.0", + "@angular-devkit/core": "0.6.0", + "@angular-devkit/schematics": "0.6.0", + "@schematics/angular": "0.6.0", + "@schematics/update": "0.6.0", + "opn": "5.1.0", + "resolve": "1.7.1", + "rxjs": "6.1.0", + "semver": "5.5.0", + "silent-error": "1.1.0", + "symbol-observable": "1.2.0", + "yargs-parser": "10.0.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "opn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.1.0.tgz", + "integrity": "sha512-iPNl7SyM8L30Rm1sjGdLLheyHVw5YXVfi3SKWJzBI7efxRwHojfRFjwE/OLM6qp9xJYMgab8WicTU1cPoY+Hpg==", + "dev": true, + "requires": { + "is-wsl": "1.1.0" + } + }, + "yargs-parser": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.0.0.tgz", + "integrity": "sha512-+DHejWujTVYeMHLff8U96rLc4uE4Emncoftvn5AjhB1Jw1pWxLzgBUT/WYbPrHmy6YPEBTZQx5myHhVcuuu64g==", + "dev": true, + "requires": { + "camelcase": "4.1.0" + } + } + } + }, + "@angular/common": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-6.0.0.tgz", + "integrity": "sha512-oo/KESihAZo0FsZPHthO9PYhanN4Q+Lo7Lb2HNbWnD+xRIPa1yFC12JOWiD+SPPfFGWMI6aW3wAlcoej1+QKSw==", + "requires": { + "tslib": "1.9.0" + } + }, + "@angular/compiler": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-6.0.0.tgz", + "integrity": "sha512-UsYfsvHf4VVtkhzM7tyabh8co7gqWZTm3p79hbLDeyCEojl0AkrwbSgh0DQnKRxp4Tu3DEeeDkg1ahA7n19I8A==", "requires": { "tslib": "1.9.0" } }, "@angular/compiler-cli": { - "version": "6.0.0-rc.4", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-6.0.0-rc.4.tgz", - "integrity": "sha512-qRn5yYUtMw2CaDTScmU8WA1HNk38pKKZ5KJyNL8prchbeUs2GHtNDNnRU9yOdSLfOw43DBs/z5352Hyg1t5SCw==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-6.0.0.tgz", + "integrity": "sha512-RV0xTSTPT3yOnbS5Gx6lMAETQeTUr72Ifu0+JZh9AV07xGVislZ+SdQGSeNgXoqxise6e65lJp3Nrb5KE4Lv6g==", "dev": true, "requires": { "chokidar": "1.7.0", "minimist": "1.2.0", "reflect-metadata": "0.1.12", "tsickle": "0.27.5" + }, + "dependencies": { + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "requires": { + "micromatch": "2.3.11", + "normalize-path": "2.1.1" + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "1.1.0" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "dev": true, + "requires": { + "anymatch": "1.3.2", + "async-each": "1.0.1", + "fsevents": "1.2.3", + "glob-parent": "2.0.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "2.0.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } } }, "@angular/core": { - "version": "6.0.0-rc.5", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-6.0.0-rc.5.tgz", - "integrity": "sha512-2pZ0HgLBU5BcR8+S1Ju0FLMG15W0TgVS1I7AWE+CO/4TYDsC8/WYfQFuPNZvqwEU6M9yedWKjaNQB/Xzb32Sqg==", - "dev": true, + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-6.0.0.tgz", + "integrity": "sha512-52X2ZKXOoaMRYaC/ycHePTkXuwku8qJFxoEXAFBItAkk9rebLU4CD8Fx1Z9vUd8aWu1uFfLTxqkgE0mUyBANZw==", + "requires": { + "tslib": "1.9.0" + } + }, + "@angular/forms": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-6.0.0.tgz", + "integrity": "sha512-4eVfCcSyPRhml7Xa6ia/DgDl3JhOnEdBdHo+jads1YL5AF6D08Tthngjf3KjuctGqZDACPyxNt6ciX4g8IbGCA==", + "requires": { + "tslib": "1.9.0" + } + }, + "@angular/http": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@angular/http/-/http-6.0.0.tgz", + "integrity": "sha512-nBZ4KmXx0KR+cIPOMBsJpPhcec5wSCbVtTYRH0zTxmzTmqM3g6+i0PECpqbVgcQEGiOxBLcmXNWfXZl5czpiqw==", "requires": { "tslib": "1.9.0" } }, + "@angular/language-service": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-6.0.0.tgz", + "integrity": "sha512-ysNUM8uec9Kf5Te5HBT6b3G5CLlxOKAXtk+bY1sqbE9sMDZFWQhqR66QzfWdOPRyj9KKrwuKZd9ArMjAbOVNYw==", + "dev": true + }, "@angular/platform-browser": { - "version": "6.0.0-rc.5", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-6.0.0-rc.5.tgz", - "integrity": "sha512-65B6mC3qkMCl7iDI8q8t7N9yj6i4gTStupi5j4VeB0TRTnlAnXBFM3fiy43svVyuQE42qVO0MrJQ3wleJmUN5g==", - "dev": true, + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-6.0.0.tgz", + "integrity": "sha512-ExI1o40BJIbJKFz1p1ivGSgLA1+T0uUo8rjheOZhcGDwCNx54/RapCFLdcHCNiW8NzAIzx+kt4DdXnCSKitnDA==", "requires": { "tslib": "1.9.0" } }, "@angular/platform-browser-dynamic": { - "version": "6.0.0-rc.5", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-6.0.0-rc.5.tgz", - "integrity": "sha512-FvOyyhSLbFPtR1YsWX3UI7QoHutUjHE68ilcm0DVL2IOKiop7ofGHyBlUcHuy4JEWzqzHQYtXVDDk2jfI+gTMA==", - "dev": true, + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-6.0.0.tgz", + "integrity": "sha512-yk4wZYn2bosuvDaYaEq6UuEeI966/28uCljm5iBfo3l8Vuv2IChk5664M68O6C+KwWzCCWDHvIqm0q178YUYug==", "requires": { "tslib": "1.9.0" } }, "@angular/router": { - "version": "6.0.0-rc.5", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-6.0.0-rc.5.tgz", - "integrity": "sha512-8IREGDhMVMai8l8AxlIujR2dtkEW4QKQ6Ifv5zd2R2fLEIIsGBSe+jahPpZNKAOc3Nt74HJ1gA96exFPLp0DnQ==", - "dev": true, + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-6.0.0.tgz", + "integrity": "sha512-ONrfgfYmFGz0Ht2MvymMvBMxPI9w5037ZfJWpTu1/Xo1XmVOawzj2SvYfEzTqexznWcTAALggq/A23k8r9ArKA==", "requires": { "tslib": "1.9.0" } @@ -80,7 +606,7 @@ "@compodoc/ngd-transformer": "2.0.0", "cheerio": "1.0.0-rc.2", "chokidar": "1.7.0", - "colors": "1.2.1", + "colors": "1.2.4", "commander": "2.15.1", "fs-extra": "3.0.1", "glob": "7.1.2", @@ -96,6 +622,131 @@ "typescript": "2.3.4" }, "dependencies": { + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "requires": { + "micromatch": "2.3.11", + "normalize-path": "2.1.1" + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "1.1.0" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "dev": true, + "requires": { + "anymatch": "1.3.2", + "async-each": "1.0.1", + "fsevents": "1.2.3", + "glob-parent": "2.0.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "2.0.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + }, "typescript": { "version": "2.3.4", "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.3.4.tgz", @@ -124,7 +775,7 @@ "@compodoc/ngd-core": "2.0.0", "dot": "1.1.2", "fs-extra": "4.0.3", - "viz.js": "1.8.1" + "viz.js": "1.8.2" }, "dependencies": { "fs-extra": { @@ -140,16 +791,73 @@ } } }, + "@ngtools/json-schema": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@ngtools/json-schema/-/json-schema-1.1.0.tgz", + "integrity": "sha1-w6DFRNYjkqzCgTpCyKDcb1j4aSI=", + "dev": true + }, + "@ngtools/webpack": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-6.0.0.tgz", + "integrity": "sha512-ULZnn1sFmVZ4o8LRWRk8BVnJzSpfjvpjTC2lsC/5DavPwpYLbMEdecwE5OIZhkXUr6QLZebPHEjlazesWHwqrA==", + "dev": true, + "requires": { + "@angular-devkit/core": "0.6.0", + "tree-kill": "1.2.0", + "webpack-sources": "1.1.0" + } + }, + "@schematics/angular": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-0.6.0.tgz", + "integrity": "sha512-mgDCNHF/41934HGMU4PCY3nk19kTBvUBZ5PLQEkZ6Q+wLDs2WigjuJqcYrUluC1T0Z3SvVDKrwSbC2RRMC/oFA==", + "dev": true, + "requires": { + "@angular-devkit/core": "0.6.0", + "@angular-devkit/schematics": "0.6.0", + "typescript": "2.7.2" + } + }, + "@schematics/update": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.6.0.tgz", + "integrity": "sha512-/6p81bKbbH19EAFDhwHZCKMDEHwLkSdvCTVESAsrDQzjReGiLJ/NhStkpHp56kIYqsY/WXZlujn8MLQdSEMolA==", + "dev": true, + "requires": { + "@angular-devkit/core": "0.6.0", + "@angular-devkit/schematics": "0.6.0", + "npm-registry-client": "8.5.1", + "rxjs": "6.1.0", + "semver": "5.5.0", + "semver-intersect": "1.3.1" + } + }, + "@types/estree": { + "version": "0.0.38", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.38.tgz", + "integrity": "sha512-F/v7t1LwS4vnXuPooJQGBRKRGIoxWUTmA4VHfqjOccFsNDThD5bfUNpITive6s352O7o384wcpEaDV8rHCehDA==", + "dev": true + }, "@types/jasmine": { - "version": "2.5.38", - "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-2.5.38.tgz", - "integrity": "sha1-pDeRJMSSHU4h3lTsdGacnps1Zxc=", + "version": "2.8.7", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-2.8.7.tgz", + "integrity": "sha512-RdbrPcW1aD78UmdLiDa9ZCKrbR5Go8PXh6GCpb4oIOkWVEusubSJJDrP4c5RYOu8m/CBz+ygZpicj6Pgms5a4Q==", "dev": true }, + "@types/jasminewd2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/jasminewd2/-/jasminewd2-2.0.3.tgz", + "integrity": "sha512-hYDVmQZT5VA2kigd4H4bv7vl/OhlympwREUemqBdOqtrYTo5Ytm12a5W5/nGgGYdanGVxj0x/VhZ7J3hOg/YKg==", + "dev": true, + "requires": { + "@types/jasmine": "2.8.7" + } + }, "@types/node": { - "version": "6.0.106", - "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.106.tgz", - "integrity": "sha512-U4Zv5fx7letrisRv6HgSSPSY00FZM4NMIkilt+IAExvQLuNa6jYVwCKcnSs2NqTN4+KDl9PskvcCiMce9iePCA==", + "version": "8.9.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.9.5.tgz", + "integrity": "sha512-jRHfWsvyMtXdbhnz5CVHxaBgnV6duZnPlQuRSo/dm/GnmikNcmZhxIES4E9OZjUmQ8C+HCl4KJux+cXN/ErGDQ==", "dev": true }, "@types/q": { @@ -181,15 +889,24 @@ } }, "acorn": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz", + "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==", "dev": true }, + "acorn-dynamic-import": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz", + "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==", + "dev": true, + "requires": { + "acorn": "5.5.3" + } + }, "adm-zip": { - "version": "0.4.8", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.8.tgz", - "integrity": "sha512-PcFQf6E2HFbI24MM4wttwKQ/UmBIfPk5qA7+fqXjL+sMQTrE2FykQ3j50TL+MlaEKN+/4IYqTpYfZ2I7Xec2cg==", + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.4.tgz", + "integrity": "sha1-ph7VrmkFw66lizplfSUDMJEFJzY=", "dev": true }, "after": { @@ -217,15 +934,23 @@ } }, "ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.4.0.tgz", + "integrity": "sha1-06/3jpJ3VJdx2vAWTP9ISCt1T8Y=", "dev": true, "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1", + "uri-js": "3.0.2" } }, + "ajv-keywords": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", + "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", + "dev": true + }, "align-text": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", @@ -235,6 +960,17 @@ "kind-of": "3.2.2", "longest": "1.0.1", "repeat-string": "1.6.1" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } } }, "amdefine": { @@ -267,7 +1003,7 @@ "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { "is-fullwidth-code-point": "2.0.0", @@ -303,6 +1039,12 @@ "ansi-wrap": "0.1.0" } }, + "ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "dev": true + }, "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", @@ -310,10 +1052,13 @@ "dev": true }, "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } }, "ansi-wrap": { "version": "0.1.0", @@ -321,19 +1066,13 @@ "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", "dev": true }, - "any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=", - "dev": true - }, "anymatch": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", - "integrity": "sha1-VT3Lj5HjyImEXf26NMd3IbkLnXo=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", "dev": true, "requires": { - "micromatch": "2.3.11", + "micromatch": "3.1.10", "normalize-path": "2.1.1" } }, @@ -373,12 +1112,6 @@ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", "dev": true }, - "archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", - "dev": true - }, "are-we-there-yet": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", @@ -396,14 +1129,6 @@ "dev": true, "requires": { "sprintf-js": "1.0.3" - }, - "dependencies": { - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - } } }, "argv": { @@ -413,18 +1138,15 @@ "dev": true }, "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "1.1.0" - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true }, "arr-flatten": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", "dev": true }, "arr-union": { @@ -439,10 +1161,10 @@ "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", "dev": true }, - "array-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", - "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", + "array-filter": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", + "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", "dev": true }, "array-find-index": { @@ -451,10 +1173,38 @@ "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", "dev": true }, + "array-flatten": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.1.tgz", + "integrity": "sha1-Qmu52oQJDBg42BLIFQryCoMx4pY=", + "dev": true + }, + "array-includes": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", + "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", + "dev": true, + "requires": { + "define-properties": "1.1.2", + "es-abstract": "1.11.0" + } + }, + "array-map": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", + "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", + "dev": true + }, + "array-reduce": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", + "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", + "dev": true + }, "array-slice": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", - "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", + "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=", "dev": true }, "array-union": { @@ -473,9 +1223,9 @@ "dev": true }, "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true }, "arraybuffer.slice": { @@ -490,6 +1240,13 @@ "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", "dev": true }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true, + "optional": true + }, "asn1": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", @@ -517,9 +1274,9 @@ } }, "assert-plus": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", - "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true }, "assign-symbols": { @@ -553,15 +1310,29 @@ "dev": true }, "atob": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.0.tgz", - "integrity": "sha512-SuiKH8vbsOyCALjA/+EINmt/Kdl+TQPrtFgW7XZZcwtryFu9e5kQoX3bjCW6mIvGH1fbeAZZuvwGR5IlBRznGw==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz", + "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=", "dev": true }, + "autoprefixer": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-8.4.1.tgz", + "integrity": "sha512-YqUclCBDXUT9Y7aQ8Xv+ja8yhTZYJoMsOD7WS++gZIJLCpCu+gPcKGDlhk6S3WxhLkTcNVdaMZAWys2nzZCH7g==", + "dev": true, + "requires": { + "browserslist": "3.2.6", + "caniuse-lite": "1.0.30000836", + "normalize-range": "0.1.2", + "num2fraction": "1.2.2", + "postcss": "6.0.22", + "postcss-value-parser": "3.3.0" + } + }, "aws-sign2": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", - "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", "dev": true }, "aws4": { @@ -579,6 +1350,33 @@ "chalk": "1.1.3", "esutils": "2.0.2", "js-tokens": "3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } } }, "babel-generator": { @@ -595,20 +1393,6 @@ "lodash": "4.17.10", "source-map": "0.5.7", "trim-right": "1.0.1" - }, - "dependencies": { - "jsesc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } } }, "babel-messages": { @@ -626,7 +1410,7 @@ "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "dev": true, "requires": { - "core-js": "2.4.1", + "core-js": "2.5.6", "regenerator-runtime": "0.11.1" } }, @@ -658,23 +1442,6 @@ "globals": "9.18.0", "invariant": "2.2.4", "lodash": "4.17.10" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } } }, "babel-types": { @@ -692,7 +1459,7 @@ "babylon": { "version": "6.18.0", "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha1-ry87iPpvXB5MY00aD46sT1WzleM=", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", "dev": true }, "backo2": { @@ -759,18 +1526,6 @@ "is-data-descriptor": "1.0.0", "kind-of": "6.0.2" } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true } } }, @@ -799,6 +1554,14 @@ "dev": true, "requires": { "safe-buffer": "5.1.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + } } }, "batch": { @@ -838,6 +1601,12 @@ "callsite": "1.0.0" } }, + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, "binary-extensions": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", @@ -860,12 +1629,20 @@ } }, "blocking-proxy": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/blocking-proxy/-/blocking-proxy-0.0.4.tgz", - "integrity": "sha1-SQFnMqw46NU6LH3NUCUgqg5Y4EQ=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/blocking-proxy/-/blocking-proxy-1.0.1.tgz", + "integrity": "sha512-KE8NFMZr3mN2E0HcvCgRtX7DjhiIQrwle+nSVJVC/yqFb9+xznHl2ZcoBp2L9qzkI4t4cBFJ1efXF8Dwi132RA==", "dev": true, "requires": { "minimist": "1.2.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } } }, "bluebird": { @@ -877,7 +1654,7 @@ "bn.js": { "version": "4.11.8", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha1-LN4J617jQfSEdGuwMJsyU7GxRC8=", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", "dev": true }, "body-parser": { @@ -898,21 +1675,6 @@ "type-is": "1.6.16" }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, "qs": { "version": "6.5.1", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", @@ -921,6 +1683,20 @@ } } }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, + "requires": { + "array-flatten": "2.1.1", + "deep-equal": "1.0.1", + "dns-equal": "1.0.0", + "dns-txt": "2.0.2", + "multicast-dns": "6.2.3", + "multicast-dns-service-types": "1.1.0" + } + }, "boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", @@ -928,12 +1704,12 @@ "dev": true }, "boom": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", - "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", + "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", "dev": true, "requires": { - "hoek": "2.16.3" + "hoek": "4.2.1" } }, "boxen": { @@ -944,7 +1720,7 @@ "requires": { "ansi-align": "2.0.0", "camelcase": "4.1.0", - "chalk": "2.4.0", + "chalk": "2.2.2", "cli-boxes": "1.0.0", "string-width": "2.1.1", "term-size": "1.2.0", @@ -957,38 +1733,12 @@ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "1.9.1" - } - }, "camelcase": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", "dev": true }, - "chalk": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.0.tgz", - "integrity": "sha512-Wr/w0f4o9LuE7K53cD0qmbAMM+2XNLzR29vFn5hqko4sxGlUsyy363NvmyGIyk5tpe9cjTr9SJYbysEyPkRnFw==", - "dev": true, - "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", @@ -998,7 +1748,7 @@ "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { "is-fullwidth-code-point": "2.0.0", @@ -1013,15 +1763,6 @@ "requires": { "ansi-regex": "3.0.0" } - }, - "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", - "dev": true, - "requires": { - "has-flag": "3.0.0" - } } } }, @@ -1036,14 +1777,32 @@ } }, "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "repeat-element": "1.1.2", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } } }, "brorand": { @@ -1052,29 +1811,6 @@ "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", "dev": true }, - "browser-resolve": { - "version": "1.11.2", - "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz", - "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=", - "dev": true, - "requires": { - "resolve": "1.1.7" - }, - "dependencies": { - "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", - "dev": true - } - } - }, - "browser-stdout": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", - "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", - "dev": true - }, "browserify-aes": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", @@ -1086,7 +1822,7 @@ "create-hash": "1.2.0", "evp_bytestokey": "1.0.3", "inherits": "2.0.3", - "safe-buffer": "5.1.1" + "safe-buffer": "5.1.2" } }, "browserify-cipher": { @@ -1139,26 +1875,49 @@ "browserify-zlib": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha1-KGlFnZqjviRf6P4sofRuLn9U1z8=", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", "dev": true, "requires": { "pako": "1.0.6" } }, + "browserslist": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.6.tgz", + "integrity": "sha512-XCsMSg9V4S1VRdcp265dJ+8kBRjfuFXcavbisY7G6T9QI0H1Z24PP53vvs0WDYWqm38Mco1ILDtafcS8ZR4xiw==", + "dev": true, + "requires": { + "caniuse-lite": "1.0.30000836", + "electron-to-chromium": "1.3.45" + } + }, "buffer": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.1.0.tgz", - "integrity": "sha512-YkIRgwsZwJWTnyQrsBTWefizHh+8GYj3kbL1BTiAQ/9pwpino0G7B2gp5tx/FUBqUlvtxV85KNR3mwfAtv15Yw==", + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", "dev": true, "requires": { "base64-js": "1.3.0", - "ieee754": "1.1.11" + "ieee754": "1.1.11", + "isarray": "1.0.0" } }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "dev": true + }, "buffer-from": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-0.1.2.tgz", - "integrity": "sha512-RiWIenusJsmI2KcvqQABB83tLxCByE3upSP8QU3rJDMVFGPWLvPQJt/O1Su9moRWeH7d+Q2HYb68f6+v+tw2vg==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz", + "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==", + "dev": true + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", "dev": true }, "buffer-xor": { @@ -1179,12 +1938,39 @@ "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", "dev": true }, + "builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", + "dev": true + }, "bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", "dev": true }, + "cacache": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", + "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", + "dev": true, + "requires": { + "bluebird": "3.5.1", + "chownr": "1.0.1", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "lru-cache": "4.1.3", + "mississippi": "2.0.0", + "mkdirp": "0.5.1", + "move-concurrently": "1.0.1", + "promise-inflight": "1.0.1", + "rimraf": "2.6.2", + "ssri": "5.3.0", + "unique-filename": "1.1.0", + "y18n": "4.0.0" + } + }, "cache-base": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", @@ -1200,14 +1986,18 @@ "to-object-path": "0.3.0", "union-value": "1.0.0", "unset-value": "1.0.0" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } + } + }, + "cache-loader": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cache-loader/-/cache-loader-1.2.2.tgz", + "integrity": "sha512-rsGh4SIYyB9glU+d0OcHwiXHXBoUgDhHZaQ1KAbiXqfz1CDPxtTboh1gPbJ0q2qdO8a9lfcjgC5CJ2Ms32y5bw==", + "dev": true, + "requires": { + "loader-utils": "1.1.0", + "mkdirp": "0.5.1", + "neo-async": "2.5.1", + "schema-utils": "0.4.5" } }, "callsite": { @@ -1216,6 +2006,16 @@ "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", "dev": true }, + "camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "dev": true, + "requires": { + "no-case": "2.3.2", + "upper-case": "1.1.3" + } + }, "camelcase": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", @@ -1241,6 +2041,12 @@ } } }, + "caniuse-lite": { + "version": "1.0.30000836", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000836.tgz", + "integrity": "sha512-DlVR8sVTKDgd7t95U0shX3g7MeJ/DOjKOhUcaiXqnVmnO5sG4Tn2rLVOkVfPUJgnQNxnGe8/4GK0dGSI+AagQw==", + "dev": true + }, "capture-stack-trace": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", @@ -1265,16 +2071,31 @@ } }, "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.2.2.tgz", + "integrity": "sha512-LvixLAQ4MYhbf7hgL4o5PeK32gJKvVzDRiSNIApDofQvyhl8adgG2lJVXn4+ekQoK7HL9RF8lqxwerpe0x2pCw==", "dev": true, "requires": { - "ansi-styles": "2.2.1", + "ansi-styles": "3.2.1", "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "supports-color": "4.5.0" + }, + "dependencies": { + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } } }, "cheerio": { @@ -1289,34 +2110,73 @@ "htmlparser2": "3.9.2", "lodash": "4.17.10", "parse5": "3.0.3" + }, + "dependencies": { + "domhandler": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.1.tgz", + "integrity": "sha1-iS5HAAqZvlW783dP/qBWHYh5wlk=", + "dev": true, + "requires": { + "domelementtype": "1.3.0" + } + }, + "htmlparser2": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", + "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", + "dev": true, + "requires": { + "domelementtype": "1.3.0", + "domhandler": "2.4.1", + "domutils": "1.5.1", + "entities": "1.1.1", + "inherits": "2.0.3", + "readable-stream": "2.3.6" + } + }, + "parse5": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", + "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", + "dev": true, + "requires": { + "@types/node": "8.9.5" + } + } } }, "chokidar": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", - "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.3.tgz", + "integrity": "sha512-zW8iXYZtXMx4kux/nuZVXjkLP+CyIK5Al5FHnj1OgTKGZfp4Oy6/ymtMSKFv3GD8DviEmUPmJg9eFdJ/JzudMg==", "dev": true, "requires": { - "anymatch": "1.3.2", + "anymatch": "2.0.0", "async-each": "1.0.1", - "fsevents": "1.2.2", - "glob-parent": "2.0.0", + "braces": "2.3.2", + "fsevents": "1.2.3", + "glob-parent": "3.1.0", "inherits": "2.0.3", "is-binary-path": "1.0.1", - "is-glob": "2.0.1", + "is-glob": "4.0.0", + "normalize-path": "2.1.1", "path-is-absolute": "1.0.1", - "readdirp": "2.1.0" + "readdirp": "2.1.0", + "upath": "1.0.5" } }, - "chrome-location": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/chrome-location/-/chrome-location-1.2.1.tgz", - "integrity": "sha1-aRFRGk6sVQJ2Jcc7k3ylynq5SZU=", - "dev": true, - "requires": { - "userhome": "1.0.0", - "which": "1.3.0" - } + "chownr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", + "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", + "dev": true + }, + "chrome-trace-event": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-0.1.3.tgz", + "integrity": "sha512-sjndyZHrrWiu4RY7AkHgjn80GfAM2ZSzUkZLV/Js59Ldmh6JDThf0SUmOHU53rFu2rVxxfCzJ30Ukcfch3Gb/A==", + "dev": true }, "ci-info": { "version": "1.1.3", @@ -1327,13 +2187,19 @@ "cipher-base": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha1-h2Dk7MJy9MNjUy+SbYdKriwTl94=", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", "dev": true, "requires": { "inherits": "2.0.3", - "safe-buffer": "5.1.1" + "safe-buffer": "5.1.2" } }, + "circular-dependency-plugin": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.0.2.tgz", + "integrity": "sha512-oC7/DVAyfcY3UWKm0sN/oVoDedQDQiw/vIiAnuTWTpE5s0zWf7l3WY417Xw/Fbi/QbAjctAkxgMiS9P0s3zkmA==", + "dev": true + }, "class-utils": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", @@ -1354,15 +2220,18 @@ "requires": { "is-descriptor": "0.1.6" } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true } } }, + "clean-css": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.11.tgz", + "integrity": "sha1-Ls3xRaujj1R0DybO/Q/z4D4SXWo=", + "dev": true, + "requires": { + "source-map": "0.5.7" + } + }, "cli-boxes": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", @@ -1391,11 +2260,23 @@ } }, "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz", + "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=", "dev": true }, + "clone-deep": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-2.0.2.tgz", + "integrity": "sha512-SZegPTKjCgpQH63E+eN6mVEEPdQBOUzjyJm5Pora4lrwWRFS8I0QAxV/KD6vV/i0WuijHZWQC1fMsPEdxfdVCQ==", + "dev": true, + "requires": { + "for-own": "1.0.0", + "is-plain-object": "2.0.4", + "kind-of": "6.0.2", + "shallow-clone": "1.0.0" + } + }, "clone-stats": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", @@ -1423,36 +2304,171 @@ "argv": "0.0.2", "request": "2.81.0", "urlgrey": "0.4.4" + }, + "dependencies": { + "ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "dev": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "assert-plus": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", + "dev": true + }, + "aws-sign2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", + "dev": true + }, + "boom": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "cryptiles": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "dev": true, + "requires": { + "boom": "2.10.1" + } + }, + "form-data": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "dev": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.6", + "mime-types": "2.1.18" + } + }, + "har-schema": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", + "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", + "dev": true + }, + "har-validator": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", + "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", + "dev": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } + }, + "hawk": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "dev": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "dev": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.1", + "sshpk": "1.14.1" + } + }, + "performance-now": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", + "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", + "dev": true + }, + "qs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", + "dev": true + }, + "request": { + "version": "2.81.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", + "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", + "dev": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.7.0", + "caseless": "0.12.0", + "combined-stream": "1.0.6", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.18", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.1.2", + "stringstream": "0.0.5", + "tough-cookie": "2.3.4", + "tunnel-agent": "0.6.0", + "uuid": "3.2.1" + } + }, + "sntp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "dev": true, + "requires": { + "hoek": "2.16.3" + } + } } }, "codelyzer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-2.0.1.tgz", - "integrity": "sha1-0PcSH2eoQkyS0h07MfNkC4Pe+e0=", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-4.2.1.tgz", + "integrity": "sha512-CKwfgpfkqi9dyzy4s6ELaxJ54QgJ6A8iTSsM4bzHbLuTpbKncvNc3DUlCvpnkHBhK47gEf4qFsWoYqLrJPhy6g==", "dev": true, "requires": { "app-root-path": "2.0.1", "css-selector-tokenizer": "0.7.0", - "cssauron": "1.4.0", - "semver-dsl": "1.0.1", - "source-map": "0.5.7", - "sprintf-js": "1.1.1" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } + "cssauron": "1.4.0", + "semver-dsl": "1.0.1", + "source-map": "0.5.7", + "sprintf-js": "1.0.3" } }, - "coffee-script": { - "version": "1.12.7", - "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.12.7.tgz", - "integrity": "sha512-fLeEhqwymYat/MpTPUjSKHVYYl0ec2mOyALEMLmzr5i1isuG+6jfI2j2d5oBO3VIzgUXgBVIcOT9uH1TFxBckw==", - "dev": true - }, "collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", @@ -1485,9 +2501,9 @@ "dev": true }, "colors": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.2.1.tgz", - "integrity": "sha512-s8+wktIuDSLffCywiwSxQOMqtPxML11a/dtHE17tMn4B1MSWw/C22EKf7M2KGUBcDaVFEGT+S8N02geDXeuNKg==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.2.4.tgz", + "integrity": "sha512-6Y+iBnWmXL+AWtlOp2Vr6R2w5MUlNJRwR0ShVFaAb1CqWzhPOpQg4L0jxD+xpw/Nc8QJwaq3KM79QUCriY8CWQ==", "dev": true }, "combine-lists": { @@ -1514,6 +2530,12 @@ "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", "dev": true }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, "compare-versions": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.1.0.tgz", @@ -1538,12 +2560,56 @@ "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", "dev": true }, + "compressible": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.13.tgz", + "integrity": "sha1-DRAgq5JLL9tNYnmHXH1tq6a6p6k=", + "dev": true, + "requires": { + "mime-db": "1.33.0" + } + }, + "compression": { + "version": "1.7.2", + "resolved": "http://registry.npmjs.org/compression/-/compression-1.7.2.tgz", + "integrity": "sha1-qv+81qr4VLROuygDU9WtFlH1mmk=", + "dev": true, + "requires": { + "accepts": "1.3.5", + "bytes": "3.0.0", + "compressible": "2.0.13", + "debug": "2.6.9", + "on-headers": "1.0.1", + "safe-buffer": "5.1.1", + "vary": "1.1.2" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + } + } + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "1.0.0", + "inherits": "2.0.3", + "readable-stream": "2.3.6", + "typedarray": "0.0.6" + } + }, "configstore": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", @@ -1568,8 +2634,56 @@ "finalhandler": "0.5.1", "parseurl": "1.3.2", "utils-merge": "1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true, + "requires": { + "ms": "0.7.1" + } + }, + "finalhandler": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.5.1.tgz", + "integrity": "sha1-LEANjUUwk1vCMlScX6OF7Afeb80=", + "dev": true, + "requires": { + "debug": "2.2.0", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "statuses": "1.3.1", + "unpipe": "1.0.0" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true + }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", + "dev": true + }, + "utils-merge": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", + "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=", + "dev": true + } } }, + "connect-history-api-fallback": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", + "integrity": "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=", + "dev": true + }, "console-browserify": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", @@ -1591,29 +2705,76 @@ "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", "dev": true }, + "content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", + "dev": true + }, "content-type": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", "dev": true }, + "convert-source-map": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "dev": true + }, "cookie": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", "dev": true }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "aproba": "1.2.0", + "fs-write-stream-atomic": "1.0.10", + "iferr": "0.1.5", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "run-queue": "1.0.3" + } + }, "copy-descriptor": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", "dev": true }, + "copy-webpack-plugin": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-4.5.1.tgz", + "integrity": "sha512-OlTo6DYg0XfTKOF8eLf79wcHm4Ut10xU2cRBRPMW/NA5F9VMjZGTfRHWDIYC3s+1kObGYrBLshXWU1K0hILkNQ==", + "dev": true, + "requires": { + "cacache": "10.0.4", + "find-cache-dir": "1.0.0", + "globby": "7.1.1", + "is-glob": "4.0.0", + "loader-utils": "1.1.0", + "minimatch": "3.0.4", + "p-limit": "1.2.0", + "serialize-javascript": "1.5.0" + } + }, "core-js": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "integrity": "sha1-TekR5mew6ukSTjQlS1OupvxhjT4=", - "dev": true + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.6.tgz", + "integrity": "sha512-lQUVfQi0aLix2xpyjrrJEvfuYCqPc/HwmTKsC/VNf8q0zsjX7SQZtp4+oRONN5Tsur9GDETPjj+Ub2iDiGZfSQ==" }, "core-util-is": { "version": "1.0.2", @@ -1629,20 +2790,181 @@ "requires": { "object-assign": "4.1.1", "vary": "1.1.2" + } + }, + "cosmiconfig": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-2.2.2.tgz", + "integrity": "sha512-GiNXLwAFPYHy25XmTPpafYvn3CLAkJ8FLsscq78MQd1Kh0OU6Yzhn4eV2MVF4G9WEQZoWEGltatdR+ntGPMl5A==", + "dev": true, + "requires": { + "is-directory": "0.3.1", + "js-yaml": "3.11.0", + "minimist": "1.2.0", + "object-assign": "4.1.1", + "os-homedir": "1.0.2", + "parse-json": "2.2.0", + "require-from-string": "1.2.1" }, "dependencies": { - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "cpx": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/cpx/-/cpx-1.5.0.tgz", + "integrity": "sha1-GFvgGFEdhycN7czCkxceN2VauI8=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "chokidar": "1.7.0", + "duplexer": "0.1.1", + "glob": "7.1.2", + "glob2base": "0.0.12", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "resolve": "1.7.1", + "safe-buffer": "5.1.2", + "shell-quote": "1.6.1", + "subarg": "1.0.0" + }, + "dependencies": { + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "requires": { + "micromatch": "2.3.11", + "normalize-path": "2.1.1" + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "1.1.0" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "dev": true, + "requires": { + "anymatch": "1.3.2", + "async-each": "1.0.1", + "fsevents": "1.2.3", + "glob-parent": "2.0.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "2.0.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } } } }, "create-ecdh": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.1.tgz", - "integrity": "sha512-iZvCCg8XqHQZ1ioNBTzXS/cQSkqkqcPs8xSX4upNB+DAk9Ht3uzQf2J32uAHNCne8LDmKr29AgZrEs4oIrwLuQ==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", "dev": true, "requires": { "bn.js": "4.11.8", @@ -1681,7 +3003,7 @@ "create-hash": "1.2.0", "inherits": "2.0.3", "ripemd160": "2.0.2", - "safe-buffer": "5.1.1", + "safe-buffer": "5.1.2", "sha.js": "2.4.11" } }, @@ -1691,31 +3013,30 @@ "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", "dev": true, "requires": { - "lru-cache": "4.1.2", + "lru-cache": "4.1.3", "which": "1.3.0" + } + }, + "cryptiles": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", + "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", + "dev": true, + "requires": { + "boom": "5.2.0" }, "dependencies": { - "lru-cache": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz", - "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", + "boom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", "dev": true, "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" + "hoek": "4.2.1" } } } }, - "cryptiles": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", - "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", - "dev": true, - "requires": { - "boom": "2.10.1" - } - }, "crypto-browserify": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", @@ -1724,7 +3045,7 @@ "requires": { "browserify-cipher": "1.0.1", "browserify-sign": "4.0.4", - "create-ecdh": "4.0.1", + "create-ecdh": "4.0.3", "create-hash": "1.2.0", "create-hmac": "1.1.7", "diffie-hellman": "5.0.3", @@ -1741,6 +3062,12 @@ "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", "dev": true }, + "css-parse": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.7.0.tgz", + "integrity": "sha1-Mh9s9zeCpv91ERE5D8BeLGV9jJs=", + "dev": true + }, "css-select": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", @@ -1785,6 +3112,12 @@ "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", "dev": true }, + "cuint": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz", + "integrity": "sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs=", + "dev": true + }, "currently-unhandled": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", @@ -1800,6 +3133,21 @@ "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", "dev": true }, + "cyclist": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", + "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", + "dev": true + }, + "d": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "dev": true, + "requires": { + "es5-ext": "0.10.42" + } + }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", @@ -1807,22 +3155,8 @@ "dev": true, "requires": { "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } } }, - "date-format": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-0.0.0.tgz", - "integrity": "sha1-CSBoY6sHDrRZrOpVQsvYVrEZZrM=", - "dev": true - }, "date-now": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", @@ -1836,12 +3170,12 @@ "dev": true }, "debug": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { - "ms": "0.7.1" + "ms": "2.0.0" } }, "decamelize": { @@ -1856,10 +3190,16 @@ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", "dev": true }, + "deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", + "dev": true + }, "deep-extend": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", - "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz", + "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==", "dev": true }, "deep-is": { @@ -1875,26 +3215,16 @@ "dev": true, "requires": { "strip-bom": "2.0.0" - }, - "dependencies": { - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "0.2.1" - } - } } }, - "defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "define-properties": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", + "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", "dev": true, "requires": { - "clone": "1.0.4" + "foreach": "2.0.5", + "object-keys": "1.0.11" } }, "define-property": { @@ -1935,41 +3265,43 @@ "is-data-descriptor": "1.0.0", "kind-of": "6.0.2" } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true } } }, "del": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", - "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", + "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", "dev": true, "requires": { - "globby": "5.0.0", + "globby": "6.1.0", "is-path-cwd": "1.0.0", "is-path-in-cwd": "1.0.1", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", + "p-map": "1.2.0", + "pify": "3.0.0", "rimraf": "2.6.2" }, "dependencies": { - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } } } }, @@ -1991,12 +3323,6 @@ "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", "dev": true }, - "deprecated": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/deprecated/-/deprecated-0.0.1.tgz", - "integrity": "sha1-+cmvVGSvoeepcUWKi97yqpTVuxk=", - "dev": true - }, "des.js": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", @@ -2013,12 +3339,6 @@ "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", "dev": true }, - "detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", - "dev": true - }, "detect-indent": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", @@ -2028,6 +3348,12 @@ "repeating": "2.0.1" } }, + "detect-node": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.3.tgz", + "integrity": "sha1-ogM8CcyOFY03dI+951B4Mr1s4Sc=", + "dev": true + }, "di": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", @@ -2051,6 +3377,58 @@ "randombytes": "2.0.6" } }, + "dir-glob": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", + "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==", + "dev": true, + "requires": { + "arrify": "1.0.1", + "path-type": "3.0.0" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "dns-packet": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", + "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "dev": true, + "requires": { + "ip": "1.1.5", + "safe-buffer": "5.1.2" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "requires": { + "buffer-indexof": "1.1.1" + } + }, + "dom-converter": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.1.4.tgz", + "integrity": "sha1-pF71cnuJDJv/5tfIduexnLDhfzs=", + "dev": true, + "requires": { + "utila": "0.3.3" + }, + "dependencies": { + "utila": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz", + "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=", + "dev": true + } + } + }, "dom-serialize": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", @@ -2094,9 +3472,9 @@ "dev": true }, "domhandler": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.1.tgz", - "integrity": "sha1-iS5HAAqZvlW783dP/qBWHYh5wlk=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.1.0.tgz", + "integrity": "sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ=", "dev": true, "requires": { "domelementtype": "1.3.0" @@ -2121,7 +3499,7 @@ "dot-prop": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", - "integrity": "sha1-HxngwuGqDjJ5fEl5nyg3rGr2nFc=", + "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", "dev": true, "requires": { "is-obj": "1.0.1" @@ -2174,6 +3552,18 @@ "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", "dev": true }, + "duplexify": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.0.tgz", + "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==", + "dev": true, + "requires": { + "end-of-stream": "1.4.1", + "inherits": "2.0.3", + "readable-stream": "2.3.6", + "stream-shift": "1.0.0" + } + }, "ecc-jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", @@ -2190,6 +3580,18 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", "dev": true }, + "ejs": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.6.1.tgz", + "integrity": "sha512-0xy4A/twfrRCnkhfk8ErDi5DqdAsAqeGxht4xkCUrsvhhbQNs7E+4jV0CN7+NKIY0aHE72+XvqtBIXzD31ZbXQ==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.45", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.45.tgz", + "integrity": "sha1-RYrBscXHYM6IEaFtK/vZfsMLr7g=", + "dev": true + }, "elliptic": { "version": "6.4.0", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", @@ -2205,6 +3607,12 @@ "minimalistic-crypto-utils": "1.0.1" } }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, "encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", @@ -2212,23 +3620,12 @@ "dev": true }, "end-of-stream": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz", - "integrity": "sha1-jhdyBsPICDfYVjLouTWd/osvbq8=", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", "dev": true, "requires": { - "once": "1.3.3" - }, - "dependencies": { - "once": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", - "dev": true, - "requires": { - "wrappy": "1.0.2" - } - } + "once": "1.4.0" } }, "engine.io": { @@ -2323,6 +3720,17 @@ "wtf-8": "1.0.0" } }, + "enhanced-resolve": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.0.0.tgz", + "integrity": "sha512-jox/62b2GofV1qTUQTMPEJSDIGycS43evqYzD/KVtEb9OCoki9cnacUPxCrZa7JfPzZSYOCZhu9O9luaMxAX8g==", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "memory-fs": "0.4.1", + "tapable": "1.0.0" + } + }, "ent": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", @@ -2335,6 +3743,15 @@ "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", "dev": true }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": true, + "requires": { + "prr": "1.0.1" + } + }, "error-ex": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", @@ -2344,12 +3761,68 @@ "is-arrayish": "0.2.1" } }, + "es-abstract": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.11.0.tgz", + "integrity": "sha512-ZnQrE/lXTTQ39ulXZ+J1DTFazV9qBy61x2bY071B+qGco8Z8q1QddsLdt/EF8Ai9hcWH72dWS0kFqXLxOxqslA==", + "dev": true, + "requires": { + "es-to-primitive": "1.1.1", + "function-bind": "1.1.1", + "has": "1.0.1", + "is-callable": "1.1.3", + "is-regex": "1.0.4" + } + }, + "es-to-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", + "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", + "dev": true, + "requires": { + "is-callable": "1.1.3", + "is-date-object": "1.0.1", + "is-symbol": "1.0.1" + } + }, + "es5-ext": { + "version": "0.10.42", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.42.tgz", + "integrity": "sha512-AJxO1rmPe1bDEfSR6TJ/FgMFYuTBhR5R57KW58iCkYACMyFbrkqVyzXSurYoScDGvgyMpk7uRF/lPUPPTmsRSA==", + "dev": true, + "requires": { + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1", + "next-tick": "1.0.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.42", + "es6-symbol": "3.1.1" + } + }, "es6-promise": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz", - "integrity": "sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", + "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=", "dev": true }, + "es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.42" + } + }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -2375,12 +3848,6 @@ "source-map": "0.2.0" }, "dependencies": { - "esprima": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", - "dev": true - }, "source-map": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", @@ -2393,18 +3860,59 @@ } } }, + "eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", + "dev": true, + "requires": { + "esrecurse": "4.2.1", + "estraverse": "4.2.0" + }, + "dependencies": { + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + } + } + }, "esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha1-RJnt3NERDgshi6zy+n9/WfVcqAQ=", + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", "dev": true }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "4.2.0" + }, + "dependencies": { + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + } + } + }, "estraverse": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=", "dev": true }, + "estree-walker": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.5.2.tgz", + "integrity": "sha512-XpCnW/AE10ws/kDAs37cngSkvgIR8aN3G0MS85m7dUpuK2EREo9VJ00uvw6Dg/hXEpfsE1I1TvJOJr+Z+TL+ig==", + "dev": true + }, "esutils": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", @@ -2433,9 +3941,9 @@ } }, "eventemitter3": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.0.1.tgz", - "integrity": "sha512-QOCPu979MMWX9XNlfRZoin+Wm+bK1SP7vv3NGUniYwuSJK/+cPA10blMaeRgzg31RvoSFk6FsCDVa4vNryBTGA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz", + "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==", "dev": true }, "events": { @@ -2444,6 +3952,15 @@ "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", "dev": true }, + "eventsource": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz", + "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=", + "dev": true, + "requires": { + "original": "1.0.0" + } + }, "evp_bytestokey": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", @@ -2451,7 +3968,7 @@ "dev": true, "requires": { "md5.js": "1.3.4", - "safe-buffer": "5.1.1" + "safe-buffer": "5.1.2" } }, "execa": { @@ -2475,20 +3992,10 @@ "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "dev": true, "requires": { - "lru-cache": "4.1.2", + "lru-cache": "4.1.3", "shebang-command": "1.2.0", "which": "1.3.0" } - }, - "lru-cache": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz", - "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", - "dev": true, - "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" - } } } }, @@ -2509,10 +4016,10 @@ "braces": "0.1.5" }, "dependencies": { - "array-slice": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", - "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=", + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", "dev": true }, "braces": { @@ -2549,12 +4056,38 @@ } }, "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "dev": true, "requires": { - "is-posix-bracket": "0.1.1" + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } } }, "expand-range": { @@ -2564,15 +4097,106 @@ "dev": true, "requires": { "fill-range": "2.2.3" + }, + "dependencies": { + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "dev": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } } }, - "expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "express": { + "version": "4.16.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.16.3.tgz", + "integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=", "dev": true, "requires": { - "homedir-polyfill": "1.0.1" + "accepts": "1.3.5", + "array-flatten": "1.1.1", + "body-parser": "1.18.2", + "content-disposition": "0.5.2", + "content-type": "1.0.4", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "1.1.2", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.8.1", + "finalhandler": "1.1.1", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "1.1.2", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "path-to-regexp": "0.1.7", + "proxy-addr": "2.0.3", + "qs": "6.5.1", + "range-parser": "1.2.0", + "safe-buffer": "5.1.1", + "send": "0.16.2", + "serve-static": "1.13.2", + "setprototypeof": "1.1.0", + "statuses": "1.4.0", + "type-is": "1.6.16", + "utils-merge": "1.0.1", + "vary": "1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "dev": true + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + } } }, "extend": { @@ -2597,20 +4221,76 @@ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, "requires": { - "is-plain-object": "2.0.4" + "is-plain-object": "2.0.4" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" } } } }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, - "requires": { - "is-extglob": "1.0.0" - } - }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", @@ -2628,6 +4308,18 @@ "time-stamp": "1.1.0" } }, + "fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", @@ -2641,14 +4333,24 @@ "dev": true }, "faye-websocket": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", - "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", "dev": true, "requires": { "websocket-driver": "0.7.0" } }, + "file-loader": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-1.1.11.tgz", + "integrity": "sha512-TGR4HU7HUsGg6GCOPJnFk06RhWgEWFLAGWiT6rcD+GRC2keU3s9RGJ+b3Z6/U73jwwNb2gKLJ7YCrp+jvU4ALg==", + "dev": true, + "requires": { + "loader-utils": "1.1.0", + "schema-utils": "0.4.5" + } + }, "filename-regex": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", @@ -2666,396 +4368,85 @@ } }, "fill-range": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", - "dev": true, - "requires": { - "is-number": "2.1.0", - "isobject": "2.1.0", - "randomatic": "1.1.7", - "repeat-element": "1.1.2", - "repeat-string": "1.6.1" - } - }, - "finalhandler": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.5.1.tgz", - "integrity": "sha1-LEANjUUwk1vCMlScX6OF7Afeb80=", - "dev": true, - "requires": { - "debug": "2.2.0", - "escape-html": "1.0.3", - "on-finished": "2.3.0", - "statuses": "1.3.1", - "unpipe": "1.0.0" - } - }, - "find-index": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz", - "integrity": "sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ=", - "dev": true - }, - "find-parent-dir": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.3.0.tgz", - "integrity": "sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ=", - "dev": true - }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" - } - }, - "findup-sync": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", - "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, "requires": { - "detect-file": "1.0.0", - "is-glob": "3.1.0", - "micromatch": "3.1.10", - "resolve-dir": "1.0.1" + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" }, "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "1.1.0", - "array-unique": "0.3.2", - "extend-shallow": "2.0.1", - "fill-range": "4.0.0", - "isobject": "3.0.1", - "repeat-element": "1.1.2", - "snapdragon": "0.8.2", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "0.1.6" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "0.3.2", - "define-property": "1.0.0", - "expand-brackets": "2.1.4", - "extend-shallow": "2.0.1", - "fragment-cache": "0.2.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "1.0.2" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "2.0.1", - "is-number": "3.0.0", - "repeat-string": "1.6.1", - "to-regex-range": "2.1.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "2.1.1" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "extglob": "2.0.4", - "fragment-cache": "0.2.1", - "kind-of": "6.0.2", - "nanomatch": "1.2.9", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "is-extendable": "0.1.1" } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true } } }, - "fined": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fined/-/fined-1.1.0.tgz", - "integrity": "sha1-s33IRLdqL15wgeiE98CuNE8VNHY=", + "finalhandler": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", + "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "statuses": "1.4.0", + "unpipe": "1.0.0" + } + }, + "find-cache-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", + "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", "dev": true, "requires": { - "expand-tilde": "2.0.2", - "is-plain-object": "2.0.4", - "object.defaults": "1.1.0", - "object.pick": "1.3.0", - "parse-filepath": "1.0.2" + "commondir": "1.0.1", + "make-dir": "1.2.0", + "pkg-dir": "2.0.0" } }, - "first-chunk-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz", - "integrity": "sha1-Wb+1DNkF9g18OUzT2ayqtOatk04=", + "find-index": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz", + "integrity": "sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ=", "dev": true }, - "flagged-respawn": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.0.tgz", - "integrity": "sha1-Tnmumy6zi/hrO7Vr8+ClaqX8q9c=", + "find-parent-dir": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.3.0.tgz", + "integrity": "sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ=", "dev": true }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "2.0.0" + } + }, + "flush-write-stream": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", + "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.6" + } + }, "follow-redirects": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.4.1.tgz", @@ -3073,12 +4464,6 @@ "requires": { "ms": "2.0.0" } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true } } }, @@ -3089,14 +4474,20 @@ "dev": true }, "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", "dev": true, "requires": { "for-in": "1.0.2" } }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -3104,9 +4495,9 @@ "dev": true }, "form-data": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", - "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", + "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", "dev": true, "requires": { "asynckit": "0.4.0", @@ -3114,6 +4505,12 @@ "mime-types": "2.1.18" } }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "dev": true + }, "fragment-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", @@ -3135,6 +4532,16 @@ "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=", "dev": true }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.6" + } + }, "fs-access": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.1.tgz", @@ -3166,6 +4573,18 @@ } } }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "iferr": "0.1.5", + "imurmurhash": "0.1.4", + "readable-stream": "2.3.6" + } + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -3173,9 +4592,9 @@ "dev": true }, "fsevents": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.2.tgz", - "integrity": "sha512-iownA+hC4uHFp+7gwP/y5SzaiUo7m2vpa0dhpzw8YuKtiZsz7cIXsFbXpLEeBM6WuCQyw1MH4RRe6XI8GFUctQ==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.3.tgz", + "integrity": "sha512-X+57O5YkDTiEQGiw8i7wYc2nQgweIekqkepI8Q3y4wVlurgBt2SuwxTeYUYMZIGpLZH3r/TsMjczCMXE5ZOt7Q==", "dev": true, "optional": true, "requires": { @@ -3713,6 +5132,12 @@ "rimraf": "2.6.2" } }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, "gauge": { "version": "2.7.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", @@ -3727,23 +5152,15 @@ "string-width": "1.0.2", "strip-ansi": "3.0.1", "wide-align": "1.1.2" - }, - "dependencies": { - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - } } }, "gaze": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz", - "integrity": "sha1-QLcJU30k0dRXZ9takIaJ3+aaxE8=", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.2.tgz", + "integrity": "sha1-hHIkZ3rbiHDWeSV+0ziP22HkAQU=", "dev": true, "requires": { - "globule": "0.1.0" + "globule": "1.2.0" } }, "generate-function": { @@ -3792,20 +5209,12 @@ "dev": true, "requires": { "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } } }, "glob": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { "fs.realpath": "1.0.0", @@ -3824,95 +5233,53 @@ "requires": { "glob-parent": "2.0.0", "is-glob": "2.0.1" - } - }, - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true, - "requires": { - "is-glob": "2.0.1" - } - }, - "glob-stream": { - "version": "3.1.18", - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-3.1.18.tgz", - "integrity": "sha1-kXCl8St5Awb9/lmPMT+PeVT9FDs=", - "dev": true, - "requires": { - "glob": "4.5.3", - "glob2base": "0.0.12", - "minimatch": "2.0.10", - "ordered-read-streams": "0.1.0", - "through2": "0.6.5", - "unique-stream": "1.0.0" }, "dependencies": { - "glob": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz", - "integrity": "sha1-xstz0yJsHv7wTePFbQEvAzd+4V8=", - "dev": true, - "requires": { - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "2.0.10", - "once": "1.4.0" - } - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "minimatch": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", - "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", - "dev": true, - "requires": { - "brace-expansion": "1.1.11" - } - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" + "is-glob": "2.0.1" } }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", "dev": true }, - "through2": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { - "readable-stream": "1.0.34", - "xtend": "4.0.1" + "is-extglob": "1.0.0" } } } }, - "glob-watcher": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-0.0.6.tgz", - "integrity": "sha1-uVtKjfdLOcgymLDAXJeLTZo7cQs=", + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", "dev": true, "requires": { - "gaze": "0.5.2" + "is-glob": "3.1.0", + "path-dirname": "1.0.2" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + } } }, "glob2base": { @@ -3933,108 +5300,35 @@ "ini": "1.3.5" } }, - "global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "dev": true, - "requires": { - "global-prefix": "1.0.2", - "is-windows": "1.0.2", - "resolve-dir": "1.0.1" - } - }, - "global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", - "dev": true, - "requires": { - "expand-tilde": "2.0.2", - "homedir-polyfill": "1.0.1", - "ini": "1.3.5", - "is-windows": "1.0.2", - "which": "1.3.0" - } - }, "globals": { "version": "9.18.0", "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha1-qjiWs+abSH8X4x7SFD1pqOMMLYo=", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", "dev": true }, "globby": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", - "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", + "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", "dev": true, "requires": { "array-union": "1.0.2", - "arrify": "1.0.1", + "dir-glob": "2.0.0", "glob": "7.1.2", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - }, - "dependencies": { - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - } + "ignore": "3.3.8", + "pify": "3.0.0", + "slash": "1.0.0" } }, "globule": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz", - "integrity": "sha1-2cjt3h2nnRJaFRt5UzuXhnY0auU=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.0.tgz", + "integrity": "sha1-HcScaCLdnoovoAuiopUAboZkvQk=", "dev": true, "requires": { - "glob": "3.1.21", - "lodash": "1.0.2", - "minimatch": "0.2.14" - }, - "dependencies": { - "glob": { - "version": "3.1.21", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", - "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=", - "dev": true, - "requires": { - "graceful-fs": "1.2.3", - "inherits": "1.0.2", - "minimatch": "0.2.14" - } - }, - "graceful-fs": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", - "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=", - "dev": true - }, - "inherits": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz", - "integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=", - "dev": true - }, - "lodash": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz", - "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=", - "dev": true - }, - "minimatch": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", - "dev": true, - "requires": { - "lru-cache": "2.7.3", - "sigmund": "1.0.1" - } - } + "glob": "7.1.2", + "lodash": "4.17.10", + "minimatch": "3.0.4" } }, "glogg": { @@ -4059,7 +5353,7 @@ "is-retry-allowed": "1.1.0", "is-stream": "1.1.0", "lowercase-keys": "1.0.1", - "safe-buffer": "5.1.1", + "safe-buffer": "5.1.2", "timed-out": "4.0.1", "unzip-response": "2.0.1", "url-parse-lax": "1.0.0" @@ -4071,92 +5365,6 @@ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", "dev": true }, - "graceful-readlink": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", - "dev": true - }, - "growl": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", - "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", - "dev": true - }, - "gulp": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/gulp/-/gulp-3.9.1.tgz", - "integrity": "sha1-VxzkWSjdQK9lFPxAEYZgFsE4RbQ=", - "dev": true, - "requires": { - "archy": "1.0.0", - "chalk": "1.1.3", - "deprecated": "0.0.1", - "gulp-util": "3.0.8", - "interpret": "1.1.0", - "liftoff": "2.5.0", - "minimist": "1.2.0", - "orchestrator": "0.3.8", - "pretty-hrtime": "1.0.3", - "semver": "4.3.6", - "tildify": "1.2.0", - "v8flags": "2.1.1", - "vinyl-fs": "0.3.14" - }, - "dependencies": { - "semver": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", - "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", - "dev": true - } - } - }, - "gulp-rename": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-1.2.2.tgz", - "integrity": "sha1-OtRCh2PwXidk3sHGfYaNsnVoeBc=", - "dev": true - }, - "gulp-rollup": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/gulp-rollup/-/gulp-rollup-2.11.0.tgz", - "integrity": "sha1-2OrAiZYOTbwprhFR7BcFUvJtUbg=", - "dev": true, - "requires": { - "buffer-from": "0.1.2", - "gulp-util": "3.0.8", - "readable-stream": "2.3.6", - "rollup": "0.41.6", - "rollup-plugin-hypothetical": "1.2.1" - }, - "dependencies": { - "rollup": { - "version": "0.41.6", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.41.6.tgz", - "integrity": "sha1-4NBUl4d6OYwQTYFtJzOnGKepTio=", - "dev": true, - "requires": { - "source-map-support": "0.4.18" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", - "dev": true, - "requires": { - "source-map": "0.5.7" - } - } - } - }, "gulp-util": { "version": "3.0.8", "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", @@ -4181,6 +5389,45 @@ "replace-ext": "0.0.1", "through2": "2.0.3", "vinyl": "0.5.3" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "object-assign": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", + "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", + "dev": true + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } } }, "gulplog": { @@ -4192,6 +5439,12 @@ "glogg": "1.0.1" } }, + "handle-thing": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz", + "integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=", + "dev": true + }, "handlebars": { "version": "4.0.11", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", @@ -4212,23 +5465,67 @@ "requires": { "amdefine": "1.0.1" } + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "dev": true, + "optional": true, + "requires": { + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "optional": true + } + } } } }, "har-schema": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", - "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", "dev": true }, "har-validator": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", - "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", + "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", "dev": true, "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" + "ajv": "5.5.2", + "har-schema": "2.0.0" + }, + "dependencies": { + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + } + } + }, + "has": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", + "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", + "dev": true, + "requires": { + "function-bind": "1.1.1" } }, "has-ansi": { @@ -4264,9 +5561,9 @@ "dev": true }, "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, "has-gulplog": { @@ -4278,6 +5575,12 @@ "sparkles": "1.0.0" } }, + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "dev": true + }, "has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", @@ -4293,14 +5596,6 @@ "get-value": "2.0.6", "has-values": "1.0.0", "isobject": "3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } } }, "has-values": { @@ -4313,26 +5608,6 @@ "kind-of": "4.0.0" }, "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, "kind-of": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", @@ -4351,13 +5626,13 @@ "dev": true, "requires": { "inherits": "2.0.3", - "safe-buffer": "5.1.1" + "safe-buffer": "5.1.2" } }, "hash.js": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", - "integrity": "sha1-NA3tvmKQGHFRweodd3o0SJNd+EY=", + "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", "dev": true, "requires": { "inherits": "2.0.3", @@ -4365,17 +5640,23 @@ } }, "hawk": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", - "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", + "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", "dev": true, "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" + "boom": "4.3.1", + "cryptiles": "3.1.2", + "hoek": "4.2.1", + "sntp": "2.1.0" } }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true + }, "hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", @@ -4388,44 +5669,124 @@ } }, "hoek": { - "version": "2.16.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", + "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==", "dev": true }, - "homedir-polyfill": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", - "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", - "dev": true, - "requires": { - "parse-passwd": "1.0.0" - } - }, "hosted-git-info": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==", "dev": true }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "obuf": "1.1.2", + "readable-stream": "2.3.6", + "wbuf": "1.7.3" + } + }, "html-entities": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", "dev": true }, + "html-minifier": { + "version": "3.5.15", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.15.tgz", + "integrity": "sha512-OZa4rfb6tZOZ3Z8Xf0jKxXkiDcFWldQePGYFDcgKqES2sXeWaEv9y6QQvWUtX3ySI3feApQi5uCsHLINQ6NoAw==", + "dev": true, + "requires": { + "camel-case": "3.0.0", + "clean-css": "4.1.11", + "commander": "2.15.1", + "he": "1.1.1", + "param-case": "2.1.1", + "relateurl": "0.2.7", + "uglify-js": "3.3.24" + } + }, + "html-webpack-plugin": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz", + "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=", + "dev": true, + "requires": { + "html-minifier": "3.5.15", + "loader-utils": "0.2.17", + "lodash": "4.17.10", + "pretty-error": "2.1.1", + "tapable": "1.0.0", + "toposort": "1.0.7", + "util.promisify": "1.0.0" + }, + "dependencies": { + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.1" + } + } + } + }, "htmlparser2": { - "version": "3.9.2", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", - "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz", + "integrity": "sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=", "dev": true, "requires": { "domelementtype": "1.3.0", - "domhandler": "2.4.1", - "domutils": "1.5.1", - "entities": "1.1.1", - "inherits": "2.0.3", - "readable-stream": "2.3.6" + "domhandler": "2.1.0", + "domutils": "1.1.6", + "readable-stream": "1.0.34" + }, + "dependencies": { + "domutils": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.1.6.tgz", + "integrity": "sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU=", + "dev": true, + "requires": { + "domelementtype": "1.3.0" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } } }, "http-auth": { @@ -4440,6 +5801,12 @@ "uuid": "3.2.1" } }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, "http-errors": { "version": "1.6.3", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", @@ -4449,15 +5816,7 @@ "depd": "1.1.2", "inherits": "2.0.3", "setprototypeof": "1.1.0", - "statuses": "1.5.0" - }, - "dependencies": { - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", - "dev": true - } + "statuses": "1.4.0" } }, "http-parser-js": { @@ -4472,18 +5831,30 @@ "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==", "dev": true, "requires": { - "eventemitter3": "3.0.1", + "eventemitter3": "3.1.0", "follow-redirects": "1.4.1", "requires-port": "1.0.0" } }, + "http-proxy-middleware": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz", + "integrity": "sha512-Fs25KVMPAIIcgjMZkVHJoKg9VcXcC1C8yb9JUgeDvVXY0S/zgVIhMb+qVswDIgtJe2DfckMSY2d6TuTEutlk6Q==", + "dev": true, + "requires": { + "http-proxy": "1.17.0", + "is-glob": "4.0.0", + "lodash": "4.17.10", + "micromatch": "3.1.10" + } + }, "http-signature": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", - "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", "dev": true, "requires": { - "assert-plus": "0.2.0", + "assert-plus": "1.0.0", "jsprim": "1.4.1", "sshpk": "1.14.1" } @@ -4501,7 +5872,7 @@ "dev": true, "requires": { "agent-base": "2.1.1", - "debug": "2.2.0", + "debug": "2.6.9", "extend": "3.0.1" } }, @@ -4517,12 +5888,47 @@ "integrity": "sha512-VhDzCKN7K8ufStx/CLj5/PDTMgph+qwN5Pkd5i0sGnVwk56zJ0lkT8Qzi1xqWLS0Wp29DgDtNeS7v8/wMoZeHg==", "dev": true }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "ignore": { + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.8.tgz", + "integrity": "sha512-pUh+xUQQhQzevjRHHFqqcTy0/dP/kS9I8HSrUydhihjuD09W6ldVWFtIrwhXdUJHis3i2rZNqEHpZH/cbinFbg==", + "dev": true + }, + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", + "dev": true, + "optional": true + }, + "immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=", + "dev": true + }, "import-lazy": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", "dev": true }, + "import-local": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz", + "integrity": "sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==", + "dev": true, + "requires": { + "pkg-dir": "2.0.0", + "resolve-cwd": "2.0.0" + } + }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -4572,6 +5978,21 @@ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", "dev": true }, + "injection-js": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/injection-js/-/injection-js-2.2.1.tgz", + "integrity": "sha512-zHI+E+dM0PXix5FFTO1Y4/UOyAzE7zG1l/QwAn4jchTThOoBq+UYRFK4AVG7lQgFL+go62SbrzSsjXy9DFEZUg==", + "dev": true + }, + "internal-ip": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-1.2.0.tgz", + "integrity": "sha1-rp+/k7mEh4eF1QqN4bNWlWBYz1w=", + "dev": true, + "requires": { + "meow": "3.7.0" + } + }, "interpret": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", @@ -4593,15 +6014,17 @@ "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", "dev": true }, - "is-absolute": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", - "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", - "dev": true, - "requires": { - "is-relative": "1.0.0", - "is-windows": "1.0.2" - } + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "ipaddr.js": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.6.0.tgz", + "integrity": "sha1-4/o1e3c9phnybpXwSdBVxyeW+Gs=", + "dev": true }, "is-accessor-descriptor": { "version": "0.1.6", @@ -4610,6 +6033,17 @@ "dev": true, "requires": { "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } } }, "is-arrayish": { @@ -4642,6 +6076,12 @@ "builtin-modules": "1.1.1" } }, + "is-callable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", + "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=", + "dev": true + }, "is-ci": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.1.0.tgz", @@ -4658,8 +6098,25 @@ "dev": true, "requires": { "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } } }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "dev": true + }, "is-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", @@ -4679,6 +6136,12 @@ } } }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, "is-dotfile": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", @@ -4701,9 +6164,9 @@ "dev": true }, "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true }, "is-finite": { @@ -4725,12 +6188,12 @@ } }, "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", "dev": true, "requires": { - "is-extglob": "1.0.0" + "is-extglob": "2.1.1" } }, "is-installed-globally": { @@ -4743,6 +6206,12 @@ "is-path-inside": "1.0.1" } }, + "is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "dev": true + }, "is-my-ip-valid": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz", @@ -4769,12 +6238,23 @@ "dev": true }, "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } } }, "is-obj": { @@ -4827,18 +6307,10 @@ "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, "requires": { "isobject": "3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } } }, "is-posix-bracket": { @@ -4865,13 +6337,13 @@ "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", "dev": true }, - "is-relative": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", - "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", "dev": true, "requires": { - "is-unc-path": "1.0.0" + "has": "1.0.1" } }, "is-retry-allowed": { @@ -4886,21 +6358,18 @@ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "dev": true }, + "is-symbol": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", + "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", + "dev": true + }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, - "is-unc-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", - "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", - "dev": true, - "requires": { - "unc-path-regex": "0.1.2" - } - }, "is-utf8": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", @@ -4938,13 +6407,10 @@ "dev": true }, "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true }, "isstream": { "version": "0.1.2", @@ -4974,12 +6440,6 @@ "wordwrap": "1.0.0" }, "dependencies": { - "esprima": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", - "dev": true - }, "glob": { "version": "5.0.15", "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", @@ -4993,6 +6453,12 @@ "path-is-absolute": "1.0.1" } }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, "resolve": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", @@ -5007,12 +6473,6 @@ "requires": { "has-flag": "1.0.0" } - }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true } } }, @@ -5047,6 +6507,41 @@ } } }, + "istanbul-instrumenter-loader": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-instrumenter-loader/-/istanbul-instrumenter-loader-3.0.1.tgz", + "integrity": "sha512-a5SPObZgS0jB/ixaKSMdn6n/gXSrK2S6q/UfRJBT3e6gQmVjwZROTODQsYW5ZNwOu78hG62Y3fWlebaVOL0C+w==", + "dev": true, + "requires": { + "convert-source-map": "1.5.1", + "istanbul-lib-instrument": "1.10.1", + "loader-utils": "1.1.0", + "schema-utils": "0.3.0" + }, + "dependencies": { + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "schema-utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", + "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=", + "dev": true, + "requires": { + "ajv": "5.5.2" + } + } + } + }, "istanbul-lib-coverage": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz", @@ -5089,6 +6584,12 @@ "supports-color": "3.2.3" }, "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", @@ -5121,18 +6622,6 @@ "requires": { "ms": "2.0.0" } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true } } }, @@ -5146,34 +6635,34 @@ } }, "jasmine": { - "version": "2.99.0", - "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.99.0.tgz", - "integrity": "sha1-jKctEC5jm4Z8ZImFbg4YqceqQrc=", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.8.0.tgz", + "integrity": "sha1-awicChFXax8W3xG4AUbZHU6Lij4=", "dev": true, "requires": { "exit": "0.1.2", "glob": "7.1.2", - "jasmine-core": "2.99.1" + "jasmine-core": "2.8.0" }, "dependencies": { "jasmine-core": { - "version": "2.99.1", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.99.1.tgz", - "integrity": "sha1-5kAN8ea1bhMLYcS80JPap/boyhU=", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.8.0.tgz", + "integrity": "sha1-vMl5rh+f0FcB5F5S5l06XWPxok4=", "dev": true } } }, "jasmine-core": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.5.2.tgz", - "integrity": "sha1-b2G9eQYeJ/Q+b5NV5Es8bKtv8pc=", + "version": "2.99.1", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.99.1.tgz", + "integrity": "sha1-5kAN8ea1bhMLYcS80JPap/boyhU=", "dev": true }, "jasmine-spec-reporter": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-3.2.0.tgz", - "integrity": "sha1-/b6FqAzN07J2dGvHf96Dwc53Pv8=", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-4.2.1.tgz", + "integrity": "sha512-FZBoZu7VE5nR7Nilzy+Np8KuVIOxF4oXDPDknehCYBDE080EnlPu0afdZNmpGDBRCUBv3mj5qgqCRmk6W/K8vg==", "dev": true, "requires": { "colors": "1.1.2" @@ -5213,6 +6702,14 @@ "requires": { "argparse": "1.0.10", "esprima": "4.0.0" + }, + "dependencies": { + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true + } } }, "jsbn": { @@ -5223,9 +6720,15 @@ "optional": true }, "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "dev": true }, "json-schema": { @@ -5234,6 +6737,12 @@ "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", "dev": true }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true + }, "json-stable-stringify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", @@ -5255,6 +6764,12 @@ "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", "dev": true }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, "jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", @@ -5286,456 +6801,318 @@ "extsprintf": "1.3.0", "json-schema": "0.2.3", "verror": "1.10.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } } }, - "karma": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/karma/-/karma-1.7.0.tgz", - "integrity": "sha1-b3oaQGRG+i4YfslTmGmPTO5HYmk=", + "jszip": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.1.5.tgz", + "integrity": "sha512-5W8NUaFRFRqTOL7ZDDrx5qWHJyBXy6velVudIzQUSoqAAYqzSh2Z7/m0Rf1QbmQJccegD0r+YZxBjzqoBiEeJQ==", "dev": true, "requires": { - "bluebird": "3.5.1", - "body-parser": "1.18.2", - "chokidar": "1.7.0", - "colors": "1.2.1", - "combine-lists": "1.0.1", - "connect": "3.6.6", - "core-js": "2.4.1", - "di": "0.0.1", - "dom-serialize": "2.2.1", - "expand-braces": "0.1.2", - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "http-proxy": "1.17.0", - "isbinaryfile": "3.0.2", - "lodash": "3.10.1", - "log4js": "0.6.38", - "mime": "1.4.1", - "minimatch": "3.0.4", - "optimist": "0.6.1", - "qjobs": "1.2.0", - "range-parser": "1.2.0", - "rimraf": "2.6.2", - "safe-buffer": "5.1.1", - "socket.io": "1.7.3", - "source-map": "0.5.7", - "tmp": "0.0.31", - "useragent": "2.3.0" + "core-js": "2.3.0", + "es6-promise": "3.0.2", + "lie": "3.1.1", + "pako": "1.0.6", + "readable-stream": "2.0.6" }, "dependencies": { - "connect": { - "version": "3.6.6", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", - "integrity": "sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=", - "dev": true, - "requires": { - "debug": "2.6.9", - "finalhandler": "1.1.0", - "parseurl": "1.3.2", - "utils-merge": "1.0.1" - } - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "finalhandler": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", - "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "on-finished": "2.3.0", - "parseurl": "1.3.2", - "statuses": "1.3.1", - "unpipe": "1.0.0" - } - }, - "lodash": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "core-js": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.3.0.tgz", + "integrity": "sha1-+rg/uwstjchfpjbEudNMdUIMbWU=", "dev": true }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "es6-promise": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.0.2.tgz", + "integrity": "sha1-AQ1YWEI6XxGJeWZfRkhqlcbuK7Y=", "dev": true }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", "dev": true }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", - "dev": true - } - } - }, - "karma-chrome-launcher": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz", - "integrity": "sha1-zxudBxNswY/iOTJ9JGVMPbw2is8=", - "dev": true, - "requires": { - "fs-access": "1.0.1", - "which": "1.3.0" - } - }, - "karma-cli": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/karma-cli/-/karma-cli-1.0.1.tgz", - "integrity": "sha1-rmw8WKMTodALRRZMRVubhs4X+WA=", - "dev": true, - "requires": { - "resolve": "1.7.1" - } - }, - "karma-coverage": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-1.1.1.tgz", - "integrity": "sha1-Wv+LOc9plNwi3kyENix2ABtjfPY=", - "dev": true, - "requires": { - "dateformat": "1.0.12", - "istanbul": "0.4.5", - "lodash": "3.10.1", - "minimatch": "3.0.4", - "source-map": "0.5.7" - }, - "dependencies": { - "dateformat": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", - "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=", + "readable-stream": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", "dev": true, "requires": { - "get-stdin": "4.0.1", - "meow": "3.7.0" + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "0.10.31", + "util-deprecate": "1.0.2" } }, - "lodash": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } - } - }, - "karma-coverage-istanbul-reporter": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-0.2.0.tgz", - "integrity": "sha1-V2YmMzit6wAm9+Sseoml8FbFZCw=", - "dev": true, - "requires": { - "istanbul-api": "1.3.1" - } - }, - "karma-headless-chrome-launcher": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/karma-headless-chrome-launcher/-/karma-headless-chrome-launcher-0.0.6.tgz", - "integrity": "sha1-4ZCz6Wox2Poz3hIQplUMyRcKSSk=", - "dev": true, - "requires": { - "chrome-location": "1.2.1", - "q": "1.4.1", - "rimraf": "2.5.4", - "which": "1.2.11", - "xvfb": "0.2.3" - }, - "dependencies": { - "isexe": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-1.1.2.tgz", - "integrity": "sha1-NvPiLmB1CSD15yQaR2qMakInWtA=", + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", "dev": true - }, - "rimraf": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", - "integrity": "sha1-loAAk8vxoMhr2VtGJUZ1NcKd+gQ=", - "dev": true, - "requires": { - "glob": "7.1.2" - } - }, - "which": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/which/-/which-1.2.11.tgz", - "integrity": "sha1-yLLu6muMFln6fB3U/aq+lTPcXos=", - "dev": true, - "requires": { - "isexe": "1.1.2" - } } } }, - "karma-jasmine": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-1.1.0.tgz", - "integrity": "sha1-IuTAa/mhguUpTR9wXjczgRuBCs8=", - "dev": true - }, - "karma-jasmine-html-reporter": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-0.2.2.tgz", - "integrity": "sha1-SKjl7xiAdhfuK14zwRlMNbQ5Ukw=", - "dev": true, - "requires": { - "karma-jasmine": "1.1.0" - } - }, - "karma-mocha": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/karma-mocha/-/karma-mocha-1.3.0.tgz", - "integrity": "sha1-7qrH/8DiAetjxGdEDStpx883eL8=", - "dev": true, - "requires": { - "minimist": "1.2.0" - } - }, - "karma-mocha-reporter": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/karma-mocha-reporter/-/karma-mocha-reporter-2.2.3.tgz", - "integrity": "sha1-BP3aRaHZaXpzhxx0ciI8WBcBqyA=", - "dev": true, - "requires": { - "chalk": "1.1.3" - } - }, - "karma-sourcemap-loader": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.7.tgz", - "integrity": "sha1-kTIsd/jxPUb+0GKwQuEAnUxFBdg=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11" - } - }, - "karma-typescript": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/karma-typescript/-/karma-typescript-3.0.5.tgz", - "integrity": "sha1-9J+t83ZXU75UP+RmkugFAUVRmp8=", + "karma": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/karma/-/karma-1.7.1.tgz", + "integrity": "sha512-k5pBjHDhmkdaUccnC7gE3mBzZjcxyxYsYVaqiL2G5AqlfLyBO5nw2VdNK+O16cveEPd/gIOWULH7gkiYYwVNHg==", "dev": true, "requires": { - "acorn": "4.0.13", - "amdefine": "1.0.0", - "assert": "1.4.1", - "async": "2.6.0", - "base64-js": "1.3.0", - "browser-resolve": "1.11.2", - "browserify-zlib": "0.2.0", - "buffer": "5.1.0", - "console-browserify": "1.1.0", - "constants-browserify": "1.0.0", - "crypto-browserify": "3.12.0", - "diff": "3.5.0", - "domain-browser": "1.2.0", - "es6-promise": "4.2.4", - "events": "1.1.1", + "bluebird": "3.5.1", + "body-parser": "1.18.2", + "chokidar": "1.7.0", + "colors": "1.2.4", + "combine-lists": "1.0.1", + "connect": "3.6.6", + "core-js": "2.5.6", + "di": "0.0.1", + "dom-serialize": "2.2.1", + "expand-braces": "0.1.2", "glob": "7.1.2", - "gulp-util": "3.0.7", - "https-browserify": "1.0.0", - "ieee754": "1.1.11", - "isarray": "1.0.0", - "istanbul": "0.4.5", - "karma-coverage": "1.1.1", - "lodash": "4.17.10", - "log4js": "1.1.1", - "magic-string": "0.19.1", + "graceful-fs": "4.1.11", + "http-proxy": "1.17.0", + "isbinaryfile": "3.0.2", + "lodash": "3.10.1", + "log4js": "0.6.38", + "mime": "1.6.0", "minimatch": "3.0.4", - "os-browserify": "0.3.0", - "pad": "1.2.1", - "path-browserify": "0.0.0", - "process": "0.11.10", - "punycode": "1.4.1", - "querystring-es3": "0.2.1", - "readable-stream": "2.3.6", - "remap-istanbul": "0.8.4", - "source-map": "0.6.1", - "stream-browserify": "2.0.1", - "stream-http": "2.8.1", - "string_decoder": "1.1.1", - "through2": "2.0.1", - "timers-browserify": "2.0.10", - "tmp": "0.0.29", - "tty-browserify": "0.0.0", - "url": "0.11.0", - "util": "0.10.3", - "vm-browserify": "0.0.4" + "optimist": "0.6.1", + "qjobs": "1.2.0", + "range-parser": "1.2.0", + "rimraf": "2.6.2", + "safe-buffer": "5.1.2", + "socket.io": "1.7.3", + "source-map": "0.5.7", + "tmp": "0.0.31", + "useragent": "2.3.0" }, "dependencies": { - "amdefine": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", - "integrity": "sha1-/RdHRwDLXMnCtwnwvp0jzjwZjDM=", + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "requires": { + "micromatch": "2.3.11", + "normalize-path": "2.1.1" + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "1.1.0" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", "dev": true }, - "async": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", - "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "dev": true, "requires": { - "lodash": "4.17.10" + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" } }, - "dateformat": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", - "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=", + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", "dev": true, "requires": { - "get-stdin": "4.0.1", - "meow": "3.7.0" + "anymatch": "1.3.2", + "async-each": "1.0.1", + "fsevents": "1.2.3", + "glob-parent": "2.0.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "2.0.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0" } }, - "gulp-util": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.7.tgz", - "integrity": "sha1-eJJcS4+LSQBawBoBHFV+YhiUHLs=", + "connect": { + "version": "3.6.6", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", + "integrity": "sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=", "dev": true, "requires": { - "array-differ": "1.0.0", - "array-uniq": "1.0.3", - "beeper": "1.1.1", - "chalk": "1.1.3", - "dateformat": "1.0.12", - "fancy-log": "1.3.2", - "gulplog": "1.0.0", - "has-gulplog": "0.1.0", - "lodash._reescape": "3.0.0", - "lodash._reevaluate": "3.0.0", - "lodash._reinterpolate": "3.0.0", - "lodash.template": "3.6.2", - "minimist": "1.2.0", - "multipipe": "0.1.2", - "object-assign": "3.0.0", - "replace-ext": "0.0.1", - "through2": "2.0.1", - "vinyl": "0.5.3" + "debug": "2.6.9", + "finalhandler": "1.1.0", + "parseurl": "1.3.2", + "utils-merge": "1.0.1" } }, - "log4js": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-1.1.1.tgz", - "integrity": "sha1-wh0px2BAieTyVYM+f5SzRh3h/0M=", + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "dev": true, "requires": { - "debug": "2.2.0", - "semver": "5.5.0", - "streamroller": "0.4.1" + "is-posix-bracket": "0.1.1" } }, - "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "finalhandler": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", + "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "statuses": "1.3.1", + "unpipe": "1.0.0" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", "dev": true }, - "through2": { + "is-glob": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.1.tgz", - "integrity": "sha1-OE51MU1J8y3hLuu4E2uOtrXVnak=", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { - "readable-stream": "2.0.6", - "xtend": "4.0.1" - }, - "dependencies": { - "readable-stream": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "string_decoder": "0.10.31", - "util-deprecate": "1.0.2" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } + "is-extglob": "1.0.0" } }, - "tmp": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.29.tgz", - "integrity": "sha1-8lEl/w3Z2jzLDC3Tce4SiLuRKMA=", + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "os-tmpdir": "1.0.2" + "is-buffer": "1.1.6" + } + }, + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "dev": true + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" } + }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", + "dev": true } } }, - "karma-typescript-angular2-transform": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/karma-typescript-angular2-transform/-/karma-typescript-angular2-transform-1.0.1.tgz", - "integrity": "sha1-kG2D8SpDiq4ugs6FWZkMxYR3ncY=", + "karma-chrome-launcher": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz", + "integrity": "sha512-uf/ZVpAabDBPvdPdveyk1EPgbnloPvFFGgmRhYLTDH7gEB4nZdSBk8yTU47w1g/drLSx5uMOkjKk7IWKfWg/+w==", "dev": true, "requires": { - "acorn": "4.0.13", - "log4js": "1.1.1", - "magic-string": "0.19.1" - }, - "dependencies": { - "log4js": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-1.1.1.tgz", - "integrity": "sha1-wh0px2BAieTyVYM+f5SzRh3h/0M=", - "dev": true, - "requires": { - "debug": "2.2.0", - "semver": "5.5.0", - "streamroller": "0.4.1" - } - } + "fs-access": "1.0.1", + "which": "1.3.0" } }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "karma-coverage-istanbul-reporter": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-1.4.2.tgz", + "integrity": "sha512-sQHexslLF+QHzaKfK8+onTYMyvSwv+p5cDayVxhpEELGa3z0QuB+l0IMsicIkkBNMOJKQaqueiRoW7iuo7lsog==", + "dev": true, + "requires": { + "istanbul-api": "1.3.1", + "minimatch": "3.0.4" + } + }, + "karma-jasmine": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-1.1.2.tgz", + "integrity": "sha1-OU8rJf+0pkS5rabyLUQ+L9CIhsM=", + "dev": true + }, + "karma-jasmine-html-reporter": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-0.2.2.tgz", + "integrity": "sha1-SKjl7xiAdhfuK14zwRlMNbQ5Ukw=", + "dev": true, + "requires": { + "karma-jasmine": "1.1.2" + } + }, + "karma-source-map-support": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.3.0.tgz", + "integrity": "sha512-HcPqdAusNez/ywa+biN4EphGz62MmQyPggUsDfsHqa7tSe4jdsxgvTKuDfIazjL+IOxpVWyT7Pr4dhAV+sxX5Q==", "dev": true, "requires": { - "is-buffer": "1.1.6" + "source-map-support": "0.5.5" } }, + "killable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.0.tgz", + "integrity": "sha1-2ouEvUfeU5WHj5XWTQLyRJ/gXms=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, "latest-version": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", @@ -5761,6 +7138,42 @@ "invert-kv": "1.0.0" } }, + "less": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/less/-/less-3.0.4.tgz", + "integrity": "sha512-q3SyEnPKbk9zh4l36PGeW2fgynKu+FpbhiUNx/yaiBUQ3V0CbACCgb9FzYWcRgI2DJlP6eI4jc8XPrCTi55YcQ==", + "dev": true, + "requires": { + "errno": "0.1.7", + "graceful-fs": "4.1.11", + "image-size": "0.5.5", + "mime": "1.6.0", + "mkdirp": "0.5.1", + "promise": "7.3.1", + "request": "2.85.0", + "source-map": "0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, + "less-loader": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-4.1.0.tgz", + "integrity": "sha512-KNTsgCE9tMOM70+ddxp9yyt9iHqgmSs0yTZc5XH5Wo+g80RWRIYNqE58QJKm/yMud5wZEvz50ugRDuzVIkyahg==", + "dev": true, + "requires": { + "clone": "2.1.1", + "loader-utils": "1.1.0", + "pify": "3.0.0" + } + }, "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", @@ -5771,20 +7184,22 @@ "type-check": "0.3.2" } }, - "liftoff": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.5.0.tgz", - "integrity": "sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew=", + "license-webpack-plugin": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-1.3.1.tgz", + "integrity": "sha512-NqAFodJdpBUuf1iD+Ij8hQvF0rCFKlO2KaieoQzAPhFgzLCtJnC7Z7x5gQbGNjoe++wOKAtAmwVEIBLqq2Yp1A==", "dev": true, "requires": { - "extend": "3.0.1", - "findup-sync": "2.0.0", - "fined": "1.1.0", - "flagged-respawn": "1.0.0", - "is-plain-object": "2.0.4", - "object.map": "1.0.1", - "rechoir": "0.6.2", - "resolve": "1.7.1" + "ejs": "2.6.1" + } + }, + "lie": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", + "integrity": "sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=", + "dev": true, + "requires": { + "immediate": "3.0.6" } }, "live-server": { @@ -5794,7 +7209,7 @@ "dev": true, "requires": { "chokidar": "1.7.0", - "colors": "1.2.1", + "colors": "1.2.4", "connect": "3.5.1", "cors": "2.8.4", "event-stream": "3.3.4", @@ -5808,10 +7223,150 @@ "serve-index": "1.9.1" }, "dependencies": { + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "requires": { + "micromatch": "2.3.11", + "normalize-path": "2.1.1" + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "1.1.0" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "dev": true, + "requires": { + "anymatch": "1.3.2", + "async-each": "1.0.1", + "fsevents": "1.2.3", + "glob-parent": "2.0.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "2.0.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0" + } + }, "colors": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.2.1.tgz", - "integrity": "sha512-s8+wktIuDSLffCywiwSxQOMqtPxML11a/dtHE17tMn4B1MSWw/C22EKf7M2KGUBcDaVFEGT+S8N02geDXeuNKg==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.2.4.tgz", + "integrity": "sha512-6Y+iBnWmXL+AWtlOp2Vr6R2w5MUlNJRwR0ShVFaAb1CqWzhPOpQg4L0jxD+xpw/Nc8QJwaq3KM79QUCriY8CWQ==", + "dev": true + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "faye-websocket": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", + "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", + "dev": true, + "requires": { + "websocket-driver": "0.7.0" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + }, + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", "dev": true }, "object-assign": { @@ -5819,6 +7374,36 @@ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true + }, + "opn": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", + "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", + "dev": true, + "requires": { + "is-wsl": "1.1.0" + } + }, + "send": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", + "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "1.1.2", + "destroy": "1.0.4", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.8.1", + "fresh": "0.5.2", + "http-errors": "1.6.3", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "2.3.0", + "range-parser": "1.2.0", + "statuses": "1.4.0" + } } } }, @@ -5835,45 +7420,53 @@ "strip-bom": "2.0.0" }, "dependencies": { - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "0.2.1" - } + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true } } }, - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", + "loader-runner": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", + "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=", "dev": true }, - "lodash._baseassign": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", - "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", + "loader-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", "dev": true, "requires": { - "lodash._basecopy": "3.0.1", - "lodash.keys": "3.1.2" + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1" } }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + } + }, + "lodash": { + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", + "dev": true + }, "lodash._basecopy": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", "dev": true }, - "lodash._basecreate": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", - "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=", - "dev": true - }, "lodash._basetostring": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", @@ -5934,17 +7527,6 @@ "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", "dev": true }, - "lodash.create": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", - "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", - "dev": true, - "requires": { - "lodash._baseassign": "3.2.0", - "lodash._basecreate": "3.0.3", - "lodash._isiterateecall": "3.0.9" - } - }, "lodash.escape": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", @@ -5989,6 +7571,12 @@ "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=", "dev": true }, + "lodash.tail": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.tail/-/lodash.tail-4.1.1.tgz", + "integrity": "sha1-0jM6NtnncXyK0vfKyv7HwytERmQ=", + "dev": true + }, "lodash.template": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", @@ -6016,6 +7604,15 @@ "lodash.escape": "3.2.0" } }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, + "requires": { + "chalk": "2.2.2" + } + }, "log4js": { "version": "0.6.38", "resolved": "https://registry.npmjs.org/log4js/-/log4js-0.6.38.tgz", @@ -6058,6 +7655,22 @@ } } }, + "loglevel": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz", + "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=", + "dev": true + }, + "loglevelnext": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/loglevelnext/-/loglevelnext-1.0.5.tgz", + "integrity": "sha512-V/73qkPuJmx4BcBF19xPBr+0ZRVBhc4POxvZTZdMeXpJ4NItXSJ/MSwuFT0kQJlCbXvdlZoQQ/418bS1y9Jh6A==", + "dev": true, + "requires": { + "es6-symbol": "3.1.1", + "object.assign": "4.1.0" + } + }, "longest": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", @@ -6083,6 +7696,12 @@ "signal-exit": "3.0.2" } }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", + "dev": true + }, "lowercase-keys": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", @@ -6090,10 +7709,14 @@ "dev": true }, "lru-cache": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", - "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", - "dev": true + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", + "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", + "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } }, "lunr": { "version": "1.0.0", @@ -6104,13 +7727,13 @@ "macos-release": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-1.1.0.tgz", - "integrity": "sha1-gxlF4pNltHCqhySwqzbI+JWdEPs=", + "integrity": "sha512-mmLbumEYMi5nXReB9js3WGsB8UE6cDBWyIO62Z4DNx6GbRhDxHNjA1MlzSpJ2S2KM1wyiPRA0d19uHWYYvMHjA==", "dev": true }, "magic-string": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.19.1.tgz", - "integrity": "sha1-FNdoATyvLsj96hakmvgvw3fnUgE=", + "version": "0.22.5", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz", + "integrity": "sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w==", "dev": true, "requires": { "vlq": "0.2.3" @@ -6123,14 +7746,6 @@ "dev": true, "requires": { "pify": "3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } } }, "make-error": { @@ -6139,23 +7754,6 @@ "integrity": "sha512-0Dab5btKVPhibSalc9QGXb559ED7G7iLjFXBaj9Wq8O3vorueR5K5jaE3hkG6ZQINyhA/JgG6Qk4qdFQjsYV6g==", "dev": true }, - "make-iterator": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", - "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", - "dev": true, - "requires": { - "kind-of": "6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } - } - }, "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", @@ -6205,6 +7803,25 @@ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", "dev": true }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "dev": true, + "requires": { + "mimic-fn": "1.2.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "0.1.7", + "readable-stream": "2.3.6" + } + }, "meow": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", @@ -6223,33 +7840,45 @@ "trim-newlines": "1.0.0" }, "dependencies": { - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true } } }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "dev": true, "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.1", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.2.2", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.4" + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.9", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" } }, "miller-rabin": { @@ -6263,9 +7892,9 @@ } }, "mime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true }, "mime-db": { @@ -6283,6 +7912,22 @@ "mime-db": "1.33.0" } }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "mini-css-extract-plugin": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.0.tgz", + "integrity": "sha512-2Zik6PhUZ/MbiboG6SDS9UTPL4XXy4qnyGjSdCIWRrr8xb6PwLtHE+AYOjkXJWdF0OG8vo/yrJ8CgS5WbMpzIg==", + "dev": true, + "requires": { + "loader-utils": "1.1.0", + "webpack-sources": "1.1.0" + } + }, "minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", @@ -6298,18 +7943,36 @@ "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { "brace-expansion": "1.1.11" } }, "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true }, + "mississippi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz", + "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==", + "dev": true, + "requires": { + "concat-stream": "1.6.2", + "duplexify": "3.6.0", + "end-of-stream": "1.4.1", + "flush-write-stream": "1.0.3", + "from2": "2.3.0", + "parallel-transform": "1.1.0", + "pump": "2.0.1", + "pumpify": "1.5.0", + "stream-each": "1.2.2", + "through2": "2.0.3" + } + }, "mixin-deep": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", @@ -6331,95 +7994,31 @@ } } }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "mixin-object": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", + "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", "dev": true, "requires": { - "minimist": "0.0.8" + "for-in": "0.1.8", + "is-extendable": "0.1.1" }, "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "for-in": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", + "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=", "dev": true } } }, - "mocha": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.3.0.tgz", - "integrity": "sha1-0pt0KNP1LILi5l3x7LcGThqrv7U=", + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, "requires": { - "browser-stdout": "1.3.0", - "commander": "2.9.0", - "debug": "2.6.0", - "diff": "3.2.0", - "escape-string-regexp": "1.0.5", - "glob": "7.1.1", - "growl": "1.9.2", - "json3": "3.3.2", - "lodash.create": "3.1.1", - "mkdirp": "0.5.1", - "supports-color": "3.1.2" - }, - "dependencies": { - "commander": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", - "dev": true, - "requires": { - "graceful-readlink": "1.0.1" - } - }, - "debug": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.0.tgz", - "integrity": "sha1-vFlryr52F/Edn6FTYe3tVgi4SZs=", - "dev": true, - "requires": { - "ms": "0.7.2" - } - }, - "diff": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", - "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=", - "dev": true - }, - "glob": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", - "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", - "dev": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", - "dev": true - }, - "supports-color": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", - "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } - } + "minimist": "0.0.8" } }, "morgan": { @@ -6433,29 +8032,42 @@ "depd": "1.1.2", "on-finished": "2.3.0", "on-headers": "1.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } + } + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "aproba": "1.2.0", + "copy-concurrently": "1.0.5", + "fs-write-stream-atomic": "1.0.10", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "run-queue": "1.0.3" } }, "ms": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dev": true, + "requires": { + "dns-packet": "1.3.1", + "thunky": "1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", "dev": true }, "multipipe": { @@ -6491,38 +8103,146 @@ "regex-not": "1.0.2", "snapdragon": "0.8.2", "to-regex": "3.0.2" + } + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", + "dev": true + }, + "neo-async": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.5.1.tgz", + "integrity": "sha512-3KL3fvuRkZ7s4IFOMfztb7zJp3QaVWnBeGoJlgB38XnCRPj/0tLzzLG5IB8NYOHbJ8g8UGrgZv44GLDk6CxTxA==", + "dev": true + }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", + "dev": true + }, + "ng-packagr": { + "version": "3.0.0-rc.3", + "resolved": "https://registry.npmjs.org/ng-packagr/-/ng-packagr-3.0.0-rc.3.tgz", + "integrity": "sha512-fBsDczYmbODqtHbAz+DgkZCHA4Ficgh7cAhYJijR6YEE9UhmW1Z3JI9RjDl96TMFCVFXQhYniDnfye9f0Og81Q==", + "dev": true, + "requires": { + "@ngtools/json-schema": "1.1.0", + "autoprefixer": "8.4.1", + "browserslist": "3.2.6", + "chalk": "2.4.1", + "commander": "2.15.1", + "cpx": "1.5.0", + "fs-extra": "6.0.0", + "glob": "7.1.2", + "injection-js": "2.2.1", + "less": "3.0.4", + "node-sass": "4.7.2", + "node-sass-tilde-importer": "1.0.2", + "postcss": "6.0.22", + "postcss-clean": "1.1.0", + "postcss-url": "7.3.2", + "read-pkg-up": "3.0.0", + "rimraf": "2.6.2", + "rollup": "0.58.2", + "rollup-plugin-commonjs": "9.1.3", + "rollup-plugin-node-resolve": "3.3.0", + "rxjs": "6.1.0", + "sorcery": "0.10.0", + "strip-bom": "3.0.0", + "stylus": "0.54.5", + "uglify-js": "3.3.24", + "update-notifier": "2.5.0" }, "dependencies": { - "arr-diff": { + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.4.0" + } + }, + "fs-extra": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.0.tgz", + "integrity": "sha512-lk2cUCo8QzbiEWEbt7Cw3m27WMiRG321xsssbcIpfMhpRjrlC08WBOVQqj1/nQYYNnPtyIhP1oqLO3QwT2tPCw==", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "4.0.0", + "universalify": "0.1.1" + } + }, + "load-json-file": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "4.0.0", + "pify": "3.0.0", + "strip-bom": "3.0.0" + } }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "1.3.1", + "json-parse-better-errors": "1.0.2" + } }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "requires": { + "load-json-file": "4.0.0", + "normalize-package-data": "2.4.0", + "path-type": "3.0.0" + } + }, + "read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "dev": true, + "requires": { + "find-up": "2.1.0", + "read-pkg": "3.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", "dev": true } } }, - "natives": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.3.tgz", - "integrity": "sha512-BZGSYV4YOLxzoTK73l0/s/0sH9l8SHs2ocReMH1f8JYSh5FUWu4ZrKCpJdRkWXV6HFR/pZDz7bwWOVAY07q77g==", - "dev": true + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "dev": true, + "requires": { + "lower-case": "1.1.4" + } }, - "negotiator": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", - "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", + "node-forge": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz", + "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==", "dev": true }, "node-gyp": { @@ -6539,7 +8259,7 @@ "nopt": "3.0.6", "npmlog": "4.1.2", "osenv": "0.1.5", - "request": "2.81.0", + "request": "2.85.0", "rimraf": "2.6.2", "semver": "5.3.0", "tar": "2.2.1", @@ -6554,6 +8274,45 @@ } } }, + "node-libs-browser": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", + "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", + "dev": true, + "requires": { + "assert": "1.4.1", + "browserify-zlib": "0.2.0", + "buffer": "4.9.1", + "console-browserify": "1.1.0", + "constants-browserify": "1.0.0", + "crypto-browserify": "3.12.0", + "domain-browser": "1.2.0", + "events": "1.1.1", + "https-browserify": "1.0.0", + "os-browserify": "0.3.0", + "path-browserify": "0.0.0", + "process": "0.11.10", + "punycode": "1.4.1", + "querystring-es3": "0.2.1", + "readable-stream": "2.3.6", + "stream-browserify": "2.0.1", + "stream-http": "2.8.1", + "string_decoder": "1.1.1", + "timers-browserify": "2.0.10", + "tty-browserify": "0.0.0", + "url": "0.11.0", + "util": "0.10.3", + "vm-browserify": "0.0.4" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, "node-sass": { "version": "4.7.2", "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.7.2.tgz", @@ -6581,30 +8340,70 @@ "true-case-path": "1.0.2" }, "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "assert-plus": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", + "dev": true + }, + "aws-sign2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", + "dev": true + }, + "boom": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, "caseless": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", "dev": true }, - "gaze": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.2.tgz", - "integrity": "sha1-hHIkZ3rbiHDWeSV+0ziP22HkAQU=", + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "globule": "1.2.0" + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" } }, - "globule": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.0.tgz", - "integrity": "sha1-HcScaCLdnoovoAuiopUAboZkvQk=", + "cryptiles": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", "dev": true, "requires": { - "glob": "7.1.2", - "lodash": "4.17.10", - "minimatch": "3.0.4" + "boom": "2.10.1" + } + }, + "form-data": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "dev": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.6", + "mime-types": "2.1.18" } }, "har-validator": { @@ -6619,6 +8418,35 @@ "pinkie-promise": "2.0.1" } }, + "hawk": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "dev": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "dev": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.1", + "sshpk": "1.14.1" + } + }, "qs": { "version": "6.3.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz", @@ -6653,6 +8481,21 @@ "uuid": "3.2.1" } }, + "sntp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, "tunnel-agent": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", @@ -6662,20 +8505,14 @@ } }, "node-sass-tilde-importer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-sass-tilde-importer/-/node-sass-tilde-importer-1.0.0.tgz", - "integrity": "sha1-ZT0EiicEZKGGXvmpnMgO4tgPnJc=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/node-sass-tilde-importer/-/node-sass-tilde-importer-1.0.2.tgz", + "integrity": "sha512-Swcmr38Y7uB78itQeBm3mThjxBy9/Ah/ykPIaURY/L6Nec9AyRoL/jJ7ECfMR+oZeCTVQNxVMu/aHU+TLRVbdg==", "dev": true, "requires": { "find-parent-dir": "0.3.0" } }, - "node-watch": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/node-watch/-/node-watch-0.5.2.tgz", - "integrity": "sha1-lI1y7F/nS0iDMs0Qh/oYDpwkgls=", - "dev": true - }, "nopt": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", @@ -6688,7 +8525,7 @@ "normalize-package-data": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha1-EvlaMH1YNSB1oEkHuErIvpisAS8=", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", "dev": true, "requires": { "hosted-git-info": "2.6.0", @@ -6706,6 +8543,44 @@ "remove-trailing-separator": "1.1.0" } }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "npm-package-arg": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.0.tgz", + "integrity": "sha512-zYbhP2k9DbJhA0Z3HKUePUgdB1x7MfIfKssC+WLPFMKTBZKpZh5m13PgexJjCq6KW7j17r0jHWcCpxEqnnncSA==", + "dev": true, + "requires": { + "hosted-git-info": "2.6.0", + "osenv": "0.1.5", + "semver": "5.5.0", + "validate-npm-package-name": "3.0.0" + } + }, + "npm-registry-client": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/npm-registry-client/-/npm-registry-client-8.5.1.tgz", + "integrity": "sha512-7rjGF2eA7hKDidGyEWmHTiKfXkbrcQAsGL/Rh4Rt3x3YNRNHhwaTzVJfW3aNvvlhg4G62VCluif0sLCb/i51Hg==", + "dev": true, + "requires": { + "concat-stream": "1.6.2", + "graceful-fs": "4.1.11", + "normalize-package-data": "2.4.0", + "npm-package-arg": "6.1.0", + "npmlog": "4.1.2", + "once": "1.4.0", + "request": "2.85.0", + "retry": "0.10.1", + "safe-buffer": "5.1.2", + "semver": "5.5.0", + "slide": "1.1.6", + "ssri": "5.3.0" + } + }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", @@ -6718,7 +8593,7 @@ "npmlog": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha1-CKfyqL9zRgR3mp76StXMcXq7lUs=", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", "dev": true, "requires": { "are-we-there-yet": "1.1.4", @@ -6742,6 +8617,12 @@ "integrity": "sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=", "dev": true }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", @@ -6755,9 +8636,9 @@ "dev": true }, "object-assign": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", - "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true }, "object-component": { @@ -6785,9 +8666,24 @@ "requires": { "is-descriptor": "0.1.6" } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } } } }, + "object-keys": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", + "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", + "dev": true + }, "object-visit": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", @@ -6795,64 +8691,28 @@ "dev": true, "requires": { "isobject": "3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } } }, - "object.defaults": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", - "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", "dev": true, "requires": { - "array-each": "1.0.1", - "array-slice": "1.1.0", - "for-own": "1.0.0", - "isobject": "3.0.1" - }, - "dependencies": { - "for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", - "dev": true, - "requires": { - "for-in": "1.0.2" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } + "define-properties": "1.1.2", + "function-bind": "1.1.1", + "has-symbols": "1.0.0", + "object-keys": "1.0.11" } }, - "object.map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", - "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", + "object.getownpropertydescriptors": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", + "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", "dev": true, "requires": { - "for-own": "1.0.0", - "make-iterator": "1.0.1" - }, - "dependencies": { - "for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", - "dev": true, - "requires": { - "for-in": "1.0.2" - } - } + "define-properties": "1.1.2", + "es-abstract": "1.11.0" } }, "object.omit": { @@ -6863,6 +8723,17 @@ "requires": { "for-own": "0.1.5", "is-extendable": "0.1.1" + }, + "dependencies": { + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "1.0.2" + } + } } }, "object.pick": { @@ -6872,16 +8743,14 @@ "dev": true, "requires": { "isobject": "3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } } }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, "on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", @@ -6921,14 +8790,14 @@ "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", "dev": true, "requires": { - "minimist": "0.0.10", + "minimist": "0.0.8", "wordwrap": "0.0.3" }, "dependencies": { - "minimist": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", "dev": true } } @@ -6945,14 +8814,6 @@ "prelude-ls": "1.1.2", "type-check": "0.3.2", "wordwrap": "1.0.0" - }, - "dependencies": { - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true - } } }, "options": { @@ -6961,23 +8822,27 @@ "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=", "dev": true }, - "orchestrator": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/orchestrator/-/orchestrator-0.3.8.tgz", - "integrity": "sha1-FOfp4nZPcxX7rBhOUGx6pt+UrX4=", + "original": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.0.tgz", + "integrity": "sha1-kUf5P6FpbQS+YeAb1QuurKZWvTs=", "dev": true, "requires": { - "end-of-stream": "0.1.5", - "sequencify": "0.0.7", - "stream-consume": "0.1.1" + "url-parse": "1.0.5" + }, + "dependencies": { + "url-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.0.5.tgz", + "integrity": "sha1-CFSGBCKv3P7+tsllxmLUgAFpkns=", + "dev": true, + "requires": { + "querystringify": "0.0.4", + "requires-port": "1.0.0" + } + } } }, - "ordered-read-streams": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz", - "integrity": "sha1-/VZamvjrRHO6abbtijQ1LLVS8SY=", - "dev": true - }, "os-browserify": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", @@ -7021,14 +8886,44 @@ "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", "dev": true, "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", + "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", + "dev": true, + "requires": { + "p-try": "1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "1.2.0" } }, - "p-finally": { + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true + }, + "p-try": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true }, "package-json": { @@ -7043,22 +8938,32 @@ "semver": "5.5.0" } }, - "pad": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/pad/-/pad-1.2.1.tgz", - "integrity": "sha512-cx/l/K+9UjGXJmoYolvP0l3cEUyB9BUdUL3wj3uwskIiApboLsinvsXxU9nSNg9Luz2ZyH0zzJNbqgLSNtfIDw==", - "dev": true, - "requires": { - "coffee-script": "1.12.7", - "wcwidth": "1.0.1" - } - }, "pako": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==", "dev": true }, + "parallel-transform": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", + "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", + "dev": true, + "requires": { + "cyclist": "0.2.2", + "inherits": "2.0.3", + "readable-stream": "2.3.6" + } + }, + "param-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "dev": true, + "requires": { + "no-case": "2.3.2" + } + }, "parse-asn1": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz", @@ -7072,17 +8977,6 @@ "pbkdf2": "3.0.16" } }, - "parse-filepath": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", - "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", - "dev": true, - "requires": { - "is-absolute": "1.0.0", - "map-cache": "0.2.2", - "path-root": "0.1.1" - } - }, "parse-glob": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", @@ -7093,6 +8987,23 @@ "is-dotfile": "1.0.3", "is-extglob": "1.0.0", "is-glob": "2.0.1" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + } } }, "parse-json": { @@ -7104,20 +9015,11 @@ "error-ex": "1.3.1" } }, - "parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", - "dev": true - }, "parse5": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", - "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", - "dev": true, - "requires": { - "@types/node": "6.0.106" - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "dev": true }, "parsejson": { "version": "0.0.3", @@ -7164,14 +9066,17 @@ "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", "dev": true }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "2.0.1" - } + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true }, "path-is-absolute": { "version": "1.0.1", @@ -7197,30 +9102,19 @@ "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", "dev": true }, - "path-root": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", - "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", - "dev": true, - "requires": { - "path-root-regex": "0.1.2" - } - }, - "path-root-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", - "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", "dev": true }, "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" + "pify": "3.0.0" } }, "pause-stream": { @@ -7241,20 +9135,20 @@ "create-hash": "1.2.0", "create-hmac": "1.1.7", "ripemd160": "2.0.2", - "safe-buffer": "5.1.1", + "safe-buffer": "5.1.2", "sha.js": "2.4.11" } }, "performance-now": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", - "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", "dev": true }, "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "dev": true }, "pinkie": { @@ -7272,12 +9166,147 @@ "pinkie": "2.0.4" } }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "2.1.0" + } + }, + "portfinder": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.13.tgz", + "integrity": "sha1-uzLs2HwnEErm7kS1o8y/Drsa7ek=", + "dev": true, + "requires": { + "async": "1.5.2", + "debug": "2.6.9", + "mkdirp": "0.5.1" + } + }, "posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", "dev": true }, + "postcss": { + "version": "6.0.22", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.22.tgz", + "integrity": "sha512-Toc9lLoUASwGqxBSJGTVcOQiDqjK+Z2XlWBg+IgYwQMY9vA2f7iMpXVc1GpPcfTSyM5lkxNo0oDwDRO+wm7XHA==", + "dev": true, + "requires": { + "chalk": "2.4.1", + "source-map": "0.6.1", + "supports-color": "5.4.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "postcss-clean": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/postcss-clean/-/postcss-clean-1.1.0.tgz", + "integrity": "sha512-83g3GqMbCM5NL6MlbbPLJ/m2NrUepBF44MoDk4Gt04QGXeXKh9+ilQa0DzLnYnvqYHQCw83nckuEzBFr2muwbg==", + "dev": true, + "requires": { + "clean-css": "4.1.11", + "postcss": "6.0.22" + } + }, + "postcss-import": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-11.1.0.tgz", + "integrity": "sha512-5l327iI75POonjxkXgdRCUS+AlzAdBx4pOvMEhTKTCjb1p8IEeVR9yx3cPbmN7LIWJLbfnIXxAhoB4jpD0c/Cw==", + "dev": true, + "requires": { + "postcss": "6.0.22", + "postcss-value-parser": "3.3.0", + "read-cache": "1.0.0", + "resolve": "1.7.1" + } + }, + "postcss-load-config": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-1.2.0.tgz", + "integrity": "sha1-U56a/J3chiASHr+djDZz4M5Q0oo=", + "dev": true, + "requires": { + "cosmiconfig": "2.2.2", + "object-assign": "4.1.1", + "postcss-load-options": "1.2.0", + "postcss-load-plugins": "2.3.0" + } + }, + "postcss-load-options": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-load-options/-/postcss-load-options-1.2.0.tgz", + "integrity": "sha1-sJixVZ3awt8EvAuzdfmaXP4rbYw=", + "dev": true, + "requires": { + "cosmiconfig": "2.2.2", + "object-assign": "4.1.1" + } + }, + "postcss-load-plugins": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz", + "integrity": "sha1-dFdoEWWZrKLwCfrUJrABdQSdjZI=", + "dev": true, + "requires": { + "cosmiconfig": "2.2.2", + "object-assign": "4.1.1" + } + }, + "postcss-loader": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-2.1.5.tgz", + "integrity": "sha512-pV7kB5neJ0/1tZ8L1uGOBNTVBCSCXQoIsZMsrwvO8V2rKGa2tBl/f80GGVxow2jJnRJ2w1ocx693EKhZAb9Isg==", + "dev": true, + "requires": { + "loader-utils": "1.1.0", + "postcss": "6.0.22", + "postcss-load-config": "1.2.0", + "schema-utils": "0.4.5" + } + }, + "postcss-url": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/postcss-url/-/postcss-url-7.3.2.tgz", + "integrity": "sha512-QMV5mA+pCYZQcUEPQkmor9vcPQ2MT+Ipuu8qdi1gVxbNiIiErEGft+eny1ak19qALoBkccS5AHaCaCDzh7b9MA==", + "dev": true, + "requires": { + "mime": "1.6.0", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "postcss": "6.0.22", + "xxhashjs": "0.2.2" + } + }, + "postcss-value-parser": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz", + "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=", + "dev": true + }, "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", @@ -7296,11 +9325,15 @@ "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", "dev": true }, - "pretty-hrtime": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", - "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", - "dev": true + "pretty-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", + "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", + "dev": true, + "requires": { + "renderkid": "2.0.1", + "utila": "0.4.0" + } }, "process": { "version": "0.11.10", @@ -7314,33 +9347,115 @@ "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", "dev": true }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, + "optional": true, + "requires": { + "asap": "2.0.6" + } + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, "protractor": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/protractor/-/protractor-5.1.0.tgz", - "integrity": "sha1-0mUPLx/mkDGq01KE7sHveaUGJaE=", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/protractor/-/protractor-5.3.1.tgz", + "integrity": "sha512-AW9qJ0prx2QEMy1gnhJ1Sl1WBQL2R3fx/VnG09FEmWprPIQPK14t0B83OB/pAGddpxiDCAAV0KiNNLf2c2Y/lQ==", "dev": true, "requires": { - "@types/node": "6.0.106", + "@types/node": "6.0.108", "@types/q": "0.0.32", "@types/selenium-webdriver": "2.53.43", - "blocking-proxy": "0.0.4", + "blocking-proxy": "1.0.1", "chalk": "1.1.3", "glob": "7.1.2", - "jasmine": "2.99.0", + "jasmine": "2.8.0", "jasminewd2": "2.2.0", "optimist": "0.6.1", "q": "1.4.1", "saucelabs": "1.3.0", - "selenium-webdriver": "3.0.1", + "selenium-webdriver": "3.6.0", "source-map-support": "0.4.18", "webdriver-js-extender": "1.0.0", "webdriver-manager": "12.0.6" }, "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "@types/node": { + "version": "6.0.108", + "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.108.tgz", + "integrity": "sha512-5q14jNJCPW+Iwk6Y1JxtA7T5ov1aVRS2VA2PvRgFMZtCjoIo8WT1WO56dSV0MSiHR7BEoe2QNuXigBQNqbWdAw==", + "dev": true + }, + "adm-zip": { + "version": "0.4.9", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.9.tgz", + "integrity": "sha512-eknaJ3Io/JasGGinVeqY5TsPlQgHbiNlHnK5zdFPRNs9XRggDykKz8zPesneOMEZJxWji7G3CfsUW0Ds9Dw0Bw==", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "dev": true, + "requires": { + "globby": "5.0.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.1", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "rimraf": "2.6.2" + } + }, + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "arrify": "1.0.1", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true }, "source-map-support": { @@ -7352,20 +9467,26 @@ "source-map": "0.5.7" } }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, "webdriver-manager": { "version": "12.0.6", "resolved": "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-12.0.6.tgz", "integrity": "sha1-PfGkgZdwELTL+MnYXHpXeCjA5ws=", "dev": true, "requires": { - "adm-zip": "0.4.8", + "adm-zip": "0.4.9", "chalk": "1.1.3", "del": "2.2.2", "glob": "7.1.2", "ini": "1.3.5", "minimist": "1.2.0", "q": "1.4.1", - "request": "2.81.0", + "request": "2.85.0", "rimraf": "2.6.2", "semver": "5.5.0", "xml2js": "0.4.19" @@ -7373,12 +9494,28 @@ } } }, + "proxy-addr": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.3.tgz", + "integrity": "sha512-jQTChiCJteusULxjBp8+jftSQE5Obdl3k4cnmLA6WXtK6XFuWRnvVL7aCiBqaLPM8c4ph0S4tKna8XvmIwEnXQ==", + "dev": true, + "requires": { + "forwarded": "0.1.2", + "ipaddr.js": "1.6.0" + } + }, "proxy-middleware": { "version": "0.15.0", "resolved": "https://registry.npmjs.org/proxy-middleware/-/proxy-middleware-0.15.0.tgz", "integrity": "sha1-o/3xvvtzD5UZZYcqwvYHTGFHelY=", "dev": true }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", @@ -7398,10 +9535,31 @@ "randombytes": "2.0.6" } }, + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "1.4.1", + "once": "1.4.0" + } + }, + "pumpify": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.0.tgz", + "integrity": "sha512-UWi0klDoq8xtVzlMRgENV9F7iCTZExaJQSQL187UXsxpk9NnrKGqTqqUNYAKGOzucSOxs2+jUnRNI+rLviPhJg==", + "dev": true, + "requires": { + "duplexify": "3.6.0", + "inherits": "2.0.3", + "pump": "2.0.1" + } + }, "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", + "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=", "dev": true }, "q": { @@ -7417,9 +9575,9 @@ "dev": true }, "qs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", - "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", "dev": true }, "querystring": { @@ -7434,36 +9592,22 @@ "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", "dev": true }, + "querystringify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-0.0.4.tgz", + "integrity": "sha1-DPf4T5Rj/wrlHExLFC2VvjdyTZw=", + "dev": true + }, "randomatic": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", - "integrity": "sha1-x6vpzIuHwLqodrGf3oP9RkeX44w=", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", "dev": true, "requires": { "is-number": "3.0.0", "kind-of": "4.0.0" }, "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, "kind-of": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", @@ -7481,7 +9625,7 @@ "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "5.1.2" } }, "randomfill": { @@ -7491,7 +9635,7 @@ "dev": true, "requires": { "randombytes": "2.0.6", - "safe-buffer": "5.1.1" + "safe-buffer": "5.1.2" } }, "range-parser": { @@ -7527,7 +9671,7 @@ "depd": "1.1.1", "inherits": "2.0.3", "setprototypeof": "1.0.3", - "statuses": "1.3.1" + "statuses": "1.4.0" } }, "setprototypeof": { @@ -7538,16 +9682,47 @@ } } }, - "rc": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.6.tgz", - "integrity": "sha1-6xiYnG1PTxYsOZ953dKfODVWgJI=", + "raw-loader": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-0.5.1.tgz", + "integrity": "sha1-DD0L6u2KAclm2Xh793goElKpeao=", + "dev": true + }, + "rc": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.7.tgz", + "integrity": "sha512-LdLD8xD4zzLsAT5xyushXDNscEjB7+2ulnl8+r1pnESlYtlJtVSoCMBGr30eDRJ3+2Gq89jK9P9e4tCEH1+ywA==", + "dev": true, + "requires": { + "deep-extend": "0.5.1", + "ini": "1.3.5", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", "dev": true, "requires": { - "deep-extend": "0.4.2", - "ini": "1.3.5", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" + "pify": "2.3.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } } }, "read-pkg": { @@ -7559,6 +9734,25 @@ "load-json-file": "1.1.0", "normalize-package-data": "2.4.0", "path-type": "1.1.0" + }, + "dependencies": { + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } } }, "read-pkg-up": { @@ -7569,6 +9763,27 @@ "requires": { "find-up": "1.1.2", "read-pkg": "1.1.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } + } } }, "readable-stream": { @@ -7581,7 +9796,7 @@ "inherits": "2.0.3", "isarray": "1.0.0", "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.1", + "safe-buffer": "5.1.2", "string_decoder": "1.1.1", "util-deprecate": "1.0.2" } @@ -7671,8 +9886,8 @@ "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", "dev": true, "requires": { - "rc": "1.2.6", - "safe-buffer": "5.1.1" + "rc": "1.2.7", + "safe-buffer": "5.1.2" } }, "registry-url": { @@ -7681,7 +9896,7 @@ "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", "dev": true, "requires": { - "rc": "1.2.6" + "rc": "1.2.7" } }, "regjsgen": { @@ -7697,101 +9912,49 @@ "dev": true, "requires": { "jsesc": "0.5.0" - } - }, - "remap-istanbul": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/remap-istanbul/-/remap-istanbul-0.8.4.tgz", - "integrity": "sha1-tL/f28kO+mNemiix9KEW4iyMJpc=", - "dev": true, - "requires": { - "amdefine": "1.0.1", - "gulp-util": "3.0.7", - "istanbul": "0.4.5", - "source-map": "0.6.1", - "through2": "2.0.1" }, "dependencies": { - "dateformat": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", - "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=", - "dev": true, - "requires": { - "get-stdin": "4.0.1", - "meow": "3.7.0" - } - }, - "gulp-util": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.7.tgz", - "integrity": "sha1-eJJcS4+LSQBawBoBHFV+YhiUHLs=", - "dev": true, - "requires": { - "array-differ": "1.0.0", - "array-uniq": "1.0.3", - "beeper": "1.1.1", - "chalk": "1.1.3", - "dateformat": "1.0.12", - "fancy-log": "1.3.2", - "gulplog": "1.0.0", - "has-gulplog": "0.1.0", - "lodash._reescape": "3.0.0", - "lodash._reevaluate": "3.0.0", - "lodash._reinterpolate": "3.0.0", - "lodash.template": "3.6.2", - "minimist": "1.2.0", - "multipipe": "0.1.2", - "object-assign": "3.0.0", - "replace-ext": "0.0.1", - "through2": "2.0.1", - "vinyl": "0.5.3" - } - }, - "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", - "dev": true - }, - "readable-stream": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "string_decoder": "0.10.31", - "util-deprecate": "1.0.2" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", "dev": true - }, - "through2": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.1.tgz", - "integrity": "sha1-OE51MU1J8y3hLuu4E2uOtrXVnak=", - "dev": true, - "requires": { - "readable-stream": "2.0.6", - "xtend": "4.0.1" - } } } }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true + }, "remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", "dev": true }, + "renderkid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.1.tgz", + "integrity": "sha1-iYyr/Ivt5Le5ETWj/9Mj5YwNsxk=", + "dev": true, + "requires": { + "css-select": "1.2.0", + "dom-converter": "0.1.4", + "htmlparser2": "3.3.0", + "strip-ansi": "3.0.1", + "utila": "0.3.3" + }, + "dependencies": { + "utila": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz", + "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=", + "dev": true + } + } + }, "repeat-element": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", @@ -7820,29 +9983,29 @@ "dev": true }, "request": { - "version": "2.81.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", - "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", + "version": "2.85.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.85.0.tgz", + "integrity": "sha512-8H7Ehijd4js+s6wuVPLjwORxD4zeuyjYugprdOXlPSqaApmL/QOy+EB/beICHVCHkGMKNh5rvihb5ov+IDw4mg==", "dev": true, "requires": { - "aws-sign2": "0.6.0", + "aws-sign2": "0.7.0", "aws4": "1.7.0", "caseless": "0.12.0", "combined-stream": "1.0.6", "extend": "3.0.1", "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "4.2.1", - "hawk": "3.1.3", - "http-signature": "1.1.1", + "form-data": "2.3.2", + "har-validator": "5.0.3", + "hawk": "6.0.2", + "http-signature": "1.2.0", "is-typedarray": "1.0.0", "isstream": "0.1.2", "json-stringify-safe": "5.0.1", "mime-types": "2.1.18", "oauth-sign": "0.8.2", - "performance-now": "0.2.0", - "qs": "6.4.0", - "safe-buffer": "5.1.1", + "performance-now": "2.1.0", + "qs": "6.5.2", + "safe-buffer": "5.1.2", "stringstream": "0.0.5", "tough-cookie": "2.3.4", "tunnel-agent": "0.6.0", @@ -7855,6 +10018,12 @@ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", "dev": true }, + "require-from-string": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", + "integrity": "sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=", + "dev": true + }, "require-main-filename": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", @@ -7876,16 +10045,21 @@ "path-parse": "1.0.5" } }, - "resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", "dev": true, "requires": { - "expand-tilde": "2.0.2", - "global-modules": "1.0.0" + "resolve-from": "3.0.0" } }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + }, "resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", @@ -7898,6 +10072,12 @@ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", "dev": true }, + "retry": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", + "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=", + "dev": true + }, "right-align": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", @@ -7928,60 +10108,174 @@ } }, "rollup": { - "version": "0.41.6", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.41.6.tgz", - "integrity": "sha1-4NBUl4d6OYwQTYFtJzOnGKepTio=", + "version": "0.58.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.58.2.tgz", + "integrity": "sha512-RZVvCWm9BHOYloaE6LLiE/ibpjv1CmI8F8k0B0Cp+q1eezo3cswszJH1DN0djgzSlo0hjuuCmyeI+1XOYLl4wg==", "dev": true, "requires": { - "source-map-support": "0.4.18" + "@types/estree": "0.0.38", + "@types/node": "8.9.5" + } + }, + "rollup-plugin-commonjs": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-9.1.3.tgz", + "integrity": "sha512-g91ZZKZwTW7F7vL6jMee38I8coj/Q9GBdTmXXeFL7ldgC1Ky5WJvHgbKlAiXXTh762qvohhExwUgeQGFh9suGg==", + "dev": true, + "requires": { + "estree-walker": "0.5.2", + "magic-string": "0.22.5", + "resolve": "1.7.1", + "rollup-pluginutils": "2.0.1" + } + }, + "rollup-plugin-node-resolve": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-3.3.0.tgz", + "integrity": "sha512-9zHGr3oUJq6G+X0oRMYlzid9fXicBdiydhwGChdyeNRGPcN/majtegApRKHLR5drboUvEWU+QeUmGTyEZQs3WA==", + "dev": true, + "requires": { + "builtin-modules": "2.0.0", + "is-module": "1.0.0", + "resolve": "1.7.1" }, "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "builtin-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-2.0.0.tgz", + "integrity": "sha512-3U5kUA5VPsRUA3nofm/BXX7GVHKfxz0hOBAPxXrIvHzlDRkQVqEn6yi8QJegxl4LzOHLdvb7XF5dVawa/VVYBg==", + "dev": true + } + } + }, + "rollup-pluginutils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.0.1.tgz", + "integrity": "sha1-fslbNXP2VDpGpkYb2afFRFJdD8A=", + "dev": true, + "requires": { + "estree-walker": "0.3.1", + "micromatch": "2.3.11" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "1.1.0" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", "dev": true }, - "source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "dev": true, "requires": { - "source-map": "0.5.7" + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "estree-walker": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.3.1.tgz", + "integrity": "sha1-5rGlHPcpJSTnI3wxLl/mZgwc4ao=", + "dev": true + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" } } } }, - "rollup-plugin-hypothetical": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/rollup-plugin-hypothetical/-/rollup-plugin-hypothetical-1.2.1.tgz", - "integrity": "sha1-9CcHe3urWSzCmBl6uaqsT+TvoFU=", - "dev": true - }, - "run-sequence": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/run-sequence/-/run-sequence-1.2.2.tgz", - "integrity": "sha1-UJWgvr6YczsBQL0I3YDsAw3azes=", + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", "dev": true, "requires": { - "chalk": "1.1.3", - "gulp-util": "3.0.8" + "aproba": "1.2.0" } }, "rxjs": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.0.0.tgz", - "integrity": "sha512-2MgLQr1zvks8+Kip4T6hcJdiBhV+SIvxguoWjhwtSpNPTp/5e09HJbgclCwR/nW0yWzhubM+6Q0prl8G5RuoBA==", - "dev": true, + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.1.0.tgz", + "integrity": "sha512-lMZdl6xbHJCSb5lmnb6nOhsoBVCyoDC5LDJQK9WWyq+tsI7KnlDIZ0r0AZAlBpRPLbwQA9kzSBAZwNIZEZ+hcw==", "requires": { "tslib": "1.9.0" } }, "safe-buffer": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha1-iTMSr2myEj3vcfV4iQAWce6yyFM=", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, "safe-regex": { @@ -7993,6 +10287,18 @@ "ret": "0.1.15" } }, + "sander": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/sander/-/sander-0.5.1.tgz", + "integrity": "sha1-dB4kXiMfB8r7b98PEzrfohalAq0=", + "dev": true, + "requires": { + "es6-promise": "3.3.1", + "graceful-fs": "4.1.11", + "mkdirp": "0.5.1", + "rimraf": "2.6.2" + } + }, "sass-graph": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", @@ -8022,6 +10328,12 @@ "wrap-ansi": "2.1.0" } }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, "yargs": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", @@ -8045,6 +10357,19 @@ } } }, + "sass-loader": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-7.0.1.tgz", + "integrity": "sha512-MeVVJFejJELlAbA7jrRchi88PGP6U9yIfqyiG+bBC4a9s2PX+ulJB9h8bbEohtPBfZmlLhNZ0opQM9hovRXvlw==", + "dev": true, + "requires": { + "clone-deep": "2.0.2", + "loader-utils": "1.1.0", + "lodash.tail": "4.1.1", + "neo-async": "2.5.1", + "pify": "3.0.0" + } + }, "saucelabs": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-1.3.0.tgz", @@ -8055,11 +10380,21 @@ } }, "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha1-KBYjTiN4vdxOU1T6tcqold9xANk=", + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/sax/-/sax-0.5.8.tgz", + "integrity": "sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE=", "dev": true }, + "schema-utils": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.5.tgz", + "integrity": "sha512-yYrjb9TX2k/J1Y5UNy3KYdZq10xhYcF8nMpAW6o3hy6Q8WSIEf9lJHG/ePnOBfziPM3fvQwfOwa13U/Fh8qTfA==", + "dev": true, + "requires": { + "ajv": "6.4.0", + "ajv-keywords": "3.2.0" + } + }, "scss-tokenizer": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", @@ -8081,13 +10416,19 @@ } } }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, "selenium-webdriver": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-3.0.1.tgz", - "integrity": "sha1-ot6l2kqX9mcuiefKcnbO+jZRR6c=", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-3.6.0.tgz", + "integrity": "sha512-WH7Aldse+2P5bbFBO4Gle/nuQOdVwpHMTL6raL3uuBj/vPG07k6uzt3aiahu352ONBr5xXh0hDlM3LhtXPOC4Q==", "dev": true, "requires": { - "adm-zip": "0.4.8", + "jszip": "3.1.5", "rimraf": "2.6.2", "tmp": "0.0.30", "xml2js": "0.4.19" @@ -8104,6 +10445,15 @@ } } }, + "selfsigned": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.3.tgz", + "integrity": "sha512-vmZenZ+8Al3NLHkWnhBQ0x6BkML1eCP2xEi3JE+f3D9wW9fipD9NNJHYtE9XJM4TsPaHGZJIamrSI6MTg1dU2Q==", + "dev": true, + "requires": { + "node-forge": "0.7.5" + } + }, "semver": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", @@ -8128,6 +10478,15 @@ "semver": "5.5.0" } }, + "semver-intersect": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/semver-intersect/-/semver-intersect-1.3.1.tgz", + "integrity": "sha1-j6hKnhAovSOeRTDRo+GB5pjYhLo=", + "dev": true, + "requires": { + "semver": "5.5.0" + } + }, "send": { "version": "0.16.2", "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", @@ -8149,33 +10508,18 @@ "statuses": "1.4.0" }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", "dev": true } } }, - "sequencify": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/sequencify/-/sequencify-0.0.7.tgz", - "integrity": "sha1-kM/xnQLgcCf9dn9erT57ldHnOAw=", + "serialize-javascript": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.5.0.tgz", + "integrity": "sha512-Ga8c8NjAAp46Br4+0oZ2WxJCwIzwP60Gq1YPgU+39PiTVxyed/iKE/zyZI6+UlVYH5Q4PaQdHhcegIFPZTUfoQ==", "dev": true }, "serve-index": { @@ -8188,26 +10532,21 @@ "batch": "0.6.1", "debug": "2.6.9", "escape-html": "1.0.3", - "http-errors": "1.6.3", - "mime-types": "2.1.18", - "parseurl": "1.3.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } + "http-errors": "1.6.3", + "mime-types": "2.1.18", + "parseurl": "1.3.2" + } + }, + "serve-static": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "dev": true, + "requires": { + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "parseurl": "1.3.2", + "send": "0.16.2" } }, "set-blocking": { @@ -8264,7 +10603,26 @@ "dev": true, "requires": { "inherits": "2.0.3", - "safe-buffer": "5.1.1" + "safe-buffer": "5.1.2" + } + }, + "shallow-clone": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-1.0.0.tgz", + "integrity": "sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA==", + "dev": true, + "requires": { + "is-extendable": "0.1.1", + "kind-of": "5.1.0", + "mixin-object": "2.0.1" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } } }, "shebang-command": { @@ -8282,6 +10640,18 @@ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, + "shell-quote": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", + "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", + "dev": true, + "requires": { + "array-filter": "0.0.1", + "array-map": "0.0.0", + "array-reduce": "0.0.0", + "jsonify": "0.0.0" + } + }, "shelljs": { "version": "0.7.8", "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", @@ -8293,28 +10663,33 @@ "rechoir": "0.6.2" } }, - "sigmund": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", - "dev": true - }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true }, - "sleep": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/sleep/-/sleep-3.0.1.tgz", - "integrity": "sha1-vk0XxXk2DgfgTtgXK6KxCmkFTfM=", + "silent-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/silent-error/-/silent-error-1.1.0.tgz", + "integrity": "sha1-IglwbxyFCp8dENDYQJGLRvJuG8k=", "dev": true, - "optional": true, "requires": { - "nan": "2.10.0" + "debug": "2.6.9" } }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "slide": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", + "dev": true + }, "snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", @@ -8322,7 +10697,7 @@ "dev": true, "requires": { "base": "0.11.2", - "debug": "2.2.0", + "debug": "2.6.9", "define-property": "0.2.5", "extend-shallow": "2.0.1", "map-cache": "0.2.2", @@ -8348,12 +10723,6 @@ "requires": { "is-extendable": "0.1.1" } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true } } }, @@ -8405,18 +10774,6 @@ "is-data-descriptor": "1.0.0", "kind-of": "6.0.2" } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true } } }, @@ -8427,15 +10784,26 @@ "dev": true, "requires": { "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } } }, "sntp": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", - "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", + "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", "dev": true, "requires": { - "hoek": "2.16.3" + "hoek": "4.2.1" } }, "socket.io": { @@ -8557,18 +10925,94 @@ "integrity": "sha1-KWWU8nU9qmOZbSrwjRWpURbJrsM=", "dev": true }, + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true, + "requires": { + "ms": "0.7.1" + } + }, "isarray": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", "dev": true + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true + } + } + }, + "sockjs": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", + "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", + "dev": true, + "requires": { + "faye-websocket": "0.10.0", + "uuid": "3.2.1" + } + }, + "sockjs-client": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.4.tgz", + "integrity": "sha1-W6vjhrd15M8U51IJEUUmVAFsixI=", + "dev": true, + "requires": { + "debug": "2.6.9", + "eventsource": "0.1.6", + "faye-websocket": "0.11.1", + "inherits": "2.0.3", + "json3": "3.3.2", + "url-parse": "1.4.0" + }, + "dependencies": { + "faye-websocket": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", + "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", + "dev": true, + "requires": { + "websocket-driver": "0.7.0" + } + } + } + }, + "sorcery": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.10.0.tgz", + "integrity": "sha1-iukK19fLBfxZ8asMY3hF1cFaUrc=", + "dev": true, + "requires": { + "buffer-crc32": "0.2.13", + "minimist": "1.2.0", + "sander": "0.5.1", + "sourcemap-codec": "1.4.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true } } }, + "source-list-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", + "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==", + "dev": true + }, "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, "source-map-resolve": { @@ -8577,7 +11021,7 @@ "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==", "dev": true, "requires": { - "atob": "2.1.0", + "atob": "2.1.1", "decode-uri-component": "0.2.0", "resolve-url": "0.2.1", "source-map-url": "0.4.0", @@ -8585,12 +11029,21 @@ } }, "source-map-support": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.4.tgz", - "integrity": "sha512-PETSPG6BjY1AHs2t64vS2aqAgu6dMIMXJULWFBGbh2Gr8nVLbCFDo6i/RMMvviIQ2h1Z8+5gQhVKSn2je9nmdg==", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.5.tgz", + "integrity": "sha512-mR7/Nd5l1z6g99010shcXJiNEaf3fEtmLhRB/sBcQVJGodcHCULPp2y4Sfa43Kv2zq7T+Izmfp/WHCR6dYkQCA==", "dev": true, "requires": { + "buffer-from": "1.0.0", "source-map": "0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, "source-map-url": { @@ -8599,6 +11052,12 @@ "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", "dev": true }, + "sourcemap-codec": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.1.tgz", + "integrity": "sha512-hX1eNBNuilj8yfFnECh0DzLgwKpBLMIvmhgEhixXNui8lMLBInTI8Kyxt++RwJnMNu7cAUo635L2+N1TxMJCzA==", + "dev": true + }, "sparkles": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.0.tgz", @@ -8637,6 +11096,35 @@ "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", "dev": true }, + "spdy": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz", + "integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=", + "dev": true, + "requires": { + "debug": "2.6.9", + "handle-thing": "1.2.5", + "http-deceiver": "1.2.7", + "safe-buffer": "5.1.2", + "select-hose": "2.0.0", + "spdy-transport": "2.1.0" + } + }, + "spdy-transport": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.1.0.tgz", + "integrity": "sha512-bpUeGpZcmZ692rrTiqf9/2EUakI6/kXX1Rpe0ib/DyOzbiexVfXkw6GnvI9hVGvIwVaUhkaBojjCZwLNRGQg1g==", + "dev": true, + "requires": { + "debug": "2.6.9", + "detect-node": "2.0.3", + "hpack.js": "2.1.6", + "obuf": "1.1.2", + "readable-stream": "2.3.6", + "safe-buffer": "5.1.2", + "wbuf": "1.7.3" + } + }, "split": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", @@ -8656,9 +11144,9 @@ } }, "sprintf-js": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.1.tgz", - "integrity": "sha1-Nr54Mgr+WAH2zqPueLblqrlA6gw=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, "sshpk": { @@ -8675,14 +11163,15 @@ "getpass": "0.1.7", "jsbn": "0.1.1", "tweetnacl": "0.14.5" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } + } + }, + "ssri": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz", + "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" } }, "static-extend": { @@ -8706,10 +11195,19 @@ } } }, + "stats-webpack-plugin": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/stats-webpack-plugin/-/stats-webpack-plugin-0.6.2.tgz", + "integrity": "sha1-LFlJtTHgf4eojm6k3PrFOqjHWis=", + "dev": true, + "requires": { + "lodash": "4.17.10" + } + }, "statuses": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", - "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", "dev": true }, "stdout-stream": { @@ -8740,11 +11238,15 @@ "duplexer": "0.1.1" } }, - "stream-consume": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.1.tgz", - "integrity": "sha512-tNa3hzgkjEP7XbCkbRXe1jpg+ievoa0O4SCFlMOYEscGSS4JJsckGL8swUyAa/ApGU3Ae4t6Honor4HhL+tRyg==", - "dev": true + "stream-each": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.2.tgz", + "integrity": "sha512-mc1dbFhGBxvTM3bIWmAAINbqiuAk9TATcfIQC8P+/+HJefgaiTlMn2dHvkX8qlI12KeYKSQ1Ua9RrIqrn1VPoA==", + "dev": true, + "requires": { + "end-of-stream": "1.4.1", + "stream-shift": "1.0.0" + } }, "stream-http": { "version": "2.8.1", @@ -8759,49 +11261,11 @@ "xtend": "4.0.1" } }, - "streamroller": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-0.4.1.tgz", - "integrity": "sha1-1DW9WXQ3Or2b2QaDWVEwhRBswF8=", - "dev": true, - "requires": { - "date-format": "0.0.0", - "debug": "0.7.4", - "mkdirp": "0.5.1", - "readable-stream": "1.1.14" - }, - "dependencies": { - "debug": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz", - "integrity": "sha1-BuHqgILCyxTjmAbiLi9vdX+Srzk=", - "dev": true - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } - } + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", + "dev": true }, "string-width": { "version": "1.0.2", @@ -8820,7 +11284,7 @@ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "5.1.2" } }, "stringstream": { @@ -8839,12 +11303,11 @@ } }, "strip-bom": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-1.0.0.tgz", - "integrity": "sha1-hbiGLzhEtabV7IRnqTWYFzo295Q=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "dev": true, "requires": { - "first-chunk-stream": "1.0.0", "is-utf8": "0.2.1" } }, @@ -8863,16 +11326,108 @@ "get-stdin": "4.0.1" } }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "style-loader": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.21.0.tgz", + "integrity": "sha512-T+UNsAcl3Yg+BsPKs1vd22Fr8sVT+CJMtzqc6LEw9bbJZb43lm9GoeIfUcDEefBSWC0BhYbcdupV1GtI4DGzxg==", + "dev": true, + "requires": { + "loader-utils": "1.1.0", + "schema-utils": "0.4.5" + } + }, + "stylus": { + "version": "0.54.5", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.5.tgz", + "integrity": "sha1-QrlWCTHKcJDOhRWnmLqeaqPW3Hk=", + "dev": true, + "requires": { + "css-parse": "1.7.0", + "debug": "2.6.9", + "glob": "7.0.6", + "mkdirp": "0.5.1", + "sax": "0.5.8", + "source-map": "0.1.43" + }, + "dependencies": { + "glob": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", + "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "stylus-loader": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-3.0.2.tgz", + "integrity": "sha512-+VomPdZ6a0razP+zinir61yZgpw2NfljeSsdUF5kJuEzlo3khXhY19Fn6l8QQz1GRJGtMCo8nG5C04ePyV7SUA==", + "dev": true, + "requires": { + "loader-utils": "1.1.0", + "lodash.clonedeep": "4.5.0", + "when": "3.6.4" + } + }, + "subarg": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz", + "integrity": "sha1-9izxdYHplrSPyWVpn1TAauJouNI=", + "dev": true, + "requires": { + "minimist": "1.2.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "supports-color": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "dev": true, + "requires": { + "has-flag": "3.0.0" + } + }, + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", "dev": true }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "tapable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.0.0.tgz", + "integrity": "sha512-dQRhbNQkRnaqauC7WqSJ21EEksgT0fYZX2lqXzGkpo8JNig9zGZTYoMGvyI2nWmXlE2VSVXVDu7wLVGu/mQEsg==", "dev": true }, "tar": { @@ -8911,14 +11466,11 @@ "xtend": "4.0.1" } }, - "tildify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz", - "integrity": "sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo=", - "dev": true, - "requires": { - "os-homedir": "1.0.2" - } + "thunky": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.2.tgz", + "integrity": "sha1-qGLgGOP7HqLsP85dVWBc9X8kc3E=", + "dev": true }, "time-stamp": { "version": "1.1.0", @@ -8975,6 +11527,17 @@ "dev": true, "requires": { "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } } }, "to-regex": { @@ -8997,19 +11560,14 @@ "requires": { "is-number": "3.0.0", "repeat-string": "1.6.1" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - } - } } }, + "toposort": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz", + "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=", + "dev": true + }, "tough-cookie": { "version": "2.3.4", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", @@ -9017,8 +11575,22 @@ "dev": true, "requires": { "punycode": "1.4.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } } }, + "tree-kill": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.0.tgz", + "integrity": "sha512-DlX6dR0lOIRDFxI0mjL9IYg6OTncLm/Zt+JiBhE5OlFcAR8yc9S7FFXU9so0oda47frdM/JFsk7UjNt9vscKcg==", + "dev": true + }, "trim-newlines": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", @@ -9056,62 +11628,37 @@ } }, "ts-node": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-2.0.0.tgz", - "integrity": "sha1-FuT+zJSQiCOLTL8cOclYJSa2b3Q=", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-5.0.1.tgz", + "integrity": "sha512-XK7QmDcNHVmZkVtkiwNDWiERRHPyU8nBqZB1+iv2UhOG0q3RQ9HsZ2CMqISlFbxjrYFGfG2mX7bW4dAyxBVzUw==", "dev": true, "requires": { "arrify": "1.0.1", - "chalk": "1.1.3", + "chalk": "2.4.1", "diff": "3.5.0", "make-error": "1.3.4", "minimist": "1.2.0", "mkdirp": "0.5.1", - "pinkie": "2.0.4", - "source-map-support": "0.4.18", - "tsconfig": "5.0.3", - "v8flags": "2.1.1", - "xtend": "4.0.1", - "yn": "1.3.0" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", - "dev": true, - "requires": { - "source-map": "0.5.7" - } - } - } - }, - "tsconfig": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-5.0.3.tgz", - "integrity": "sha1-X0J45wGACWeo/Dg/0ZZIh48qbjo=", - "dev": true, - "requires": { - "any-promise": "1.3.0", - "parse-json": "2.2.0", - "strip-bom": "2.0.0", - "strip-json-comments": "2.0.1" + "source-map-support": "0.5.5", + "yn": "2.0.0" }, "dependencies": { - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", "dev": true, "requires": { - "is-utf8": "0.2.1" + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.4.0" } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true } } }, @@ -9124,63 +11671,69 @@ "minimist": "1.2.0", "mkdirp": "0.5.1", "source-map": "0.6.1", - "source-map-support": "0.5.4" + "source-map-support": "0.5.5" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, "tslib": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.0.tgz", - "integrity": "sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ==", - "dev": true + "integrity": "sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ==" }, "tslint": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-4.5.0.tgz", - "integrity": "sha1-ErOEoznUVu4dPMZl8T9OdZu+XWQ=", + "version": "5.9.1", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.9.1.tgz", + "integrity": "sha1-ElX4ej/1frCw4fDmEKi0dIBGya4=", "dev": true, "requires": { "babel-code-frame": "6.26.0", - "colors": "1.2.1", + "builtin-modules": "1.1.1", + "chalk": "2.4.1", + "commander": "2.15.1", "diff": "3.5.0", - "findup-sync": "0.3.0", "glob": "7.1.2", - "optimist": "0.6.1", + "js-yaml": "3.11.0", + "minimatch": "3.0.4", "resolve": "1.7.1", - "tsutils": "1.9.1", - "update-notifier": "2.5.0" + "semver": "5.5.0", + "tslib": "1.9.0", + "tsutils": "2.26.2" }, "dependencies": { - "findup-sync": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz", - "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=", + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", "dev": true, "requires": { - "glob": "5.0.15" - }, - "dependencies": { - "glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", - "dev": true, - "requires": { - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - } + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.4.0" } } } }, "tsutils": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-1.9.1.tgz", - "integrity": "sha1-ufmrROVa+WgYMdXyjQrur1x1DLA=", - "dev": true + "version": "2.26.2", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.26.2.tgz", + "integrity": "sha512-uzwnhmrSbyinPCiwfzGsOY3IulBTwoky7r83HmZdz9QNCjhSCzavkh47KLWuU0zF2F2WbpmmzoJUIEiYyd+jEQ==", + "dev": true, + "requires": { + "tslib": "1.9.0" + } }, "tty-browserify": { "version": "0.0.0", @@ -9194,7 +11747,7 @@ "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "5.1.2" } }, "tweetnacl": { @@ -9223,6 +11776,12 @@ "mime-types": "2.1.18" } }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, "typescript": { "version": "2.7.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.7.2.tgz", @@ -9230,23 +11789,20 @@ "dev": true }, "uglify-js": { - "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "version": "3.3.24", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.3.24.tgz", + "integrity": "sha512-hS7+TDiqIqvWScCcKRybCQzmMnEzJ4ryl9ErRmW4GFyG48p0/dKZiy/5mVLbsFzU8CCnCgQdxMiJzZythvLzCg==", "dev": true, - "optional": true, "requires": { - "source-map": "0.5.7", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" + "commander": "2.15.1", + "source-map": "0.6.1" }, "dependencies": { "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, - "optional": true + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true } } }, @@ -9257,18 +11813,52 @@ "dev": true, "optional": true }, + "uglifyjs-webpack-plugin": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.5.tgz", + "integrity": "sha512-hIQJ1yxAPhEA2yW/i7Fr+SXZVMp+VEI3d42RTHBgQd2yhp/1UdBcR3QEWPV5ahBxlqQDMEMTuTEvDHSFINfwSw==", + "dev": true, + "requires": { + "cacache": "10.0.4", + "find-cache-dir": "1.0.0", + "schema-utils": "0.4.5", + "serialize-javascript": "1.5.0", + "source-map": "0.6.1", + "uglify-es": "3.3.9", + "webpack-sources": "1.1.0", + "worker-farm": "1.6.0" + }, + "dependencies": { + "commander": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", + "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "uglify-es": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", + "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", + "dev": true, + "requires": { + "commander": "2.13.0", + "source-map": "0.6.1" + } + } + } + }, "ultron": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=", "dev": true }, - "unc-path-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", - "dev": true - }, "union-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", @@ -9304,11 +11894,23 @@ } } }, - "unique-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-1.0.0.tgz", - "integrity": "sha1-1ZpKdUJ0R9mqbJHnAmP40mpLEEs=", - "dev": true + "unique-filename": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.0.tgz", + "integrity": "sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM=", + "dev": true, + "requires": { + "unique-slug": "2.0.0" + } + }, + "unique-slug": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.0.tgz", + "integrity": "sha1-22Z258fMBimHj/GWCXx4hVrp9Ks=", + "dev": true, + "requires": { + "imurmurhash": "0.1.4" + } }, "unique-string": { "version": "1.0.0", @@ -9374,12 +11976,6 @@ "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true } } }, @@ -9389,6 +11985,12 @@ "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=", "dev": true }, + "upath": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.0.5.tgz", + "integrity": "sha512-qbKn90aDQ0YEwvXoLqj0oiuUYroLX2lVHZ+b+xwjozFasAOC4GneDq5+OaIG5Zj+jFmbz/uO+f7a9qxjktJQww==", + "dev": true + }, "update-notifier": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz", @@ -9396,7 +11998,7 @@ "dev": true, "requires": { "boxen": "1.3.0", - "chalk": "2.4.0", + "chalk": "2.2.2", "configstore": "3.1.2", "import-lazy": "2.1.0", "is-ci": "1.1.0", @@ -9405,43 +12007,21 @@ "latest-version": "3.1.0", "semver-diff": "2.1.0", "xdg-basedir": "3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "1.9.1" - } - }, - "chalk": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.0.tgz", - "integrity": "sha512-Wr/w0f4o9LuE7K53cD0qmbAMM+2XNLzR29vFn5hqko4sxGlUsyy363NvmyGIyk5tpe9cjTr9SJYbysEyPkRnFw==", - "dev": true, - "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.4.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", - "dev": true, - "requires": { - "has-flag": "3.0.0" - } - } + } + }, + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", + "dev": true + }, + "uri-js": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-3.0.2.tgz", + "integrity": "sha1-+QuFhQf4HepNz7s8TD2/orVX+qo=", + "dev": true, + "requires": { + "punycode": "2.1.0" } }, "urix": { @@ -9468,6 +12048,49 @@ } } }, + "url-join": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.0.tgz", + "integrity": "sha1-TTNA6AfTdzvamZH4MFrNzCpmXSo=", + "dev": true + }, + "url-loader": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-1.0.1.tgz", + "integrity": "sha512-rAonpHy7231fmweBKUFe0bYnlGDty77E+fm53NZdij7j/YOpyGzc7ttqG1nAXl3aRs0k41o0PC3TvGXQiw2Zvw==", + "dev": true, + "requires": { + "loader-utils": "1.1.0", + "mime": "2.3.1", + "schema-utils": "0.4.5" + }, + "dependencies": { + "mime": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz", + "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==", + "dev": true + } + } + }, + "url-parse": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.0.tgz", + "integrity": "sha512-ERuGxDiQ6Xw/agN4tuoCRbmwRuZP0cJ1lJxJubXr5Q/5cDa78+Dc4wfvtxzhzhkm5VvmW6Mf8EVj9SPGN4l8Lg==", + "dev": true, + "requires": { + "querystringify": "2.0.0", + "requires-port": "1.0.0" + }, + "dependencies": { + "querystringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.0.0.tgz", + "integrity": "sha512-eTPo5t/4bgaMNZxyjWx6N2a6AuE0mq51KWvpc7nU/MAqixcI6v6KrGUKES0HaomdnolQBBXU/++X6/QQ9KL4tw==", + "dev": true + } + } + }, "url-parse-lax": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", @@ -9490,50 +12113,18 @@ "dev": true, "requires": { "kind-of": "6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } } }, - "user-home": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", - "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", - "dev": true - }, "useragent": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.3.0.tgz", "integrity": "sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw==", "dev": true, "requires": { - "lru-cache": "4.1.2", + "lru-cache": "4.1.3", "tmp": "0.0.31" - }, - "dependencies": { - "lru-cache": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz", - "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", - "dev": true, - "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" - } - } } }, - "userhome": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/userhome/-/userhome-1.0.0.tgz", - "integrity": "sha1-tkkf8S0hpecmcd+czIcX4cZojAs=", - "dev": true - }, "util": { "version": "0.10.3", "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", @@ -9557,10 +12148,26 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, - "utils-merge": { + "util.promisify": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", - "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "dev": true, + "requires": { + "define-properties": "1.1.2", + "object.getownpropertydescriptors": "2.0.3" + } + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", "dev": true }, "uuid": { @@ -9569,23 +12176,23 @@ "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==", "dev": true }, - "v8flags": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", - "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", - "dev": true, - "requires": { - "user-home": "1.1.1" - } - }, "validate-npm-package-license": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", "dev": true, "requires": { - "spdx-correct": "3.0.0", - "spdx-expression-parse": "3.0.0" + "spdx-correct": "3.0.0", + "spdx-expression-parse": "3.0.0" + } + }, + "validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", + "dev": true, + "requires": { + "builtins": "1.0.3" } }, "vary": { @@ -9603,14 +12210,6 @@ "assert-plus": "1.0.0", "core-util-is": "1.0.2", "extsprintf": "1.3.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } } }, "vinyl": { @@ -9622,89 +12221,20 @@ "clone": "1.0.4", "clone-stats": "0.0.1", "replace-ext": "0.0.1" - } - }, - "vinyl-fs": { - "version": "0.3.14", - "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-0.3.14.tgz", - "integrity": "sha1-mmhRzhysHBzqX+hsCTHWIMLPqeY=", - "dev": true, - "requires": { - "defaults": "1.0.3", - "glob-stream": "3.1.18", - "glob-watcher": "0.0.6", - "graceful-fs": "3.0.11", - "mkdirp": "0.5.1", - "strip-bom": "1.0.0", - "through2": "0.6.5", - "vinyl": "0.4.6" }, "dependencies": { "clone": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", - "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", - "dev": true - }, - "graceful-fs": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz", - "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=", - "dev": true, - "requires": { - "natives": "1.1.3" - } - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", "dev": true - }, - "through2": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", - "dev": true, - "requires": { - "readable-stream": "1.0.34", - "xtend": "4.0.1" - } - }, - "vinyl": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", - "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", - "dev": true, - "requires": { - "clone": "0.2.0", - "clone-stats": "0.0.1" - } } } }, "viz.js": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/viz.js/-/viz.js-1.8.1.tgz", - "integrity": "sha512-KrSNgnIxec+JCAqDPliO6xYA69ToH2WTYB2Kbt8Bp/XRUvm23rTyfffFi4rvQLFkIRNUz/xCnnqhh/gChhsgGA==", + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/viz.js/-/viz.js-1.8.2.tgz", + "integrity": "sha512-W+1+N/hdzLpQZEcvz79n2IgUE9pfx6JLdHh3Kh8RGvLL8P1LdJVQmi2OsDcLdY4QVID4OUy+FPelyerX0nJxIQ==", "dev": true }, "vlq": { @@ -9728,13 +12258,24 @@ "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", "dev": true }, - "wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "watchpack": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", + "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", "dev": true, "requires": { - "defaults": "1.0.3" + "chokidar": "2.0.3", + "graceful-fs": "4.1.11", + "neo-async": "2.5.1" + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "requires": { + "minimalistic-assert": "1.0.1" } }, "webdriver-js-extender": { @@ -9747,12 +12288,6 @@ "selenium-webdriver": "2.53.3" }, "dependencies": { - "adm-zip": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.4.tgz", - "integrity": "sha1-ph7VrmkFw66lizplfSUDMJEFJzY=", - "dev": true - }, "sax": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/sax/-/sax-0.6.1.tgz", @@ -9790,6 +12325,291 @@ } } }, + "webpack": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.6.0.tgz", + "integrity": "sha512-Fu/k/3fZeGtIhuFkiYpIy1UDHhMiGKjG4FFPVuvG+5Os2lWA1ttWpmi9Qnn6AgfZqj9MvhZW/rmj/ip+nHr06g==", + "dev": true, + "requires": { + "acorn": "5.5.3", + "acorn-dynamic-import": "3.0.0", + "ajv": "6.4.0", + "ajv-keywords": "3.2.0", + "chrome-trace-event": "0.1.3", + "enhanced-resolve": "4.0.0", + "eslint-scope": "3.7.1", + "loader-runner": "2.3.0", + "loader-utils": "1.1.0", + "memory-fs": "0.4.1", + "micromatch": "3.1.10", + "mkdirp": "0.5.1", + "neo-async": "2.5.1", + "node-libs-browser": "2.1.0", + "schema-utils": "0.4.5", + "tapable": "1.0.0", + "uglifyjs-webpack-plugin": "1.2.5", + "watchpack": "1.6.0", + "webpack-sources": "1.1.0" + } + }, + "webpack-core": { + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/webpack-core/-/webpack-core-0.6.9.tgz", + "integrity": "sha1-/FcViMhVjad76e+23r3Fo7FyvcI=", + "dev": true, + "requires": { + "source-list-map": "0.1.8", + "source-map": "0.4.4" + }, + "dependencies": { + "source-list-map": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.8.tgz", + "integrity": "sha1-xVCyq1Qn9rPyH1r+rYjE9Vh7IQY=", + "dev": true + }, + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "webpack-dev-middleware": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.1.3.tgz", + "integrity": "sha512-I6Mmy/QjWU/kXwCSFGaiOoL5YEQIVmbb0o45xMoCyQAg/mClqZVTcsX327sPfekDyJWpCxb+04whNyLOIxpJdQ==", + "dev": true, + "requires": { + "loud-rejection": "1.6.0", + "memory-fs": "0.4.1", + "mime": "2.3.1", + "path-is-absolute": "1.0.1", + "range-parser": "1.2.0", + "url-join": "4.0.0", + "webpack-log": "1.2.0" + }, + "dependencies": { + "mime": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz", + "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==", + "dev": true + } + } + }, + "webpack-dev-server": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.1.4.tgz", + "integrity": "sha512-itcIUDFkHuj1/QQxzUFOEXXmxOj5bku2ScLEsOFPapnq2JRTm58gPdtnBphBJOKL2+M3p6+xygL64bI+3eyzzw==", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "array-includes": "3.0.3", + "bonjour": "3.5.0", + "chokidar": "2.0.3", + "compression": "1.7.2", + "connect-history-api-fallback": "1.5.0", + "debug": "3.1.0", + "del": "3.0.0", + "express": "4.16.3", + "html-entities": "1.2.1", + "http-proxy-middleware": "0.18.0", + "import-local": "1.0.0", + "internal-ip": "1.2.0", + "ip": "1.1.5", + "killable": "1.0.0", + "loglevel": "1.6.1", + "opn": "5.3.0", + "portfinder": "1.0.13", + "selfsigned": "1.10.3", + "serve-index": "1.9.1", + "sockjs": "0.3.19", + "sockjs-client": "1.1.4", + "spdy": "3.4.7", + "strip-ansi": "3.0.1", + "supports-color": "5.4.0", + "webpack-dev-middleware": "3.1.3", + "webpack-log": "1.2.0", + "yargs": "11.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "wrap-ansi": "2.1.0" + }, + "dependencies": { + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "dev": true, + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yargs": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.0.0.tgz", + "integrity": "sha512-Rjp+lMYQOWtgqojx1dEWorjCofi1YN7AoFvYV7b1gx/7dAAeuI4kN5SZiEvr0ZmsZTOpDRcCqrpI10L31tFkBw==", + "dev": true, + "requires": { + "cliui": "4.1.0", + "decamelize": "1.2.0", + "find-up": "2.1.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "9.0.2" + } + }, + "yargs-parser": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", + "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", + "dev": true, + "requires": { + "camelcase": "4.1.0" + } + } + } + }, + "webpack-log": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-1.2.0.tgz", + "integrity": "sha512-U9AnICnu50HXtiqiDxuli5gLB5PGBo7VvcHx36jRZHwK4vzOYLbImqT4lwWwoMHdQWwEKw736fCHEekokTEKHA==", + "dev": true, + "requires": { + "chalk": "2.2.2", + "log-symbols": "2.2.0", + "loglevelnext": "1.0.5", + "uuid": "3.2.1" + } + }, + "webpack-merge": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.1.2.tgz", + "integrity": "sha512-/0QYwW/H1N/CdXYA2PNPVbsxO3u2Fpz34vs72xm03SRfg6bMNGfMJIQEpQjKRvkG2JvT6oRJFpDtSrwbX8Jzvw==", + "dev": true, + "requires": { + "lodash": "4.17.10" + } + }, + "webpack-sources": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.1.0.tgz", + "integrity": "sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw==", + "dev": true, + "requires": { + "source-list-map": "2.0.0", + "source-map": "0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "webpack-subresource-integrity": { + "version": "1.1.0-rc.4", + "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-1.1.0-rc.4.tgz", + "integrity": "sha1-xcTj1pD50vZKlVDgeodn+Xlqpdg=", + "dev": true, + "requires": { + "webpack-core": "0.6.9" + } + }, "websocket-driver": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", @@ -9806,10 +12626,16 @@ "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", "dev": true }, + "when": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/when/-/when-3.6.4.tgz", + "integrity": "sha1-RztRfsFZ4rhQBUl6E5g/CVQS404=", + "dev": true + }, "which": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha1-/wS9/AEO5UfXgL7DjhrBwnd9JTo=", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", "dev": true, "requires": { "isexe": "2.0.0" @@ -9824,7 +12650,7 @@ "wide-align": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", - "integrity": "sha1-Vx4PGwYEY268DfwhsDObvjE0FxA=", + "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", "dev": true, "requires": { "string-width": "1.0.2" @@ -9889,11 +12715,20 @@ "optional": true }, "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", "dev": true }, + "worker-farm": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz", + "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==", + "dev": true, + "requires": { + "errno": "0.1.7" + } + }, "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", @@ -9913,7 +12748,7 @@ "write-file-atomic": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", - "integrity": "sha1-H/YVdcLipOjlENb6TiQ8zhg5mas=", + "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", "dev": true, "requires": { "graceful-fs": "4.1.11", @@ -9946,11 +12781,19 @@ "xml2js": { "version": "0.4.19", "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", - "integrity": "sha1-aGwg8hMgnpSr8NG88e+qKRx4J6c=", + "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", "dev": true, "requires": { "sax": "1.2.4", "xmlbuilder": "9.0.7" + }, + "dependencies": { + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + } } }, "xmlbuilder": { @@ -9971,19 +12814,19 @@ "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", "dev": true }, - "xvfb": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/xvfb/-/xvfb-0.2.3.tgz", - "integrity": "sha1-VYipaHVFk5E/M8DA4su3N0EjWDI=", + "xxhashjs": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/xxhashjs/-/xxhashjs-0.2.2.tgz", + "integrity": "sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw==", "dev": true, "requires": { - "sleep": "3.0.1" + "cuint": "0.2.2" } }, "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", "dev": true }, "yallist": { @@ -10029,27 +12872,15 @@ "dev": true }, "yn": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/yn/-/yn-1.3.0.tgz", - "integrity": "sha1-GwgSq7jYBdSJZvjfOF3J2syaGdg=", - "dev": true, - "requires": { - "object-assign": "4.1.1" - }, - "dependencies": { - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - } - } + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", + "integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=", + "dev": true }, "zone.js": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.8.4.tgz", - "integrity": "sha1-zECuWhyHlgHF67oglrXIDwxMNgI=", - "dev": true + "version": "0.8.26", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.8.26.tgz", + "integrity": "sha512-W9Nj+UmBJG251wkCacIkETgra4QgBo/vgoEkb4a2uoLzpQG7qF9nzwoLXWU5xj3Fg2mxGvEDh47mg24vXccYjA==" } } } diff --git a/package.json b/package.json index 48a1404..63c9b12 100644 --- a/package.json +++ b/package.json @@ -1,108 +1,62 @@ { "name": "ngx-permissions", - "version": "5.0.0", + "version": "6.0.0", "scripts": { - "build": "gulp build", - "build:watch": "gulp", + "ng": "ng", + "start": "ng serve", + "build": "ng build ngx-permissions-lib -c production", + "test": "ng test ngx-permissions-lib -c development", + "test:single": "ng test ngx-permissions-lib -c production", + "lint": "ng lint", + "e2e": "ng e2e", "docs": "npm run docs:build", "docs:build": "compodoc -p tsconfig.json -n ngx-permissions -d docs --hideGenerator", "docs:serve": "npm run docs:build -- -s", "docs:watch": "npm run docs:build -- -s -w", - "lint": "tslint --type-check --project tsconfig.json src/**/*.ts", - "test:single": "karma start karma.conf.js --single-run --browsers ChromeHeadless && npm run build", - "test": "karma start karma.conf.js", "rep:publish": "npm run build && npm publish dist", "codecov": "cat coverage/lcovonly/lcov.info | codecov" }, - "repository": { - "type": "git", - "url": "https://github.com/AlexKhymenko/ngx-permissions" - }, - "author": { - "name": "Oleksandr Khymenko", - "email": "alexanderKhymenko@gmail.com" - }, - "keywords": [ - "angular", - "angular2", - "angular 2", - "angular4", - "angular 4", - "angular5", - "angular 5", - "angular 6", - "angular6", - "angularx", - "angular-x", - "ng", - "ngx", - "ng2", - "ng4", - "ng5", - "permissions", - "permission", - "role", - "roles", - "guard", - "router", - "ngx-router", - "angular2-router", - "angular4-router", - "access-control", - "access", - "acl", - "rbac" - ], - "license": "MIT", - "bugs": { - "url": "https://github.com/AlexKhymenko/ngx-permissions/issues" + "private": true, + "dependencies": { + "@angular/common": ">=6.0.0 || <7.0.0", + "@angular/core": ">=6.0.0 || <7.0.0", + "@angular/compiler": ">=6.0.0 || <7.0.0", + "@angular/animations": ">=6.0.0 || <7.0.0", + "@angular/forms": ">=6.0.0 || <7.0.0", + "@angular/http": ">=6.0.0 || <7.0.0", + "@angular/platform-browser": ">=6.0.0 || <7.0.0", + "@angular/platform-browser-dynamic": ">=6.0.0 || <7.0.0", + "@angular/router": ">=6.0.0 || <7.0.0", + "core-js": ">=2.5.4", + "rxjs": ">=6.0.0 || <7.0.0", + "zone.js": "^0.8.26" }, "devDependencies": { - "@angular/common": "6.0.0-rc.5", - "@angular/compiler": "6.0.0-rc.5", - "@angular/compiler-cli": "6.0.0-rc.4", - "@angular/core": "6.0.0-rc.5", - "@angular/platform-browser": "6.0.0-rc.5", - "@angular/platform-browser-dynamic": "6.0.0-rc.5", - "@angular/router": "6.0.0-rc.5", - "@compodoc/compodoc": "1.0.0-beta.10", - "@types/jasmine": "2.5.38", - "@types/node": "~6.0.60", "codecov": "2.3.0", - "codelyzer": "~2.0.0", - "core-js": "2.4.1", - "del": "2.2.2", - "gulp": "3.9.1", - "gulp-rename": "1.2.2", - "gulp-rollup": "2.11.0", - "jasmine-core": "~2.5.2", - "jasmine-spec-reporter": "~3.2.0", - "karma": "1.7.0", - "karma-chrome-launcher": "2.2.0", - "karma-cli": "1.0.1", - "karma-coverage-istanbul-reporter": "0.2.0", - "karma-headless-chrome-launcher": "0.0.6", - "karma-jasmine": "1.1.0", - "karma-jasmine-html-reporter": "0.2.2", - "karma-mocha": "1.3.0", - "karma-mocha-reporter": "2.2.3", - "karma-sourcemap-loader": "0.3.7", - "karma-typescript": "3.0.5", - "karma-typescript-angular2-transform": "1.0.1", - "mocha": "3.3.0", - "node-sass": "4.7.2", - "node-sass-tilde-importer": "1.0.0", - "node-watch": "0.5.2", - "protractor": "5.1.0", - "rollup": "0.41.6", - "run-sequence": "1.2.2", - "rxjs": "6.0.0", - "ts-node": "2.0.0", - "tslint": "4.5.0", - "typescript": "2.7.2", - "zone.js": "0.8.4" - }, - "engines": { - "node": ">=6.0.0" + "@compodoc/compodoc": "1.0.0-beta.10", + "@angular/compiler-cli": "^6.0.0", + "@angular-devkit/build-ng-packagr": "~0.6.0", + "@angular-devkit/build-angular": "~0.6.0", + "ng-packagr": "^3.0.0-rc.2", + "tsickle": ">=0.25.5", + "tslib": "^1.7.1", + "typescript": "~2.7.2", + "@angular/cli": "~6.0.0", + "@angular/language-service": "^6.0.0", + "@types/jasmine": "~2.8.6", + "@types/jasminewd2": "~2.0.3", + "@types/node": "~8.9.4", + "codelyzer": "~4.2.1", + "jasmine-core": "~2.99.1", + "jasmine-spec-reporter": "~4.2.1", + "karma": "~1.7.1", + "karma-chrome-launcher": "~2.2.0", + "karma-coverage-istanbul-reporter": "~1.4.2", + "karma-jasmine": "~1.1.1", + "karma-jasmine-html-reporter": "^0.2.2", + "protractor": "~5.3.0", + "ts-node": "~5.0.1", + "tslint": "~5.9.1", + "node-sass": "4.7.2" } } diff --git a/polyfills.ts b/polyfills.ts deleted file mode 100644 index a642359..0000000 --- a/polyfills.ts +++ /dev/null @@ -1,116 +0,0 @@ -// This file includes polyfills needed by Angular and is loaded before -// the app. You can add your own extra polyfills to this file. -import 'core-js/es6/symbol'; -import 'core-js/es6/object'; -import 'core-js/es6/function'; -import 'core-js/es6/parse-int'; -import 'core-js/es6/parse-float'; -import 'core-js/es6/number'; -import 'core-js/es6/math'; -import 'core-js/es6/string'; -import 'core-js/es6/date'; -import 'core-js/es6/array'; -import 'core-js/es6/regexp'; -import 'core-js/es6/map'; -import 'core-js/es6/set'; -import 'core-js/es6/reflect'; - -import 'core-js/es7/array'; -import 'core-js/es7/reflect'; -import 'zone.js/dist/zone'; - -import 'rxjs/add/observable/throw'; -import 'rxjs/add/observable/forkJoin'; -import 'rxjs/add/observable/empty'; -import 'rxjs/add/observable/of'; -import 'rxjs/add/observable/zip'; -import 'rxjs/add/observable/interval'; - -import 'rxjs/add/operator/timeInterval'; -import 'rxjs/add/operator/take'; -import 'rxjs/add/operator/first'; -import 'rxjs/add/operator/catch'; -import 'rxjs/add/operator/debounceTime'; -import 'rxjs/add/operator/distinctUntilChanged'; -import 'rxjs/add/operator/map'; -import 'rxjs/add/operator/switchMap'; -import 'rxjs/add/operator/toPromise'; -import 'rxjs/add/operator/do'; -import 'rxjs/add/operator/mergeMap'; -import 'rxjs/add/operator/pairwise'; -import 'rxjs/add/operator/retryWhen'; -import 'rxjs/add/operator/finally'; -import 'rxjs/add/operator/filter'; -import 'rxjs/add/operator/scan'; -import 'rxjs/add/operator/withLatestFrom'; - - -/** - * This file includes polyfills needed by Angular and is loaded before the app. - * You can add your own extra polyfills to this file. - * - * This file is divided into 2 sections: - * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. - * 2. Application imports. Files imported after ZoneJS that should be loaded before your main - * file. - * - * The current setup is for so-called "evergreen" browsers; the last versions of browsers that - * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), - * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. - * - * Learn more in https://angular.io/docs/ts/latest/guide/browser-support.html - */ - -/*************************************************************************************************** - * BROWSER POLYFILLS - */ - -/** IE9, IE10 and IE11 requires all of the following polyfills. **/ -// import 'core-js/es6/symbol'; -// import 'core-js/es6/object'; -// import 'core-js/es6/function'; -// import 'core-js/es6/parse-int'; -// import 'core-js/es6/parse-float'; -// import 'core-js/es6/number'; -// import 'core-js/es6/math'; -// import 'core-js/es6/string'; -// import 'core-js/es6/date'; -// import 'core-js/es6/array'; -// import 'core-js/es6/regexp'; -// import 'core-js/es6/map'; -// import 'core-js/es6/set'; - -/** IE10 and IE11 requires the following for NgClass support on SVG elements */ -// import 'classlist.js'; // Run `npm install --save classlist.js`. - -/** IE10 and IE11 requires the following to support `@angular/animation`. */ -// import 'web-animations-js'; // Run `npm install --save web-animations-js`. - - -/** Evergreen browsers require these. **/ -import 'core-js/es6/reflect'; -import 'core-js/es7/reflect'; - - -/** ALL Firefox browsers require the following to support `@angular/animation`. **/ -// import 'web-animations-js'; // Run `npm install --save web-animations-js`. - - - -/*************************************************************************************************** - * Zone JS is required by Angular itself. - */ -import 'zone.js/dist/zone'; // Included with Angular CLI. - - - -/*************************************************************************************************** - * APPLICATION IMPORTS - */ - -/** - * Date, currency, decimal and percent pipes. - * Needed for: All but Chrome, Firefox, Edge, IE11 and Safari 10 - */ -// import 'intl'; // Run `npm install --save intl`. - diff --git a/application/karma.conf.js b/projects/ngx-permissions/karma.conf.js similarity index 77% rename from application/karma.conf.js rename to projects/ngx-permissions/karma.conf.js index f5b200c..4c5f8d0 100644 --- a/application/karma.conf.js +++ b/projects/ngx-permissions/karma.conf.js @@ -1,5 +1,5 @@ // Karma configuration file, see link for more information -// https://karma-runner.github.io/0.13/config/configuration-file.html +// https://karma-runner.github.io/1.0/config/configuration-file.html module.exports = function (config) { config.set({ @@ -12,16 +12,14 @@ module.exports = function (config) { require('karma-coverage-istanbul-reporter'), require('@angular-devkit/build-angular/plugins/karma') ], - client:{ + client: { clearContext: false // leave Jasmine Spec Runner output visible in browser }, coverageIstanbulReporter: { - dir: require('path').join(__dirname, 'coverage'), reports: [ 'html', 'lcovonly' ], + dir: require('path').join(__dirname, '../../coverage'), + reports: ['html', 'lcovonly'], fixWebpackSourcePaths: true }, - angularCli: { - environment: 'dev' - }, reporters: ['progress', 'kjhtml'], port: 9876, colors: true, diff --git a/projects/ngx-permissions/ng-package.json b/projects/ngx-permissions/ng-package.json new file mode 100644 index 0000000..c8cb82f --- /dev/null +++ b/projects/ngx-permissions/ng-package.json @@ -0,0 +1,8 @@ +{ + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/ngx-permissions", + "deleteDestPath": false, + "lib": { + "entryFile": "src/public_api.ts" + } +} \ No newline at end of file diff --git a/projects/ngx-permissions/ng-package.prod.json b/projects/ngx-permissions/ng-package.prod.json new file mode 100644 index 0000000..be98bb4 --- /dev/null +++ b/projects/ngx-permissions/ng-package.prod.json @@ -0,0 +1,7 @@ +{ + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/lib", + "lib": { + "entryFile": "src/public_api.ts" + } +} \ No newline at end of file diff --git a/src/package.json b/projects/ngx-permissions/package.json similarity index 64% rename from src/package.json rename to projects/ngx-permissions/package.json index 96d60e6..23235c9 100644 --- a/src/package.json +++ b/projects/ngx-permissions/package.json @@ -1,6 +1,6 @@ { "name": "ngx-permissions", - "version": "5.0.0", + "version": "6.0.0", "repository": { "type": "git", "url": "https://github.com/AlexKhymenko/ngx-permissions" @@ -17,8 +17,8 @@ "angular 4", "angular5", "angular 5", - "angular6", "angular 6", + "angular6", "angularx", "angular-x", "ng", @@ -33,13 +33,6 @@ "guard", "router", "ngx-router", - "ngx-permissions", - "ngx permissions", - "ng permissions", - "ng permission", - "ng-permissions", - "ng-permission", - "ngx-permission", "angular2-router", "angular4-router", "access-control", @@ -51,14 +44,14 @@ "bugs": { "url": "https://github.com/AlexKhymenko/ngx-permissions/issues" }, - "main": "ngx-permissions.umd.js", - "module": "ngx-permissions.js", - "jsnext:main": "ngx-permissions.js", - "typings": "ngx-permissions.d.ts", + "sideEffects": false, "peerDependencies": { - "@angular/core": ">=4.0.0 || >6.0.0", - "@angular/router": ">=4.0.0 || >6.0.0", - "rxjs": "^6.0.0", - "zone.js": "^0.8.4" + "@angular/common": ">=6.0.0 || <7.0.0", + "@angular/core": ">=6.0.0 || <7.0.0", + "rxjs": ">=6.0.0 || <7.0.0" + + }, + "engines": { + "node": ">=8.0.0" } } diff --git a/src/directive/permissions.directive-strategies.spec.ts b/projects/ngx-permissions/src/lib/directive/permissions.directive-strategies.spec.ts similarity index 100% rename from src/directive/permissions.directive-strategies.spec.ts rename to projects/ngx-permissions/src/lib/directive/permissions.directive-strategies.spec.ts diff --git a/src/directive/permissions.directive.spec.ts b/projects/ngx-permissions/src/lib/directive/permissions.directive.spec.ts similarity index 98% rename from src/directive/permissions.directive.spec.ts rename to projects/ngx-permissions/src/lib/directive/permissions.directive.spec.ts index 0024b40..ff78f28 100644 --- a/src/directive/permissions.directive.spec.ts +++ b/projects/ngx-permissions/src/lib/directive/permissions.directive.spec.ts @@ -655,7 +655,7 @@ describe('Permission directive angular testing different async functions in role let content = fixture.debugElement.nativeElement.querySelector('div'); expect(content).toEqual(null); rolesService.addRole('ADMIN', () => { - return Promise.reject(); + return Promise.reject('g'); }); detectChanges(fixture); @@ -736,7 +736,7 @@ describe('Permission directive angular testing different async functions in role let content = fixture.debugElement.nativeElement.querySelector('div'); expect(content).toEqual(null); rolesService.addRole('ADMIN', () => { - return Promise.reject(); + return Promise.reject('g'); }); detectChanges(fixture); @@ -748,7 +748,7 @@ describe('Permission directive angular testing different async functions in role let content = fixture.debugElement.nativeElement.querySelector('div'); expect(content).toEqual(null); rolesService.addRole('ADMIN', () => { - return Promise.reject(); + return Promise.reject('g'); }); rolesService.addRole('GUEST', () => { @@ -770,7 +770,7 @@ describe('Permission directive angular testing different async functions in role let content = fixture.debugElement.nativeElement.querySelector('div'); expect(content).toEqual(null); rolesService.addRole('ADMIN', () => { - return Promise.reject(); + return Promise.reject('g'); }); rolesService.addRole('GUEST', () => { @@ -792,11 +792,11 @@ describe('Permission directive angular testing different async functions in role let content = fixture.debugElement.nativeElement.querySelector('div'); expect(content).toEqual(null); rolesService.addRole('ADMIN', () => { - return Promise.reject(); + return Promise.reject('g'); }); rolesService.addRole('GUEST', () => { - return Promise.reject(); + return Promise.reject('g'); }); @@ -820,7 +820,7 @@ describe('Permission directive angular testing different async functions in role rolesService.addRole('ADMIN', () => { - return Promise.reject(); + return Promise.reject('g'); }); detectChanges(fixture); @@ -838,7 +838,7 @@ describe('Permission directive angular testing different async functions in role let content = fixture.debugElement.nativeElement.querySelector('div'); expect(content).toEqual(null); rolesService.addRole('ADMIN', () => { - return Promise.reject(); + return Promise.reject('g'); }); permissionsService.addPermission('AWESOME'); rolesService.addRole('GUEST', ['AWESOME']); @@ -859,7 +859,7 @@ describe('Permission directive angular testing different async functions in role let content = fixture.debugElement.nativeElement.querySelector('div'); expect(content).toEqual(null); rolesService.addRole('ADMIN', () => { - return Promise.reject(); + return Promise.reject('g'); }); permissionsService.addPermission('AWESOME'); rolesService.addRole('GUEST', ['AWESOME']); @@ -946,7 +946,7 @@ describe('Permission directive angular testing different async functions in perm let content = fixture.debugElement.nativeElement.querySelector('div'); expect(content).toEqual(null); permissionsService.addPermission('ADMIN', () => { - return Promise.reject(); + return Promise.reject('g'); }); detectChanges(fixture); @@ -962,7 +962,7 @@ describe('Permission directive angular testing different async functions in perm }); permissionsService.addPermission('GUEST', () => { - return Promise.reject(); + return Promise.reject('g'); }); @@ -1002,11 +1002,11 @@ describe('Permission directive angular testing different async functions in perm let content = fixture.debugElement.nativeElement.querySelector('div'); expect(content).toEqual(null); permissionsService.addPermission('ADMIN', () => { - return Promise.reject(); + return Promise.reject('g'); }); permissionsService.addPermission('GUEST', () => { - return Promise.reject(); + return Promise.reject('g'); }); @@ -1030,7 +1030,7 @@ describe('Permission directive angular testing different async functions in perm permissionsService.addPermission('ADMIN', () => { - return Promise.reject(); + return Promise.reject('g'); }); detectChanges(fixture); @@ -1048,7 +1048,7 @@ describe('Permission directive angular testing different async functions in perm let content = fixture.debugElement.nativeElement.querySelector('div'); expect(content).toEqual(null); permissionsService.addPermission('ADMIN', () => { - return Promise.reject(); + return Promise.reject('g'); }); permissionsService.addPermission('GUEST', () => { @@ -1071,7 +1071,7 @@ describe('Permission directive angular testing different async functions in perm let content = fixture.debugElement.nativeElement.querySelector('div'); expect(content).toEqual(null); permissionsService.addPermission('ADMIN', () => { - return Promise.reject(); + return Promise.reject('g'); }); permissionsService.addPermission('GUEST', () => { @@ -1097,7 +1097,7 @@ describe('Permission directive angular testing different async functions in perm }); permissionsService.addPermission('GUEST', () => { - return Promise.reject(); + return Promise.reject('g'); }); @@ -1120,7 +1120,7 @@ describe('Permission directive angular testing different async functions in perm }); permissionsService.addPermission('GUEST', () => { - return Promise.reject(); + return Promise.reject('g'); }); @@ -1206,7 +1206,7 @@ describe('Permission directive angular testing different async functions in perm let content = fixture.debugElement.nativeElement.querySelector('div'); expect(content).toEqual(null); permissionsService.addPermission('ADMIN', () => { - return Promise.reject(); + return Promise.reject('g'); }); detectChanges(fixture); @@ -1244,7 +1244,7 @@ describe('Permission directive angular testing different async functions in perm }); permissionsService.addPermission('GUEST', () => { - return Promise.reject(); + return Promise.reject('g'); }); @@ -1262,11 +1262,11 @@ describe('Permission directive angular testing different async functions in perm let content = fixture.debugElement.nativeElement.querySelector('div'); expect(content).toEqual(null); permissionsService.addPermission('ADMIN', () => { - return Promise.reject(); + return Promise.reject('g'); }); permissionsService.addPermission('GUEST', () => { - return Promise.reject(); + return Promise.reject('g'); }); @@ -1285,7 +1285,7 @@ describe('Permission directive angular testing different async functions in perm permissionsService.addPermission('GUEST', () => { - return Promise.reject(); + return Promise.reject('g'); }); @@ -1312,7 +1312,7 @@ describe('Permission directive angular testing different async functions in perm }); permissionsService.addPermission('GUEST', () => { - return Promise.reject(); + return Promise.reject('g'); }); @@ -1335,7 +1335,7 @@ describe('Permission directive angular testing different async functions in perm }); permissionsService.addPermission('GUEST', () => { - return Promise.reject(); + return Promise.reject('g'); }); @@ -1358,7 +1358,7 @@ describe('Permission directive angular testing different async functions in perm }); permissionsService.addPermission('GUEST', () => { - return Promise.reject(); + return Promise.reject('g'); }); @@ -1715,9 +1715,9 @@ describe('ngxPermissionsOnly Directive testing else block', () => { rolesService.removeRole('FAILED_BLOCK'); detectChanges(fixture); - let content2 = fixture.debugElement.nativeElement.querySelector('div'); - expect(content2).toBeTruthy(); - expect(content2.innerHTML).toEqual(`elseBlock`); + let content3 = fixture.debugElement.nativeElement.querySelector('div'); + expect(content3).toBeTruthy(); + expect(content3.innerHTML).toEqual(`elseBlock`); })); }); @@ -2341,4 +2341,4 @@ function detectChanges(fixture) { fixture.detectChanges(); tick(); fixture.detectChanges(); -} \ No newline at end of file +} diff --git a/src/directive/permissions.directive.ts b/projects/ngx-permissions/src/lib/directive/permissions.directive.ts similarity index 99% rename from src/directive/permissions.directive.ts rename to projects/ngx-permissions/src/lib/directive/permissions.directive.ts index 9d94a03..0564591 100644 --- a/src/directive/permissions.directive.ts +++ b/projects/ngx-permissions/src/lib/directive/permissions.directive.ts @@ -1,8 +1,6 @@ import { Directive, EventEmitter, Input, OnDestroy, OnInit, Output, TemplateRef, ViewContainerRef } from '@angular/core'; - -import { merge, Subscription } from 'rxjs'; +import { Subscription, merge } from 'rxjs'; import { skip } from 'rxjs/operators'; - import { NgxPermissionsPredefinedStrategies } from '../enums/predefined-strategies.enum'; import { NgxPermissionsConfigurationService, StrategyFunction } from '../service/configuration.service'; import { NgxPermissionsService } from '../service/permissions.service'; diff --git a/src/enums/predefined-strategies.enum.ts b/projects/ngx-permissions/src/lib/enums/predefined-strategies.enum.ts similarity index 100% rename from src/enums/predefined-strategies.enum.ts rename to projects/ngx-permissions/src/lib/enums/predefined-strategies.enum.ts diff --git a/src/index.ts b/projects/ngx-permissions/src/lib/index.ts similarity index 73% rename from src/index.ts rename to projects/ngx-permissions/src/lib/index.ts index cee6426..556e14e 100644 --- a/src/index.ts +++ b/projects/ngx-permissions/src/lib/index.ts @@ -1,18 +1,18 @@ -import { NgModule, ModuleWithProviders } from '@angular/core'; +import { ModuleWithProviders, NgModule } from '@angular/core'; import { NgxPermissionsDirective } from './directive/permissions.directive'; -import { NgxPermissionsService, USE_PERMISSIONS_STORE } from './service/permissions.service'; import { NgxPermissionsGuard } from './router/permissions-guard.service'; +import { NgxPermissionsConfigurationService, USE_CONFIGURATION_STORE } from './service/configuration.service'; +import { NgxPermissionsService, USE_PERMISSIONS_STORE } from './service/permissions.service'; import { NgxRolesService, USE_ROLES_STORE } from './service/roles.service'; +import { NgxPermissionsConfigurationStore } from './store/configuration.store'; import { NgxPermissionsStore } from './store/permissions.store'; import { NgxRolesStore } from './store/roles.store'; import { NgxPermissionsAllowStubDirective } from './testing/permissions-allow.directive.stub'; import { NgxPermissionsRestrictStubDirective } from './testing/permissions-restrict.directive.stub'; -import { NgxPermissionsConfigurationService, USE_CONFIGURATION_STORE } from './service/configuration.service'; -import { NgxPermissionsConfigurationStore } from './store/configuration.store'; -export * from './store/roles.store' -export * from './store/permissions.store' -export * from './store/configuration.store' +export * from './store/roles.store'; +export * from './store/permissions.store'; +export * from './store/configuration.store'; export * from './directive/permissions.directive'; @@ -22,19 +22,19 @@ export * from './service/configuration.service'; export * from './router/permissions-guard.service'; -export * from './model/permissions-router-data.model' -export * from './model/role.model' +export * from './model/permissions-router-data.model'; +export * from './model/role.model'; -export * from './testing/permissions-allow.directive.stub' -export * from './testing/permissions-restrict.directive.stub' +export * from './testing/permissions-allow.directive.stub'; +export * from './testing/permissions-restrict.directive.stub'; -export * from './enums/predefined-strategies.enum' +export * from './enums/predefined-strategies.enum'; export interface NgxPermissionsModuleConfig { // isolate the service instance, only works for lazy loaded modules or components with the "providers" property rolesIsolate?: boolean; permissionsIsolate?: boolean; - configurationIsolate?: boolean + configurationIsolate?: boolean; } @@ -59,9 +59,9 @@ export class NgxPermissionsModule { NgxPermissionsGuard, NgxRolesService, NgxPermissionsConfigurationService, - {provide: USE_PERMISSIONS_STORE, useValue: config.permissionsIsolate}, - {provide: USE_ROLES_STORE, useValue: config.rolesIsolate}, - {provide: USE_CONFIGURATION_STORE, useValue: config.configurationIsolate}, + { provide: USE_PERMISSIONS_STORE, useValue: config.permissionsIsolate }, + { provide: USE_ROLES_STORE, useValue: config.rolesIsolate }, + { provide: USE_CONFIGURATION_STORE, useValue: config.configurationIsolate }, ] }; } @@ -70,9 +70,9 @@ export class NgxPermissionsModule { return { ngModule: NgxPermissionsModule, providers: [ - {provide: USE_PERMISSIONS_STORE, useValue: config.permissionsIsolate}, - {provide: USE_ROLES_STORE, useValue: config.rolesIsolate}, - {provide: USE_CONFIGURATION_STORE, useValue: config.configurationIsolate}, + { provide: USE_PERMISSIONS_STORE, useValue: config.permissionsIsolate }, + { provide: USE_ROLES_STORE, useValue: config.rolesIsolate }, + { provide: USE_CONFIGURATION_STORE, useValue: config.configurationIsolate }, NgxPermissionsConfigurationService, NgxPermissionsService, NgxRolesService, diff --git a/src/model/permission.model.ts b/projects/ngx-permissions/src/lib/model/permission.model.ts similarity index 100% rename from src/model/permission.model.ts rename to projects/ngx-permissions/src/lib/model/permission.model.ts diff --git a/src/model/permissions-router-data.model.ts b/projects/ngx-permissions/src/lib/model/permissions-router-data.model.ts similarity index 100% rename from src/model/permissions-router-data.model.ts rename to projects/ngx-permissions/src/lib/model/permissions-router-data.model.ts diff --git a/src/model/role.model.ts b/projects/ngx-permissions/src/lib/model/role.model.ts similarity index 100% rename from src/model/role.model.ts rename to projects/ngx-permissions/src/lib/model/role.model.ts diff --git a/projects/ngx-permissions/src/lib/router/permissions-guard-can-activate-child.service.spec.ts b/projects/ngx-permissions/src/lib/router/permissions-guard-can-activate-child.service.spec.ts new file mode 100644 index 0000000..69e4e25 --- /dev/null +++ b/projects/ngx-permissions/src/lib/router/permissions-guard-can-activate-child.service.spec.ts @@ -0,0 +1,1378 @@ + +import { TestBed, fakeAsync, inject } from '@angular/core/testing'; +import { ActivatedRouteSnapshot, Router, RouterStateSnapshot } from '@angular/router'; +import { RouterTestingModule } from '@angular/router/testing'; +import { NgxPermissionsModule } from '../index'; +import { NgxPermissionsService } from '../service/permissions.service'; +import { NgxRolesService } from '../service/roles.service'; +import { NgxPermissionsGuard } from './permissions-guard.service'; + +describe('Permissions guard only', () => { + + let permissionGuard: NgxPermissionsGuard; + let route; + let fakeRouter; + beforeEach(() => { + TestBed.configureTestingModule({ + imports: [NgxPermissionsModule.forRoot()] + }); + }); + beforeEach(inject([NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService) => { + fakeRouter = { navigate: () => { } }; + spyOn(fakeRouter, 'navigate'); + + service.addPermission('ADMIN'); + permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); + })); + + it('should create an instance', () => { + expect(permissionGuard).toBeTruthy(); + }); + + it('sholud return true when only fullfills', fakeAsync(() => { + route = { + data: { + permissions: { + only: 'ADMIN' + } + } + }; + (>permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(true); + }); + })); + + it('sholud return false when only doesnt match', fakeAsync(() => { + route = { + data: { + permissions: { + only: 'DOESNT MATCH' + } + } + }; + (>permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + }); + })); + + it('sholud return false when only doesnt match and navigate to 404', fakeAsync(() => { + route = { + data: { + permissions: { + only: 'DOESNT MATCH', + redirectTo: './404' + } + } + }; + (>permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['./404']); + }); + })); + + it('should return false when only doesnt match and navigate to array 404', fakeAsync(() => { + route = { + data: { + permissions: { + only: 'DOESNT MATCH', + redirectTo: ['./404'] + } + } + }; + (>permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['./404']); + }); + })); + + it('should return true when neither only not except specified', fakeAsync(() => { + route = { + data: { + permissions: { + only: '', + except: '', + redirectTo: ['./404'] + } + } + }; + expect(permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).toBe(true); + })); + + it('should return true when neither only not except specified as array', fakeAsync(() => { + route = { + data: { + permissions: { + only: [], + except: [], + redirectTo: ['./404'] + } + } + }; + expect(permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).toBe(true); + })); +}); + +describe('Permissions guard Except', () => { + + let permissionGuard: NgxPermissionsGuard; + let fakeRouter; + let route; + beforeEach(() => { + TestBed.configureTestingModule({ + imports: [NgxPermissionsModule.forRoot()] + }); + }); + beforeEach(inject([NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService) => { + fakeRouter = { navigate: () => { } }; + spyOn(fakeRouter, 'navigate'); + + service.addPermission('MANAGER'); + permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); + })); + + it('should create an instance', () => { + expect(permissionGuard).toBeTruthy(); + }); + + it('sholud return false when except matches', fakeAsync(() => { + route = { + data: { + permissions: { + except: 'MANAGER' + } + } + }; + (>permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + }); + })); + + it('sholud return false when except matches and redirectTo 404', fakeAsync(() => { + route = { + data: { + permissions: { + except: 'MANAGER', + redirectTo: './404' + } + } + }; + (>permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['./404']); + }); + })); + + it('sholud return false when except matches at least one array', fakeAsync(() => { + route = { + data: { + permissions: { + except: ['MANAGER', 'Something else'] + } + } + }; + (>permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + }); + })); + + it('sholud return false when except matches in array and redirectTo 404', fakeAsync(() => { + route = { + data: { + permissions: { + except: ['MANAGER', 'Something else'], + redirectTo: './404' + } + } + }; + (>permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['./404']); + }); + })); + + it(`sholud return true when except doesn't match`, fakeAsync(() => { + route = { + data: { + permissions: { + except: 'DOESNT MATCH' + } + } + }; + (>permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(true); + }); + }), null); + + it(`sholud return true when any in array doesn't match`, fakeAsync(() => { + route = { + data: { + permissions: { + except: ['DOESNT MATCH', 'AWESOME'] + } + } + }; + (>permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(true); + }); + })); + + +}); + + +describe('Permissions guard Except and only together', () => { + + let permissionGuard: NgxPermissionsGuard; + let fakeRouter; + let route; + beforeEach(() => { + TestBed.configureTestingModule({ + imports: [NgxPermissionsModule.forRoot()] + }); + }); + beforeEach(inject([NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService) => { + fakeRouter = { navigate: () => { } }; + spyOn(fakeRouter, 'navigate'); + + service.addPermission('MANAGER'); + permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); + })); + + it('should create an instance', () => { + expect(permissionGuard).toBeTruthy(); + }); + + it('sholud return false when except matches and it should not check only and redirect to 404', fakeAsync(() => { + route = { + data: { + permissions: { + except: 'MANAGER', + only: 'AWESOME', + redirectTo: './404' + } + } + }; + (>permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['./404']); + }); + })); + + it('should return false when except matches at least one array', fakeAsync(() => { + route = { + data: { + permissions: { + except: ['MANAGER', 'Something else'], + only: 'AWESOME' + } + } + }; + (>permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + }); + })); + + it(`sholud return true when except doesn't match but only matcher`, fakeAsync(() => { + route = { + data: { + permissions: { + except: 'DOESNT MATCH', + only: 'MANAGER' + } + } + }; + (>permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(true); + }); + })); + + it(`sholud return true when any in array doesn't match but only matches`, fakeAsync(() => { + route = { + data: { + permissions: { + except: ['DOESNT MATCH', 'AWESOME'], + only: ['MANAGER', 'AWESOME'] + } + } + }; + (>permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(true); + }); + })); + it(`sholud return false when except in array doesn't match and only also doesn't matches`, fakeAsync(() => { + route = { + data: { + permissions: { + except: ['DOESNT MATCH', 'AWESOME'], + only: ['gg', 'AWESOME'], + redirectTo: './404' + } + } + }; + (>permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['./404']); + }); + })); +}); + + +describe('Permissions guard use only dynamically', () => { + + let permissionGuard: NgxPermissionsGuard; + let fakeRouter; + let route; + let testRouter; + beforeEach(() => { + TestBed.configureTestingModule({ + + imports: [NgxPermissionsModule.forRoot(), + + RouterTestingModule.withRoutes( + [ + { + path: 'crisis-center/:id', + redirectTo: '404', + data: { + permissions: { + except: (_: ActivatedRouteSnapshot, awesome: RouterStateSnapshot) => { + return true; + } + }, + } + }, + ])] + }); + }); + beforeEach(inject( + [NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService, router: Router) => { + fakeRouter = { navigate: () => { } }; + + service.addPermission('MANAGER'); + // fakeRouter = router; + spyOn(fakeRouter, 'navigate'); + permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); + })); + + it('should create an instance', () => { + expect(permissionGuard).toBeTruthy(); + }); + + it('sholud return true when only matches and it should not check only', fakeAsync(() => { + route = { + data: { + permissions: { + only: (_route: ActivatedRouteSnapshot, awesome: RouterStateSnapshot) => { + if (_route.data.path.includes(44)) { + return ['MANAGER']; + } else { + return 'notManager'; + } + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(true); + }); + })); + + it('should return true when except matches and it should ', fakeAsync(() => { + route = { + data: { + permissions: { + except: (_route: ActivatedRouteSnapshot, awesome: RouterStateSnapshot) => { + if (route.data.path.includes('doesntInclude')) { + return ['MANAGER']; + } else { + return 'notManager'; + } + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(true); + }); + })); + + it(`should return true when except doens't match but only matches it should true`, fakeAsync(() => { + route = { + data: { + permissions: { + except: (_route: ActivatedRouteSnapshot, awesome: RouterStateSnapshot) => { + if (_route.data.path.includes('doesntInclude')) { + return ['MANAGER']; + } else { + return 'notManager'; + } + }, + only: (_route: ActivatedRouteSnapshot, awesome: RouterStateSnapshot) => { + if (_route.data.path.includes('44')) { + return ['MANAGER']; + } else { + return 'notManager'; + } + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(true); + }); + })); + + it(`should return true when except doens't match but only matches it should true`, fakeAsync(() => { + route = { + data: { + permissions: { + except: (_route: ActivatedRouteSnapshot, awesome: RouterStateSnapshot) => { + if (_route.data.path.includes('doesntInclude')) { + return ['MANAGER']; + } else { + return 'notManager'; + } + }, + only: (_route: ActivatedRouteSnapshot, awesome: RouterStateSnapshot) => { + if (_route.data.path.includes('gg')) { + return ['MANAGER']; + } else { + return 'notManager'; + } + }, + redirectTo: '/404' + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['/404']); + }); + })); +}); + +describe('Permissions guard test redirectTo path parameters dynamically', () => { + + let permissionGuard: NgxPermissionsGuard; + let fakeRouter; + let route; + let testRouter; + beforeEach(() => { + TestBed.configureTestingModule({ + + imports: [NgxPermissionsModule.forRoot(), + + RouterTestingModule.withRoutes( + [ + { + path: 'crisis-center/:id', + redirectTo: '404', + data: { + permissions: { + except: (_: ActivatedRouteSnapshot, awesome: RouterStateSnapshot) => { + return true; + }, + redirectTo: { + navigationCommands: ['123'], + navigationExtras: { + skipLocationChange: true + } + } + }, + } + }, + ])] + }); + }); + beforeEach(inject( + [NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService, router: Router) => { + fakeRouter = { navigate: () => { } }; + + service.addPermission('MANAGER'); + // fakeRouter = router; + spyOn(fakeRouter, 'navigate'); + permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); + })); + + it('should create an instance', () => { + expect(permissionGuard).toBeTruthy(); + }); + + it('sholud redirect to parameters specified on navigation commands and navigationExtras', fakeAsync(() => { + route = { + data: { + permissions: { + only: 'TIED', + redirectTo: { + navigationCommands: ['123'], + navigationExtras: { + skipLocationChange: true + } + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['123'], { skipLocationChange: true }); + + }); + })); + + it('sholud redirect to parameters specified in navigation commands and navigationExtras', fakeAsync(() => { + route = { + data: { + permissions: { + only: 'TIED', + redirectTo: { + navigationCommands: (rejectedPermission, _, state) => { + return ['123']; + }, + navigationExtras: (_, state) => { + return { + skipLocationChange: true + }; + } + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['123'], { skipLocationChange: true }); + + }); + })); + + it('except sholud redirect to parameters specified in navigation commands and navigationExtras', fakeAsync(() => { + route = { + data: { + permissions: { + except: 'MANAGER', + redirectTo: { + navigationCommands: (rejectedPermission, _, state) => { + return ['123']; + }, + navigationExtras: (_, state) => { + return { + skipLocationChange: true + }; + } + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['123'], { skipLocationChange: true }); + + }); + })); +}); + + +describe('Permissions guard test redirectTo path multiple redirectionRule', () => { + + let permissionGuard: NgxPermissionsGuard; + let fakeRouter; + let route; + let testRouter; + let fakeService; + beforeEach(() => { + TestBed.configureTestingModule({ + + imports: [NgxPermissionsModule.forRoot()] + }); + }); + beforeEach(inject([NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService) => { + fakeRouter = { navigate: () => { } }; + + service.addPermission('canReadAgenda'); + fakeService = service; + // fakeRouter = router; + spyOn(fakeRouter, 'navigate'); + permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); + })); + + it('should create an instance', () => { + expect(permissionGuard).toBeTruthy(); + }); + + it('sholud redirect dashboard can canRead Agenda fullfils can edit agenda fails', fakeAsync(() => { + route = { + data: { + permissions: { + except: ['canEditAgenda', 'canReadAgenda', 'canRun'], + redirectTo: { + canReadAgenda: 'agendaList', + canEditAgenda: 'dashboard', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['agendaList']); + }); + })); + + it('sholud redirect to run when there is permission canRun and it fails', fakeAsync(() => { + fakeService.addPermission('canEditAgenda'); + + route = { + data: { + permissions: { + except: ['canRun', 'canReadAgenda', 'canEditAgenda'], + redirectTo: { + canReadAgenda: 'agendaList', + canEditAgenda: 'dashboard', + canRun: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['agendaList']); + }); + })); + + it('sholud path when nothing fails', fakeAsync(() => { + fakeService.addPermission('canEditAgenda'); + + route = { + data: { + permissions: { + except: ['aweomse', 'awesome'], + redirectTo: { + canReadAgenda: 'agendaList', + canEditAgenda: 'dashboard', + canRun: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(true); + }); + })); + + it('redirect to default route when it fails but there is no redirect rule for that permission', fakeAsync(() => { + + route = { + data: { + permissions: { + except: ['canReadAgenda', 'canEditAgenda'], + redirectTo: { + canRun: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['login']); + + }); + })); + + it('redirect to only failed route when except passes but only fails', fakeAsync(() => { + + route = { + data: { + permissions: { + except: ['canEditAgenda'], + only: ['canRunAgenda'], + redirectTo: { + canReadAgenda: 'agendaList', + canRunAgenda: 'dashboard', + canRun: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['dashboard']); + + }); + })); + + it('path if except and only passes', fakeAsync(() => { + fakeService.addPermission('canRunAgenda'); + route = { + data: { + permissions: { + except: ['canEditAgenda'], + only: ['canRunAgenda'], + redirectTo: { + canReadAgenda: 'agendaList', + canRunAgenda: 'dashboard', + canRun: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(true); + + }); + })); + + + it('redirect fail on can editAgenda and redirect to dashboard', fakeAsync(() => { + route = { + data: { + permissions: { + only: ['canReadAgenda', 'canEditAgenda', 'canRun'], + redirectTo: { + canReadAgenda: 'agendaList', + canEditAgenda: 'dashboard', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['dashboard']); + }); + })); + + it('redirect to dashboard when canEdit agenda fails only', fakeAsync(() => { + route = { + data: { + permissions: { + only: ['canReadAgenda', 'canEditAgenda', 'canRun'], + redirectTo: { + canReadAgenda: 'agendaList', + canEditAgenda: (_, state) => { + return 'dashboard'; + }, + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['dashboard']); + }); + })); + + it('redirect to dashboard when canEdit agenda fails with objectProperty only', fakeAsync(() => { + route = { + data: { + permissions: { + only: ['canReadAgenda', 'canEditAgenda', 'canRun'], + redirectTo: { + canReadAgenda: 'agendaList', + canEditAgenda: { + navigationCommands: ['123'], + navigationExtras: { + skipLocationChange: true + } + }, + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['123'], { skipLocationChange: true }); + }); + })); + + it('should redirect to 123 when redirect to multiple and used as function', fakeAsync(() => { + route = { + data: { + permissions: { + only: ['canReadAgenda', 'canEditAgenda', 'canRun'], + redirectTo: { + canReadAgenda: 'agendaList', + canEditAgenda: () => { + return { + navigationCommands: ['123'], + navigationExtras: { + skipLocationChange: true + } + }; + }, + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['123'], { skipLocationChange: true }); + }); + })); + + it('redirect to default when only fails but there is no redirection rule', fakeAsync(() => { + fakeService.addPermission('canEditAgenda'); + + route = { + data: { + permissions: { + only: ['canReadAgenda', 'canEditAgenda', 'Can run'], + redirectTo: { + canReadAgenda: 'agendaList', + canEditAgenda: 'dashboard', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + }); + })); + + + + it('sholud path when nothing fails in only blaock', fakeAsync(() => { + fakeService.addPermission('canEditAgenda'); + + route = { + data: { + permissions: { + only: ['canEditAgenda'], + redirectTo: { + canReadAgenda: 'agendaList', + canEditAgenda: 'dashboard', + canRun: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(true); + }); + })); +}); + +describe('Permissions guard test redirectTo path multiple redirectionRule permissions load as string', () => { + + let permissionGuard: NgxPermissionsGuard; + let fakeRouter; + let route; + let testRouter; + let fakeService; + beforeEach(() => { + TestBed.configureTestingModule({ + + imports: [NgxPermissionsModule.forRoot()] + }); + }); + beforeEach(inject([NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService) => { + fakeRouter = { navigate: () => { } }; + + service.addPermission('canReadAgenda'); + fakeService = service; + // fakeRouter = router; + spyOn(fakeRouter, 'navigate'); + permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); + })); + + it('should create an instance', () => { + expect(permissionGuard).toBeTruthy(); + }); + + it('sholud redirect dashboard can canRead Agenda fullfils can edit agenda fails', fakeAsync(() => { + route = { + data: { + permissions: { + except: 'canReadAgenda', + redirectTo: { + canReadAgenda: 'agendaList', + canEditAgenda: 'dashboard', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['agendaList']); + }); + })); + + it('sholud redirect to run when there is permission canRun and it fails', fakeAsync(() => { + fakeService.addPermission('canEditAgenda'); + + route = { + data: { + permissions: { + only: 'DELETE', + redirectTo: { + canReadAgenda: 'agendaList', + canEditAgenda: 'dashboard', + DELETE: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['run']); + }); + })); + + it('sholud path when nothing fails', fakeAsync(() => { + fakeService.addPermission('canEditAgenda'); + + route = { + data: { + permissions: { + except: 'aweomse', + redirectTo: { + canReadAgenda: 'agendaList', + canEditAgenda: 'dashboard', + canRun: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(true); + }); + })); + // + it('redirect to default route when except fails but there is no redirect rule for that permission', fakeAsync(() => { + + route = { + data: { + permissions: { + except: 'canReadAgenda', + redirectTo: { + canRun: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['login']); + + }); + })); + + it('redirect to only failed route when except passes but only fails', fakeAsync(() => { + + route = { + data: { + permissions: { + except: 'canEditAgenda', + only: 'canRunAgenda', + redirectTo: { + canReadAgenda: 'agendaList', + canRunAgenda: 'dashboard', + canRun: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['dashboard']); + }); + })); + + it('path if except and only passes', fakeAsync(() => { + fakeService.addPermission('canRunAgenda'); + route = { + data: { + permissions: { + except: 'canEditAgenda', + only: 'canRunAgenda', + redirectTo: { + canReadAgenda: 'agendaList', + canRunAgenda: 'dashboard', + canRun: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(true); + + }); + })); + + + + it('sholud path when nothing fails in only blaock', fakeAsync(() => { + fakeService.addPermission('canEditAgenda'); + route = { + data: { + permissions: { + only: 'canEditAgenda', + redirectTo: { + canReadAgenda: 'agendaList', + canEditAgenda: 'dashboard', + canRun: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(true); + }); + })); +}); + + +describe('Permissions guard test redirectTo path dynamic redirectionRule permissions load as string', () => { + + let permissionGuard: NgxPermissionsGuard; + let fakeRouter; + let route; + let testRouter; + let fakeService; + beforeEach(() => { + TestBed.configureTestingModule({ + + imports: [NgxPermissionsModule.forRoot()] + }); + }); + beforeEach(inject([NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService) => { + fakeRouter = { navigate: () => { } }; + + service.addPermission('canReadAgenda'); + fakeService = service; + // fakeRouter = router; + spyOn(fakeRouter, 'navigate'); + permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); + })); + + it('should create an instance', () => { + expect(permissionGuard).toBeTruthy(); + }); + + it('sholud redirect dashboard can canRead Agenda fullfils can edit agenda fails', fakeAsync(() => { + route = { + data: { + permissions: { + except: 'canReadAgenda', + redirectTo: { + canReadAgenda: 'agendaList', + canEditAgenda: 'dashboard', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['agendaList']); + }); + })); + + it('sholud redirect to run when there is permission canRun and it fails', fakeAsync(() => { + fakeService.addPermission('canEditAgenda'); + + route = { + data: { + permissions: { + only: 'DELETE', + redirectTo: { + canReadAgenda: 'agendaList', + canEditAgenda: 'dashboard', + DELETE: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['run']); + }); + })); + + it('sholud path when nothing fails', fakeAsync(() => { + fakeService.addPermission('canEditAgenda'); + + route = { + data: { + permissions: { + except: 'aweomse', + redirectTo: { + canReadAgenda: 'agendaList', + canEditAgenda: 'dashboard', + canRun: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(true); + }); + })); + // + it('redirect to default route when except fails but there is no redirect rule for that permission', fakeAsync(() => { + + route = { + data: { + permissions: { + except: 'canReadAgenda', + redirectTo: { + canRun: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['login']); + + }); + })); + + it('redirect to only failed route when except passes but only fails', fakeAsync(() => { + + route = { + data: { + permissions: { + except: 'canEditAgenda', + only: 'canRunAgenda', + redirectTo: { + canReadAgenda: 'agendaList', + canRunAgenda: 'dashboard', + canRun: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['dashboard']); + }); + })); + it('redirect to only failed route when except passes but only fails called as function', fakeAsync(() => { + + route = { + data: { + permissions: { + except: 'canEditAgenda', + only: 'canRunAgenda', + redirectTo: { + canReadAgenda: 'agendaList', + canRunAgenda: (failedPermissionName: any, b: any, c: any) => { + return failedPermissionName; + }, + canRun: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['canRunAgenda']); + }); + })); + + it('redirect to except failed route when except dont pass as a function', fakeAsync(() => { + + route = { + data: { + permissions: { + except: 'canReadAgenda', + only: 'canRunAgenda', + redirectTo: { + canReadAgenda: (failedPermissionName: any, b: any, c: any) => { + return failedPermissionName; + }, + canRun: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['canReadAgenda']); + }); + })); + + it('path if except and only passes', fakeAsync(() => { + fakeService.addPermission('canRunAgenda'); + route = { + data: { + permissions: { + except: 'canEditAgenda', + only: 'canRunAgenda', + redirectTo: { + canReadAgenda: 'agendaList', + canRunAgenda: 'dashboard', + canRun: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(true); + + }); + })); + + + + it('sholud path when nothing fails in only blaock', fakeAsync(() => { + fakeService.addPermission('canEditAgenda'); + route = { + data: { + permissions: { + only: 'canEditAgenda', + redirectTo: { + canReadAgenda: 'agendaList', + canEditAgenda: 'dashboard', + canRun: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(true); + }); + })); +}); + +describe('Permissions guard test redirectTo as function', () => { + + let permissionGuard: NgxPermissionsGuard; + let fakeRouter; + let route; + let testRouter; + let fakeService; + beforeEach(() => { + TestBed.configureTestingModule({ + + imports: [NgxPermissionsModule.forRoot()] + }); + }); + beforeEach(inject([NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService) => { + fakeRouter = { navigate: () => { } }; + + service.addPermission('canReadAgenda'); + fakeService = service; + // fakeRouter = router; + spyOn(fakeRouter, 'navigate'); + permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); + })); + + it('should create an instance', () => { + expect(permissionGuard).toBeTruthy(); + }); + + it('sholud redirect dashboard can canRead Agenda fullfils can edit agenda fails', fakeAsync(() => { + route = { + data: { + permissions: { + except: ['canEditAgenda', 'canReadAgenda', 'canRun'], + redirectTo: (failedPermission, _, state) => { + return failedPermission; + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['canReadAgenda']); + }); + })); + + it('it should dynamically redirect to failed route redirectoTo as fucntion', fakeAsync(() => { + route = { + data: { + permissions: { + only: ['canRun'], + redirectTo: (failedPermission, _, state) => { + return failedPermission; + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['canRun']); + }); + })); + + it('it should dynamically redirect to failed route redirectoTo as fucntion when except pass only fails', fakeAsync(() => { + route = { + data: { + permissions: { + except: 'nice', + only: ['canRun'], + redirectTo: (failedPermission, _, state) => { + return failedPermission; + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['canRun']); + }); + })); +}); diff --git a/projects/ngx-permissions/src/lib/router/permissions-guard-can-load.service.spec.ts b/projects/ngx-permissions/src/lib/router/permissions-guard-can-load.service.spec.ts new file mode 100644 index 0000000..370171a --- /dev/null +++ b/projects/ngx-permissions/src/lib/router/permissions-guard-can-load.service.spec.ts @@ -0,0 +1,1476 @@ + +import { NgxPermissionsGuard } from './permissions-guard.service'; +import { async, fakeAsync, inject, TestBed } from '@angular/core/testing'; +import { NgxPermissionsService } from '../service/permissions.service'; +import { NgxRolesService } from '../service/roles.service'; +import { NgxPermissionsModule } from '../index'; +import { ActivatedRouteSnapshot, Router, RouterStateSnapshot } from '@angular/router'; +import { tick } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; + +describe('Permissions guard only', () => { + + let permissionGuard: NgxPermissionsGuard; + let route; + let fakeRouter; + beforeEach(() => { + TestBed.configureTestingModule({ + imports: [NgxPermissionsModule.forRoot()] + }); + }); + beforeEach(inject([NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService) => { + fakeRouter = { navigate: () => { } }; + spyOn(fakeRouter, 'navigate'); + + service.addPermission('ADMIN'); + permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); + })); + + it('should create an instance', () => { + expect(permissionGuard).toBeTruthy(); + }); + + it('sholud return true when only fullfills', fakeAsync(() => { + route = { + data: { + permissions: { + only: 'ADMIN' + } + } + }; + (>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(true); + }); + })); + + it('sholud return false when only doesnt match', fakeAsync(() => { + route = { + data: { + permissions: { + only: 'DOESNT MATCH' + } + } + }; + (>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(false); + }); + })); + + it('sholud return false when only doesnt match and navigate to 404', fakeAsync(() => { + route = { + data: { + permissions: { + only: 'DOESNT MATCH', + redirectTo: './404' + } + } + }; + (>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['./404']); + }); + })); + + it('should return false when only doesnt match and navigate to array 404', fakeAsync(() => { + route = { + data: { + permissions: { + only: 'DOESNT MATCH', + redirectTo: ['./404'] + } + } + }; + (>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['./404']); + }); + })); + + it('should return true when neither only not except specified', fakeAsync(() => { + route = { + data: { + permissions: { + only: '', + except: '', + redirectTo: ['./404'] + } + } + }; + expect(permissionGuard.canLoad(route)).toBe(true); + })); + + it('should return true when neither only not except specified as array', fakeAsync(() => { + route = { + data: { + permissions: { + only: [], + except: [], + redirectTo: ['./404'] + } + } + }; + expect(permissionGuard.canLoad(route)).toBe(true); + })); +}); + +describe('Permissions guard Except', () => { + + let permissionGuard: NgxPermissionsGuard; + let fakeRouter; + let route; + beforeEach(() => { + TestBed.configureTestingModule({ + imports: [NgxPermissionsModule.forRoot()] + }); + }); + beforeEach(inject([NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService) => { + fakeRouter = { navigate: () => { } }; + spyOn(fakeRouter, 'navigate'); + + service.addPermission('MANAGER'); + permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); + })); + + it('should create an instance', () => { + expect(permissionGuard).toBeTruthy(); + }); + + it('sholud return false when except matches', fakeAsync(() => { + route = { + data: { + permissions: { + except: 'MANAGER' + } + } + }; + (>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(false); + }); + })); + + it('sholud return false when except matches and redirectTo 404', fakeAsync(() => { + route = { + data: { + permissions: { + except: 'MANAGER', + redirectTo: './404' + } + } + }; + (>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['./404']); + }); + })); + + it('sholud return false when except matches at least one array', fakeAsync(() => { + route = { + data: { + permissions: { + except: ['MANAGER', 'Something else'] + } + } + }; + (>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(false); + }); + })); + + it('sholud return false when except matches in array and redirectTo 404', fakeAsync(() => { + route = { + data: { + permissions: { + except: ['MANAGER', 'Something else'], + redirectTo: './404' + } + } + }; + (>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['./404']); + }); + })); + + it(`sholud return true when except doesn't match`, fakeAsync(() => { + route = { + data: { + permissions: { + except: 'DOESNT MATCH' + } + } + }; + (>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(true); + }); +})); + +it(`sholud return true when any in array doesn't match`, fakeAsync(() => { + route = { + data: { + permissions: { + except: ['DOESNT MATCH', 'AWESOME'] + } + } + }; +(>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(true); +}); + })); + + +}); + + +describe('Permissions guard Except and only together', () => { + + let permissionGuard: NgxPermissionsGuard; + let fakeRouter; + let route; + beforeEach(() => { + TestBed.configureTestingModule({ + imports: [NgxPermissionsModule.forRoot()] + }); + }); + beforeEach(inject([NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService) => { + fakeRouter = { navigate: () => { } }; + spyOn(fakeRouter, 'navigate'); + + service.addPermission('MANAGER'); + permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); + })); + + it('should create an instance', () => { + expect(permissionGuard).toBeTruthy(); + }); + + it('sholud return false when except matches and it should not check only and redirect to 404', fakeAsync(() => { + route = { + data: { + permissions: { + except: 'MANAGER', + only: 'AWESOME', + redirectTo: './404' + } + } + }; + (>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['./404']); + }); + })); + + it('should return false when except matches at least one array', fakeAsync(() => { + route = { + data: { + permissions: { + except: ['MANAGER', 'Something else'], + only: 'AWESOME' + } + } + }; + (>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(false); + }); + })); + + it(`sholud return true when except doesn't match but only matcher`, fakeAsync(() => { + route = { + data: { + permissions: { + except: 'DOESNT MATCH', + only: 'MANAGER' + } + } + }; + (>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(true); + }); +})); + +it(`sholud return true when any in array doesn't match but only matches`, fakeAsync(() => { + route = { + data: { + permissions: { + except: ['DOESNT MATCH', 'AWESOME'], + only: ['MANAGER', 'AWESOME'] + } + } + }; +(>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(true); +}); + })); +it(`sholud return false when except in array doesn't match and only also doesn't matches`, fakeAsync(() => { + route = { + data: { + permissions: { + except: ['DOESNT MATCH', 'AWESOME'], + only: ['gg', 'AWESOME'], + redirectTo: './404' + } + } + }; + (>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['./404']); + }); +})); +}); + +describe('Permissions guard Except and only together with isolation in root', () => { + + let permissionGuard: NgxPermissionsGuard; + let fakeRouter; + let route; + beforeEach(() => { + TestBed.configureTestingModule({ + imports: [NgxPermissionsModule.forRoot({ permissionsIsolate: true, rolesIsolate: true })] + }); + }); + beforeEach(inject([NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService) => { + fakeRouter = { navigate: () => { } }; + spyOn(fakeRouter, 'navigate'); + + service.addPermission('MANAGER'); + permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); + })); + + it('should create an instance', () => { + expect(permissionGuard).toBeTruthy(); + }); + + it('sholud return false when except matches and it should not check only and redirect to 404', fakeAsync(() => { + route = { + data: { + permissions: { + except: 'MANAGER', + only: 'AWESOME', + redirectTo: './404' + } + } + }; + (>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['./404']); + }); + })); + + it('should return false when except matches at least one array', fakeAsync(() => { + route = { + data: { + permissions: { + except: ['MANAGER', 'Something else'], + only: 'AWESOME' + } + } + }; + (>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(false); + }); + })); + + it(`sholud return true when except doesn't match but only matcher`, fakeAsync(() => { + route = { + data: { + permissions: { + except: 'DOESNT MATCH', + only: 'MANAGER' + } + } + }; + (>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(true); + }); +})); + +it(`sholud return true when any in array doesn't match but only matches`, fakeAsync(() => { + route = { + data: { + permissions: { + except: ['DOESNT MATCH', 'AWESOME'], + only: ['MANAGER', 'AWESOME'] + } + } + }; +(>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(true); +}); + })); +it(`sholud return false when except in array doesn't match and only also doesn't matches`, fakeAsync(() => { + route = { + data: { + permissions: { + except: ['DOESNT MATCH', 'AWESOME'], + only: ['gg', 'AWESOME'], + redirectTo: './404' + } + } + }; + (>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['./404']); + }); +})); +}); + + +describe('Permissions guard use only dynamically', () => { + + let permissionGuard: NgxPermissionsGuard; + let fakeRouter; + let route; + let testRouter; + beforeEach(() => { + TestBed.configureTestingModule({ + + imports: [NgxPermissionsModule.forRoot(), + + RouterTestingModule.withRoutes( + [ + { + path: 'crisis-center/:id', + redirectTo: '404', + data: { + permissions: { + except: (_: ActivatedRouteSnapshot, awesome: RouterStateSnapshot) => { + return true; + } + }, + } + }, + ])] + }); + }); + beforeEach(inject( + [NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService, router: Router) => { + fakeRouter = { navigate: () => { } }; + + service.addPermission('MANAGER'); + // fakeRouter = router; + spyOn(fakeRouter, 'navigate'); + permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); + })); + + it('should create an instance', () => { + expect(permissionGuard).toBeTruthy(); + }); + + it('sholud return true when only matches and it should not check only', fakeAsync(() => { + route = { + data: { + permissions: { + only: (_route: ActivatedRouteSnapshot, awesome: RouterStateSnapshot) => { + if (_route.data.path.includes(44)) { + return ['MANAGER']; + } else { + return 'notManager'; + } + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(true); + }); + })); + + it('should return true when except matches and it should ', fakeAsync(() => { + route = { + data: { + permissions: { + except: (_route: ActivatedRouteSnapshot, awesome: RouterStateSnapshot) => { + if (route.data.path.includes('doesntInclude')) { + return ['MANAGER']; + } else { + return 'notManager'; + } + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(true); + }); + })); + + it(`should return true when except doens't match but only matches it should true`, fakeAsync(() => { + route = { + data: { + permissions: { + except: (_route: ActivatedRouteSnapshot, awesome: RouterStateSnapshot) => { + if (route.data.path.includes('doesntInclude')) { + return ['MANAGER']; + } else { + return 'notManager'; + } + }, + only: (_route: ActivatedRouteSnapshot, awesome: RouterStateSnapshot) => { + if (route.data.path.includes('44')) { + return ['MANAGER']; + } else { + return 'notManager'; + } + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(true); + }); + })); + + it(`should return true when except doens't match but only matches it should true`, fakeAsync(() => { + route = { + data: { + permissions: { + except: (_route: ActivatedRouteSnapshot, awesome: RouterStateSnapshot) => { + if (route.data.path.includes('doesntInclude')) { + return ['MANAGER']; + } else { + return 'notManager'; + } + }, + only: (_route: ActivatedRouteSnapshot, awesome: RouterStateSnapshot) => { + if (route.data.path.includes('gg')) { + return ['MANAGER']; + } else { + return 'notManager'; + } + }, + redirectTo: '/404' + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['/404']); + }); + })); +}); + +describe('Permissions guard test redirectTo path parameters dynamically', () => { + + let permissionGuard: NgxPermissionsGuard; + let fakeRouter; + let route; + let testRouter; + beforeEach(() => { + TestBed.configureTestingModule({ + + imports: [NgxPermissionsModule.forRoot(), + + RouterTestingModule.withRoutes( + [ + { + path: 'crisis-center/:id', + redirectTo: '404', + data: { + permissions: { + except: (_route: ActivatedRouteSnapshot, awesome: RouterStateSnapshot) => { + return true; + }, + redirectTo: { + navigationCommands: ['123'], + navigationExtras: { + skipLocationChange: true + } + } + }, + } + }, + ])] + }); + }); + beforeEach(inject( + [NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService, router: Router) => { + fakeRouter = { navigate: () => { } }; + + service.addPermission('MANAGER'); + // fakeRouter = router; + spyOn(fakeRouter, 'navigate'); + permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); + })); + + it('should create an instance', () => { + expect(permissionGuard).toBeTruthy(); + }); + + it('sholud redirect to parameters specified on navigation commands and navigationExtras', fakeAsync(() => { + route = { + data: { + permissions: { + only: 'TIED', + redirectTo: { + navigationCommands: ['123'], + navigationExtras: { + skipLocationChange: true + } + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['123'], { skipLocationChange: true }); + + }); + })); + + it('sholud redirect to parameters specified in navigation commands and navigationExtras', fakeAsync(() => { + route = { + data: { + permissions: { + only: 'TIED', + redirectTo: { + navigationCommands: (rejectedPermission, _) => { + return ['123']; + }, + navigationExtras: (_) => { + return { + skipLocationChange: true + }; + } + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['123'], { skipLocationChange: true }); + + }); + })); + + it('except sholud redirect to parameters specified in navigation commands and navigationExtras', fakeAsync(() => { + route = { + data: { + permissions: { + except: 'MANAGER', + redirectTo: { + navigationCommands: (rejectedPermission, _) => { + return ['123']; + }, + navigationExtras: (_) => { + return { + skipLocationChange: true + }; + } + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['123'], { skipLocationChange: true }); + + }); + })); +}); + + +describe('Permissions guard test redirectTo path multiple redirectionRule', () => { + + let permissionGuard: NgxPermissionsGuard; + let fakeRouter; + let route; + let testRouter; + let fakeService; + beforeEach(() => { + TestBed.configureTestingModule({ + + imports: [NgxPermissionsModule.forRoot()] + }); + }); + beforeEach(inject([NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService) => { + fakeRouter = { navigate: () => { } }; + + service.addPermission('canReadAgenda'); + fakeService = service; + // fakeRouter = router; + spyOn(fakeRouter, 'navigate'); + permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); + })); + + it('should create an instance', () => { + expect(permissionGuard).toBeTruthy(); + }); + + it('sholud redirect dashboard can canRead Agenda fullfils can edit agenda fails', fakeAsync(() => { + route = { + data: { + permissions: { + except: ['canEditAgenda', 'canReadAgenda', 'canRun'], + redirectTo: { + canReadAgenda: 'agendaList', + canEditAgenda: 'dashboard', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['agendaList']); + }); + })); + + it('sholud redirect to run when there is permission canRun and it fails', fakeAsync(() => { + fakeService.addPermission('canEditAgenda'); + + route = { + data: { + permissions: { + except: ['canRun', 'canReadAgenda', 'canEditAgenda'], + redirectTo: { + canReadAgenda: 'agendaList', + canEditAgenda: 'dashboard', + canRun: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['agendaList']); + }); + })); + + it('sholud path when nothing fails', fakeAsync(() => { + fakeService.addPermission('canEditAgenda'); + + route = { + data: { + permissions: { + except: ['aweomse', 'awesome'], + redirectTo: { + canReadAgenda: 'agendaList', + canEditAgenda: 'dashboard', + canRun: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(true); + }); + })); + + it('redirect to default route when it fails but there is no redirect rule for that permission', fakeAsync(() => { + + route = { + data: { + permissions: { + except: ['canReadAgenda', 'canEditAgenda'], + redirectTo: { + canRun: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['login']); + + }); + })); + + it('redirect to only failed route when except passes but only fails', fakeAsync(() => { + + route = { + data: { + permissions: { + except: ['canEditAgenda'], + only: ['canRunAgenda'], + redirectTo: { + canReadAgenda: 'agendaList', + canRunAgenda: 'dashboard', + canRun: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['dashboard']); + + }); + })); + + it('path if except and only passes', fakeAsync(() => { + fakeService.addPermission('canRunAgenda'); + route = { + data: { + permissions: { + except: ['canEditAgenda'], + only: ['canRunAgenda'], + redirectTo: { + canReadAgenda: 'agendaList', + canRunAgenda: 'dashboard', + canRun: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(true); + + }); + })); + + + it('redirect fail on can editAgenda and redirect to dashboard', fakeAsync(() => { + route = { + data: { + permissions: { + only: ['canReadAgenda', 'canEditAgenda', 'canRun'], + redirectTo: { + canReadAgenda: 'agendaList', + canEditAgenda: 'dashboard', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['dashboard']); + }); + })); + + it('redirect to dashboard when canEdit agenda fails only', fakeAsync(() => { + route = { + data: { + permissions: { + only: ['canReadAgenda', 'canEditAgenda', 'canRun'], + redirectTo: { + canReadAgenda: 'agendaList', + canEditAgenda: (_) => { + return 'dashboard'; + }, + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['dashboard']); + }); + })); + + it('redirect to dashboard when canEdit agenda fails with objectProperty only', fakeAsync(() => { + route = { + data: { + permissions: { + only: ['canReadAgenda', 'canEditAgenda', 'canRun'], + redirectTo: { + canReadAgenda: 'agendaList', + canEditAgenda: { + navigationCommands: ['123'], + navigationExtras: { + skipLocationChange: true + } + }, + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['123'], { skipLocationChange: true }); + }); + })); + + it('should redirect to 123 when redirect to multiple and used as function', fakeAsync(() => { + route = { + data: { + permissions: { + only: ['canReadAgenda', 'canEditAgenda', 'canRun'], + redirectTo: { + canReadAgenda: 'agendaList', + canEditAgenda: () => { + return { + navigationCommands: ['123'], + navigationExtras: { + skipLocationChange: true + } + }; + }, + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['123'], { skipLocationChange: true }); + }); + })); + + it('redirect to default when only fails but there is no redirection rule', fakeAsync(() => { + fakeService.addPermission('canEditAgenda'); + + route = { + data: { + permissions: { + only: ['canReadAgenda', 'canEditAgenda', 'Can run'], + redirectTo: { + canReadAgenda: 'agendaList', + canEditAgenda: 'dashboard', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['login']); + }); + })); + + + + it('sholud path when nothing fails in only blaock', fakeAsync(() => { + fakeService.addPermission('canEditAgenda'); + + route = { + data: { + permissions: { + only: ['canEditAgenda'], + redirectTo: { + canReadAgenda: 'agendaList', + canEditAgenda: 'dashboard', + canRun: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(true); + }); + })); +}); + +describe('Permissions guard test redirectTo path multiple redirectionRule permissions load as string', () => { + + let permissionGuard: NgxPermissionsGuard; + let fakeRouter; + let route; + let testRouter; + let fakeService; + beforeEach(() => { + TestBed.configureTestingModule({ + + imports: [NgxPermissionsModule.forRoot()] + }); + }); + beforeEach(inject([NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService) => { + fakeRouter = { navigate: () => { } }; + + service.addPermission('canReadAgenda'); + fakeService = service; + // fakeRouter = router; + spyOn(fakeRouter, 'navigate'); + permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); + })); + + it('should create an instance', () => { + expect(permissionGuard).toBeTruthy(); + }); + + it('sholud redirect dashboard can canRead Agenda fullfils can edit agenda fails', fakeAsync(() => { + route = { + data: { + permissions: { + except: 'canReadAgenda', + redirectTo: { + canReadAgenda: 'agendaList', + canEditAgenda: 'dashboard', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['agendaList']); + }); + })); + + it('sholud redirect to run when there is permission canRun and it fails', fakeAsync(() => { + fakeService.addPermission('canEditAgenda'); + + route = { + data: { + permissions: { + only: 'DELETE', + redirectTo: { + canReadAgenda: 'agendaList', + canEditAgenda: 'dashboard', + DELETE: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['run']); + }); + })); + + it('sholud path when nothing fails', fakeAsync(() => { + fakeService.addPermission('canEditAgenda'); + + route = { + data: { + permissions: { + except: 'aweomse', + redirectTo: { + canReadAgenda: 'agendaList', + canEditAgenda: 'dashboard', + canRun: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(true); + }); + })); + // + it('redirect to default route when except fails but there is no redirect rule for that permission', fakeAsync(() => { + + route = { + data: { + permissions: { + except: 'canReadAgenda', + redirectTo: { + canRun: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['login']); + + }); + })); + + it('redirect to only failed route when except passes but only fails', fakeAsync(() => { + + route = { + data: { + permissions: { + except: 'canEditAgenda', + only: 'canRunAgenda', + redirectTo: { + canReadAgenda: 'agendaList', + canRunAgenda: 'dashboard', + canRun: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['dashboard']); + }); + })); + + it('path if except and only passes', fakeAsync(() => { + fakeService.addPermission('canRunAgenda'); + route = { + data: { + permissions: { + except: 'canEditAgenda', + only: 'canRunAgenda', + redirectTo: { + canReadAgenda: 'agendaList', + canRunAgenda: 'dashboard', + canRun: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(true); + + }); + })); + + + + it('sholud path when nothing fails in only blaock', fakeAsync(() => { + fakeService.addPermission('canEditAgenda'); + route = { + data: { + permissions: { + only: 'canEditAgenda', + redirectTo: { + canReadAgenda: 'agendaList', + canEditAgenda: 'dashboard', + canRun: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(true); + }); + })); +}); + + +describe('Permissions guard test redirectTo path dynamic redirectionRule permissions load as string', () => { + + let permissionGuard: NgxPermissionsGuard; + let fakeRouter; + let route; + let testRouter; + let fakeService; + beforeEach(() => { + TestBed.configureTestingModule({ + + imports: [NgxPermissionsModule.forRoot()] + }); + }); + beforeEach(inject([NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService) => { + fakeRouter = { navigate: () => { } }; + + service.addPermission('canReadAgenda'); + fakeService = service; + // fakeRouter = router; + spyOn(fakeRouter, 'navigate'); + permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); + })); + + it('should create an instance', () => { + expect(permissionGuard).toBeTruthy(); + }); + + it('sholud redirect dashboard can canRead Agenda fullfils can edit agenda fails', fakeAsync(() => { + route = { + data: { + permissions: { + except: 'canReadAgenda', + redirectTo: { + canReadAgenda: 'agendaList', + canEditAgenda: 'dashboard', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['agendaList']); + }); + })); + + it('sholud redirect to run when there is permission canRun and it fails', fakeAsync(() => { + fakeService.addPermission('canEditAgenda'); + + route = { + data: { + permissions: { + only: 'DELETE', + redirectTo: { + canReadAgenda: 'agendaList', + canEditAgenda: 'dashboard', + DELETE: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['run']); + }); + })); + + it('sholud path when nothing fails', fakeAsync(() => { + fakeService.addPermission('canEditAgenda'); + + route = { + data: { + permissions: { + except: 'aweomse', + redirectTo: { + canReadAgenda: 'agendaList', + canEditAgenda: 'dashboard', + canRun: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(true); + }); + })); + // + it('redirect to default route when except fails but there is no redirect rule for that permission', fakeAsync(() => { + + route = { + data: { + permissions: { + except: 'canReadAgenda', + redirectTo: { + canRun: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['login']); + + }); + })); + + it('redirect to only failed route when except passes but only fails', fakeAsync(() => { + + route = { + data: { + permissions: { + except: 'canEditAgenda', + only: 'canRunAgenda', + redirectTo: { + canReadAgenda: 'agendaList', + canRunAgenda: 'dashboard', + canRun: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['dashboard']); + }); + })); + it('redirect to only failed route when except passes but only fails called as function', fakeAsync(() => { + + route = { + data: { + permissions: { + except: 'canEditAgenda', + only: 'canRunAgenda', + redirectTo: { + canReadAgenda: 'agendaList', + canRunAgenda: (failedPermissionName: any, b: any, c: any) => { + return failedPermissionName; + }, + canRun: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['canRunAgenda']); + }); + })); + + it('redirect to except failed route when except dont pass as a function', fakeAsync(() => { + + route = { + data: { + permissions: { + except: 'canReadAgenda', + only: 'canRunAgenda', + redirectTo: { + canReadAgenda: (failedPermissionName: any, b: any, c: any) => { + return failedPermissionName; + }, + canRun: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['canReadAgenda']); + }); + })); + + it('path if except and only passes', fakeAsync(() => { + fakeService.addPermission('canRunAgenda'); + route = { + data: { + permissions: { + except: 'canEditAgenda', + only: 'canRunAgenda', + redirectTo: { + canReadAgenda: 'agendaList', + canRunAgenda: 'dashboard', + canRun: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(true); + + }); + })); + + + + it('sholud path when nothing fails in only blaock', fakeAsync(() => { + fakeService.addPermission('canEditAgenda'); + route = { + data: { + permissions: { + only: 'canEditAgenda', + redirectTo: { + canReadAgenda: 'agendaList', + canEditAgenda: 'dashboard', + canRun: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(true); + }); + })); +}); + +describe('Permissions guard test redirectTo as function', () => { + + let permissionGuard: NgxPermissionsGuard; + let fakeRouter; + let route; + let testRouter; + let fakeService; + beforeEach(() => { + TestBed.configureTestingModule({ + + imports: [NgxPermissionsModule.forRoot()] + }); + }); + beforeEach(inject([NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService) => { + fakeRouter = { navigate: () => { } }; + + service.addPermission('canReadAgenda'); + fakeService = service; + // fakeRouter = router; + spyOn(fakeRouter, 'navigate'); + permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); + })); + + it('should create an instance', () => { + expect(permissionGuard).toBeTruthy(); + }); + + it('sholud redirect dashboard can canRead Agenda fullfils can edit agenda fails', fakeAsync(() => { + route = { + data: { + permissions: { + except: ['canEditAgenda', 'canReadAgenda', 'canRun'], + redirectTo: (failedPermission, _) => { + return failedPermission; + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['canReadAgenda']); + }); + })); + + it('it should dynamically redirect to failed route redirectoTo as fucntion', fakeAsync(() => { + route = { + data: { + permissions: { + only: ['canRun'], + redirectTo: (failedPermission, _) => { + return failedPermission; + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['canRun']); + }); + })); + + it('it should dynamically redirect to failed route redirectoTo as fucntion when except pass only fails', fakeAsync(() => { + route = { + data: { + permissions: { + except: 'nice', + only: ['canRun'], + redirectTo: (failedPermission, _) => { + return failedPermission; + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canLoad(route)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['canRun']); + }); + })); +}); diff --git a/src/router/permissions-guard-isolate.service.spec.ts b/projects/ngx-permissions/src/lib/router/permissions-guard-isolate.service.spec.ts similarity index 86% rename from src/router/permissions-guard-isolate.service.spec.ts rename to projects/ngx-permissions/src/lib/router/permissions-guard-isolate.service.spec.ts index 7ff3297..4e22595 100644 --- a/src/router/permissions-guard-isolate.service.spec.ts +++ b/projects/ngx-permissions/src/lib/router/permissions-guard-isolate.service.spec.ts @@ -68,7 +68,7 @@ function createRoot(router: Router, type: any): ComponentFixture { return f; } -describe("module", () => { +describe('module', () => { beforeEach(() => { TestBed.configureTestingModule({ imports: [ @@ -79,7 +79,7 @@ describe("module", () => { }); }); - it("should work when lazy loaded using forChild", fakeAsync(inject( + it('should work when lazy loaded using forChild', fakeAsync(inject( [Router, Location, NgModuleFactoryLoader], (router: Router, location: Location, loader: SpyNgModuleFactoryLoader) => { let LoadedModule = getLazyLoadedModule(NgxPermissionsModule.forChild()); @@ -90,7 +90,7 @@ describe("module", () => { permissionsService: NgxPermissionsService = injector.get(NgxPermissionsService); permissionsService.hasPermission('ADMIN').then((data) => { - expect(data).toBe(false) + expect(data).toBe(false); }); router.resetConfig([{path: 'lazy', loadChildren: 'expected'}]); @@ -102,17 +102,19 @@ describe("module", () => { // since the root module imports the NgxPermissionsModule with forRoot and the lazy loaded module with forChild // the permissionsService service is shared between both modules - // the constructor of the ChildLazyLoadedComponent overwrote the "ADMIN" key of the root NgxPermissionsService + // the constructor of the ChildLazyLoadedComponent overwrote the 'ADMIN' key of the root NgxPermissionsService permissionsService.hasPermission('ADMIN').then((data) => { - expect(data).toBe(true) + expect(data).toBe(true); }); })) ); - it("should work when loaded using just Module", fakeAsync(inject( + it('should work when loaded using just Module', fakeAsync(inject( [Router, Location, NgModuleFactoryLoader], (router: Router, location: Location, loader: SpyNgModuleFactoryLoader) => { - let LoadedModule = getLazyLoadedModule(NgxPermissionsModule); + let LoadedModule = getLazyLoadedModule({ + ngModule: NgxPermissionsModule + }); loader.stubbedModules = {expected: LoadedModule}; const fixture = createRoot(router, RootCmp), @@ -120,7 +122,7 @@ describe("module", () => { permissionsService: NgxPermissionsService = injector.get(NgxPermissionsService); permissionsService.hasPermission('ADMIN').then((data) => { - expect(data).toBe(false) + expect(data).toBe(false); }); router.resetConfig([{path: 'lazy', loadChildren: 'expected'}]); @@ -132,14 +134,14 @@ describe("module", () => { // since the root module imports the NgxPermissionsModule with forRoot and the lazy loaded module with forChild // the permissionsService service is shared between both modules - // the constructor of the ChildLazyLoadedComponent overwrote the "ADMIN" key of the root NgxPermissionsService + // the constructor of the ChildLazyLoadedComponent overwrote the 'ADMIN' key of the root NgxPermissionsService permissionsService.hasPermission('ADMIN').then((data) => { - expect(data).toBe(true) + expect(data).toBe(true); }); })) ); - it("should create 2 instances of the service when lazy loaded using forRoot", fakeAsync(inject( + it('should create 2 instances of the service when lazy loaded using forRoot', fakeAsync(inject( [Router, Location, NgModuleFactoryLoader], (router: Router, location: Location, loader: SpyNgModuleFactoryLoader) => { let LoadedModule = getLazyLoadedModule(NgxPermissionsModule.forRoot()); @@ -150,7 +152,7 @@ describe("module", () => { permissionsService = injector.get(NgxPermissionsService); permissionsService.hasPermission('ADMIN').then((data) => { - expect(data).toBe(false) + expect(data).toBe(false); }); router.resetConfig([{path: 'lazy', loadChildren: 'expected'}]); @@ -161,13 +163,13 @@ describe("module", () => { // since both the root module and the lazy loaded module use forRoot to define the NgxPermissionsModule // the permissionsService service is NOT shared, and 2 instances co-exist - // the constructor of the ChildLazyLoadedComponent didn't overwrote the "ADMIN" key of the root NgxPermissionsService + // the constructor of the ChildLazyLoadedComponent didn't overwrote the 'ADMIN' key of the root NgxPermissionsService permissionsService.hasPermission('ADMIN').then((data) => { - expect(data).toBe(false) + expect(data).toBe(false); }); })) ); - it("should create 2 instances of the service when lazy loaded using forChild and isolate true", fakeAsync(inject( + it('should create 2 instances of the service when lazy loaded using forChild and isolate true', fakeAsync(inject( [Router, Location, NgModuleFactoryLoader], (router: Router, location: Location, loader: SpyNgModuleFactoryLoader) => { let LoadedModule = getLazyLoadedModule(NgxPermissionsModule.forChild({permissionsIsolate: true})); @@ -178,7 +180,7 @@ describe("module", () => { permissionsService = injector.get(NgxPermissionsService); permissionsService.hasPermission('ADMIN').then((data) => { - expect(data).toBe(false) + expect(data).toBe(false); }); router.resetConfig([{path: 'lazy', loadChildren: 'expected'}]); @@ -189,9 +191,9 @@ describe("module", () => { // since both the root module and the lazy loaded module use forRoot to define the NgxPermissionsModule // the permissions service is NOT shared, and 2 instances co-exist - // the constructor of the ChildLazyLoadedComponent didn't overwrote the "false" key of the root NgxPermissionsService + // the constructor of the ChildLazyLoadedComponent didn't overwrote the 'false' key of the root NgxPermissionsService permissionsService.hasPermission('ADMIN').then((data) => { - expect(data).toBe(false) + expect(data).toBe(false); }); })) ); @@ -246,7 +248,7 @@ function getLazyRolesLoadedModule(importedModule: ModuleWithProviders) { return LoadedModule; } -describe("Role module", () => { +describe('Role module', () => { beforeEach(() => { TestBed.configureTestingModule({ imports: [ @@ -257,7 +259,7 @@ describe("Role module", () => { }); }); - it("should work when lazy loaded using forChild", fakeAsync(inject( + it('should work when lazy loaded using forChild', fakeAsync(inject( [Router, Location, NgModuleFactoryLoader], (router: Router, location: Location, loader: SpyNgModuleFactoryLoader) => { let LoadedModule = getLazyRolesLoadedModule(NgxPermissionsModule.forChild()); @@ -268,7 +270,7 @@ describe("Role module", () => { rolesService: NgxRolesService = injector.get(NgxRolesService); rolesService.hasOnlyRoles('ADMIN').then((data) => { - expect(data).toBe(false) + expect(data).toBe(false); }); router.resetConfig([{path: 'lazy', loadChildren: 'expected'}]); @@ -280,14 +282,14 @@ describe("Role module", () => { // since the root module imports the NgxPermissionsModule with forRoot and the lazy loaded module with forChild // the rolesServihasOnlyRoles() is shared between both modules - // the constructor of the ChildLazyLoadedComponent overwrote the "ADMIN" key of the root roleServiceService + // the constructor of the ChildLazyLoadedComponent overwrote the 'ADMIN' key of the root roleServiceService rolesService.hasOnlyRoles('ADMIN').then((data) => { - expect(data).toBe(true) + expect(data).toBe(true); }); })) ); - it("should create 2 instances of the service when lazy loaded using forRoot", fakeAsync(inject( + it('should create 2 instances of the service when lazy loaded using forRoot', fakeAsync(inject( [Router, Location, NgModuleFactoryLoader], (router: Router, location: Location, loader: SpyNgModuleFactoryLoader) => { let LoadedModule = getLazyRolesLoadedModule(NgxPermissionsModule.forRoot()); @@ -298,7 +300,7 @@ describe("Role module", () => { rolesService = injector.get(NgxRolesService); rolesService.hasOnlyRoles('ADMIN').then((data) => { - expect(data).toBe(false) + expect(data).toBe(false); }); router.resetConfig([{path: 'lazy', loadChildren: 'expected'}]); @@ -309,13 +311,13 @@ describe("Role module", () => { // since both the root module and the lazy loaded module use forRoot to define the NgxPermisionsModule // the rolesService service is NOT shared, and 2 instances co-exist - // the constructor of the ChildLazyLoadedComponent didn't overwrote the "ADMIN" key of the root PermissionsService + // the constructor of the ChildLazyLoadedComponent didn't overwrote the 'ADMIN' key of the root PermissionsService rolesService.hasOnlyRoles('ADMIN').then((data) => { - expect(data).toBe(false) + expect(data).toBe(false); }); })) ); - it("should create 2 instances of the service when lazy loaded using forChild and isolate true", fakeAsync(inject( + it('should create 2 instances of the service when lazy loaded using forChild and isolate true', fakeAsync(inject( [Router, Location, NgModuleFactoryLoader], (router: Router, location: Location, loader: SpyNgModuleFactoryLoader) => { let LoadedModule = getLazyRolesLoadedModule(NgxPermissionsModule.forChild({rolesIsolate: true})); @@ -326,7 +328,7 @@ describe("Role module", () => { rolesService = injector.get(NgxRolesService); rolesService.hasOnlyRoles('ADMIN').then((data) => { - expect(data).toBe(false) + expect(data).toBe(false); }); router.resetConfig([{path: 'lazy', loadChildren: 'expected'}]); @@ -337,10 +339,10 @@ describe("Role module", () => { // since both the root module and the lazy loaded module use forRoot to define the NgxPermissionsModule // the permissions service is NOT shared, and 2 instances co-exist - // the constructor of the ChildLazyLoadedComponent didn't overwrote the "false" key of the root NgxRolesService + // the constructor of the ChildLazyLoadedComponent didn't overwrote the 'false' key of the root NgxRolesService rolesService.hasOnlyRoles('ADMIN').then((data) => { - expect(data).toBe(false) + expect(data).toBe(false); }); })) ); -}); \ No newline at end of file +}); diff --git a/projects/ngx-permissions/src/lib/router/permissions-guard.service.spec.ts b/projects/ngx-permissions/src/lib/router/permissions-guard.service.spec.ts new file mode 100644 index 0000000..98c0b78 --- /dev/null +++ b/projects/ngx-permissions/src/lib/router/permissions-guard.service.spec.ts @@ -0,0 +1,1666 @@ + +import { TestBed, fakeAsync, inject } from '@angular/core/testing'; +import { ActivatedRouteSnapshot, Router, RouterStateSnapshot } from '@angular/router'; +import { RouterTestingModule } from '@angular/router/testing'; +import { NgxPermissionsModule } from '../index'; +import { NgxPermissionsService } from '../service/permissions.service'; +import { NgxRolesService } from '../service/roles.service'; +import { NgxPermissionsGuard } from './permissions-guard.service'; + +describe('Permissions guard only', () => { + + let permissionGuard: NgxPermissionsGuard; + let route; + let fakeRouter; + beforeEach(() => { + TestBed.configureTestingModule({ + imports: [NgxPermissionsModule.forRoot()] + }); + }); + beforeEach(inject([NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService) => { + fakeRouter = { navigate: () => { } }; + spyOn(fakeRouter, 'navigate'); + + service.addPermission('ADMIN'); + permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); + })); + + it('should create an instance', () => { + expect(permissionGuard).toBeTruthy(); + }); + + it('sholud return true when only fullfills', fakeAsync(() => { + route = { + data: { + permissions: { + only: 'ADMIN' + } + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(true); + }); + })); + + it('sholud return true when only is empty array', fakeAsync(() => { + route = { + data: { + permissions: { + only: [] + } + } + }; + expect(permissionGuard.canActivate(route, {} as RouterStateSnapshot)).toEqual(true); + + })); + + it('sholud return true when no permissions array specified', fakeAsync(() => { + route = {}; + expect(permissionGuard.canActivate(route, {} as RouterStateSnapshot)).toEqual(true); + + })); + + it('sholud return true when except is empty array', fakeAsync(() => { + route = { + data: { + permissions: { + except: [] + } + } + }; + expect(permissionGuard.canActivate(route, {} as RouterStateSnapshot)).toEqual(true); + + })); + + it('sholud return false when only doesnt match', fakeAsync(() => { + route = { + data: { + permissions: { + only: 'DOESNT MATCH' + } + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + }); + })); + + it('sholud return false when only doesnt match and navigate to 404', fakeAsync(() => { + route = { + data: { + permissions: { + only: 'DOESNT MATCH', + redirectTo: './404' + } + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['./404']); + }); + })); + + it('should return false when only doesnt match and navigate to array 404', fakeAsync(() => { + route = { + data: { + permissions: { + only: 'DOESNT MATCH', + redirectTo: ['./404'] + } + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['./404']); + }); + })); + + it('should return true when neither only not except specified', fakeAsync(() => { + route = { + data: { + permissions: { + only: '', + except: '', + redirectTo: ['./404'] + } + } + }; + expect(permissionGuard.canActivate(route, {} as RouterStateSnapshot)).toBe(true); + })); + + it('should return true when neither only not except specified as array', fakeAsync(() => { + route = { + data: { + permissions: { + only: [], + except: [], + redirectTo: ['./404'] + } + } + }; + expect(permissionGuard.canActivate(route, {} as RouterStateSnapshot)).toBe(true); + })); +}); + +describe('Permissions guard Except', () => { + + let permissionGuard: NgxPermissionsGuard; + let fakeRouter; + let route; + beforeEach(() => { + TestBed.configureTestingModule({ + imports: [NgxPermissionsModule.forRoot()] + }); + }); + beforeEach(inject([NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService) => { + fakeRouter = { navigate: () => { } }; + spyOn(fakeRouter, 'navigate'); + + service.addPermission('MANAGER'); + permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); + })); + + it('should create an instance', () => { + expect(permissionGuard).toBeTruthy(); + }); + + it('sholud return false when except matches', fakeAsync(() => { + route = { + data: { + permissions: { + except: 'MANAGER' + } + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + }); + })); + + it('sholud return false when except matches and redirectTo 404', fakeAsync(() => { + route = { + data: { + permissions: { + except: 'MANAGER', + redirectTo: './404' + } + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['./404']); + }); + })); + + it('sholud return false when except matches at least one array', fakeAsync(() => { + route = { + data: { + permissions: { + except: ['MANAGER', 'Something else'] + } + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + }); + })); + + it('sholud return false when except matches in array and redirectTo 404', fakeAsync(() => { + route = { + data: { + permissions: { + except: ['MANAGER', 'Something else'], + redirectTo: './404' + } + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['./404']); + }); + })); + + it(`sholud return true when except doesn't match`, fakeAsync(() => { + route = { + data: { + permissions: { + except: 'DOESNT MATCH' + } + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(true); + }); + })); + + it(`sholud return true when any in array doesn't match`, fakeAsync(() => { + route = { + data: { + permissions: { + except: ['DOESNT MATCH', 'AWESOME'] + } + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(true); + }); + })); + + +}); + + +describe('Permissions guard Except and only together', () => { + + let permissionGuard: NgxPermissionsGuard; + let fakeRouter; + let route; + beforeEach(() => { + TestBed.configureTestingModule({ + imports: [NgxPermissionsModule.forRoot()] + }); + }); + beforeEach(inject([NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService) => { + fakeRouter = { navigate: () => { } }; + spyOn(fakeRouter, 'navigate'); + + service.addPermission('MANAGER'); + permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); + })); + + it('should create an instance', () => { + expect(permissionGuard).toBeTruthy(); + }); + + it('sholud return false when except matches and it should not check only and redirect to 404', fakeAsync(() => { + route = { + data: { + permissions: { + except: 'MANAGER', + only: 'AWESOME', + redirectTo: './404' + } + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['./404']); + }); + })); + + it('should return false when except matches at least one array', fakeAsync(() => { + route = { + data: { + permissions: { + except: ['MANAGER', 'Something else'], + only: 'AWESOME' + } + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + }); + })); + + it(`sholud return true when except doesn't match but only matcher`, fakeAsync(() => { + route = { + data: { + permissions: { + except: 'DOESNT MATCH', + only: 'MANAGER' + } + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(true); + }); + })); + + it(`sholud return true when any in array doesn't match but only matches`, fakeAsync(() => { + route = { + data: { + permissions: { + except: ['DOESNT MATCH', 'AWESOME'], + only: ['MANAGER', 'AWESOME'] + } + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(true); + }); + })); + it(`sholud return false when except in array doesn't match and only also doesn't matches`, fakeAsync(() => { + route = { + data: { + permissions: { + except: ['DOESNT MATCH', 'AWESOME'], + only: ['gg', 'AWESOME'], + redirectTo: './404' + } + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['./404']); + }); + })); +}); + + +describe('Permissions guard use only dynamically', () => { + + let permissionGuard: NgxPermissionsGuard; + let fakeRouter; + let route; + let testRouter; + beforeEach(() => { + TestBed.configureTestingModule({ + + imports: [NgxPermissionsModule.forRoot(), + + RouterTestingModule.withRoutes( + [ + { + path: 'crisis-center/:id', + redirectTo: '404', + data: { + permissions: { + except: (_: ActivatedRouteSnapshot, awesome: RouterStateSnapshot) => { + return true; + } + }, + } + }, + ])] + }); + }); + beforeEach(inject( + [NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService, router: Router) => { + fakeRouter = { navigate: () => { } }; + + service.addPermission('MANAGER'); + // fakeRouter = router; + spyOn(fakeRouter, 'navigate'); + permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); + })); + + it('should create an instance', () => { + expect(permissionGuard).toBeTruthy(); + }); + + it('sholud return true when only matches and it should not check only', fakeAsync(() => { + route = { + data: { + permissions: { + only: (_route: ActivatedRouteSnapshot, awesome: RouterStateSnapshot) => { + if (_route.data.path.includes(44)) { + return ['MANAGER']; + } else { + return 'notManager'; + } + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(true); + }); + })); + + it('should return true when except matches and it should ', fakeAsync(() => { + route = { + data: { + permissions: { + except: (_route: ActivatedRouteSnapshot, awesome: RouterStateSnapshot) => { + if (_route.data.path.includes('doesntInclude')) { + return ['MANAGER']; + } else { + return 'notManager'; + } + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(true); + }); + })); + + it(`should return true when except doens't match but only matches it should true`, fakeAsync(() => { + route = { + data: { + permissions: { + except: (_route: ActivatedRouteSnapshot, awesome: RouterStateSnapshot) => { + if (_route.data.path.includes('doesntInclude')) { + return ['MANAGER']; + } else { + return 'notManager'; + } + }, + only: (_route: ActivatedRouteSnapshot, awesome: RouterStateSnapshot) => { + if (route.data.path.includes('44')) { + return ['MANAGER']; + } else { + return 'notManager'; + } + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(true); + }); + })); + + it(`should return true when except doens't match but only matches it should true`, fakeAsync(() => { + route = { + data: { + permissions: { + except: (_route: ActivatedRouteSnapshot, awesome: RouterStateSnapshot) => { + if (_route.data.path.includes('doesntInclude')) { + return ['MANAGER']; + } else { + return 'notManager'; + } + }, + only: (_route: ActivatedRouteSnapshot, awesome: RouterStateSnapshot) => { + if (route.data.path.includes('gg')) { + return ['MANAGER']; + } else { + return 'notManager'; + } + }, + redirectTo: '/404' + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['/404']); + }); + })); +}); + +describe('Permissions guard test redirectTo path parameters dynamically', () => { + + let permissionGuard: NgxPermissionsGuard; + let fakeRouter; + let route; + let testRouter; + beforeEach(() => { + TestBed.configureTestingModule({ + + imports: [NgxPermissionsModule.forRoot(), + + RouterTestingModule.withRoutes( + [ + { + path: 'crisis-center/:id', + redirectTo: '404', + data: { + permissions: { + except: (_: ActivatedRouteSnapshot, awesome: RouterStateSnapshot) => { + return true; + }, + redirectTo: { + navigationCommands: ['123'], + navigationExtras: { + skipLocationChange: true + } + } + }, + } + }, + ])] + }); + }); + beforeEach(inject( + [NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService, router: Router) => { + fakeRouter = { navigate: () => { } }; + + service.addPermission('MANAGER'); + // fakeRouter = router; + spyOn(fakeRouter, 'navigate'); + permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); + })); + + it('should create an instance', () => { + expect(permissionGuard).toBeTruthy(); + }); + + it('sholud redirect to parameters specified on navigation commands and navigationExtras', fakeAsync(() => { + route = { + data: { + permissions: { + only: 'TIED', + redirectTo: { + navigationCommands: ['123'], + navigationExtras: { + skipLocationChange: true + } + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['123'], { skipLocationChange: true }); + + }); + })); + + it('sholud redirect to parameters specified in navigation commands and navigationExtras', fakeAsync(() => { + route = { + data: { + permissions: { + only: 'TIED', + redirectTo: { + navigationCommands: (rejectedPermission, _, state) => { + return ['123']; + }, + navigationExtras: (_, state) => { + return { + skipLocationChange: true + }; + } + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['123'], { skipLocationChange: true }); + + }); + })); + + it('except sholud redirect to parameters specified in navigation commands and navigationExtras', fakeAsync(() => { + route = { + data: { + permissions: { + except: 'MANAGER', + redirectTo: { + navigationCommands: (rejectedPermission, _, state) => { + return ['123']; + }, + navigationExtras: (_, state) => { + return { + skipLocationChange: true + }; + } + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['123'], { skipLocationChange: true }); + + }); + })); +}); + + +describe('Permissions guard test redirectTo path multiple redirectionRule', () => { + + let permissionGuard: NgxPermissionsGuard; + let fakeRouter; + let route; + let testRouter; + let fakeService; + beforeEach(() => { + TestBed.configureTestingModule({ + + imports: [NgxPermissionsModule.forRoot()] + }); + }); + beforeEach(inject([NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService) => { + fakeRouter = { navigate: () => { } }; + + service.addPermission('canReadAgenda'); + fakeService = service; + // fakeRouter = router; + spyOn(fakeRouter, 'navigate'); + permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); + })); + + it('should create an instance', () => { + expect(permissionGuard).toBeTruthy(); + }); + + it('sholud redirect dashboard can canRead Agenda fullfils can edit agenda fails', fakeAsync(() => { + route = { + data: { + permissions: { + except: ['canEditAgenda', 'canReadAgenda', 'canRun'], + redirectTo: { + canReadAgenda: 'agendaList', + canEditAgenda: 'dashboard', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['agendaList']); + }); + })); + + it('sholud redirect to run when there is permission canRun and it fails', fakeAsync(() => { + fakeService.addPermission('canEditAgenda'); + + route = { + data: { + permissions: { + except: ['canRun', 'canReadAgenda', 'canEditAgenda'], + redirectTo: { + canReadAgenda: 'agendaList', + canEditAgenda: 'dashboard', + canRun: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['agendaList']); + }); + })); + + it('sholud path when nothing fails', fakeAsync(() => { + fakeService.addPermission('canEditAgenda'); + + route = { + data: { + permissions: { + except: ['aweomse', 'awesome'], + redirectTo: { + canReadAgenda: 'agendaList', + canEditAgenda: 'dashboard', + canRun: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(true); + }); + })); + + it('redirect to default route when it fails but there is no redirect rule for that permission', fakeAsync(() => { + + route = { + data: { + permissions: { + except: ['canReadAgenda', 'canEditAgenda'], + redirectTo: { + canRun: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['login']); + + }); + })); + + it('redirect to only failed route when except passes but only fails', fakeAsync(() => { + + route = { + data: { + permissions: { + except: ['canEditAgenda'], + only: ['canRunAgenda'], + redirectTo: { + canReadAgenda: 'agendaList', + canRunAgenda: 'dashboard', + canRun: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['dashboard']); + + }); + })); + + it('path if except and only passes', fakeAsync(() => { + fakeService.addPermission('canRunAgenda'); + route = { + data: { + permissions: { + except: ['canEditAgenda'], + only: ['canRunAgenda'], + redirectTo: { + canReadAgenda: 'agendaList', + canRunAgenda: 'dashboard', + canRun: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(true); + + }); + })); + + + it('redirect fail on can editAgenda and redirect to dashboard', fakeAsync(() => { + route = { + data: { + permissions: { + only: ['canReadAgenda', 'canEditAgenda', 'canRun'], + redirectTo: { + canReadAgenda: 'agendaList', + canEditAgenda: 'dashboard', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['dashboard']); + }); + })); + + it('redirect to dashboard when canEdit agenda fails only', fakeAsync(() => { + route = { + data: { + permissions: { + only: ['canReadAgenda', 'canEditAgenda', 'canRun'], + redirectTo: { + canReadAgenda: 'agendaList', + canEditAgenda: (_, state) => { + return 'dashboard'; + }, + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['dashboard']); + }); + })); + + it('redirect to dashboard when canEdit agenda fails with objectProperty only', fakeAsync(() => { + route = { + data: { + permissions: { + only: ['canEditAgenda', 'canRun'], + redirectTo: { + canReadAgenda: 'agendaList', + canEditAgenda: { + navigationCommands: ['123'], + navigationExtras: { + skipLocationChange: true + } + }, + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['123'], { skipLocationChange: true }); + }); + })); + + it('should redirect to 123 when redirect to multiple and used as function', fakeAsync(() => { + route = { + data: { + permissions: { + only: ['canReadAgenda', 'canEditAgenda', 'canRun'], + redirectTo: { + canReadAgenda: 'agendaList', + canEditAgenda: () => { + return { + navigationCommands: ['123'], + navigationExtras: { + skipLocationChange: true + } + }; + }, + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['123'], { skipLocationChange: true }); + }); + })); + + it('redirect to default when only fails but there is no redirection rule', fakeAsync(() => { + fakeService.addPermission('canEditAgenda'); + + route = { + data: { + permissions: { + only: ['canReadAgenda', 'canEditAgenda', 'Can run'], + redirectTo: { + canReadAgenda: 'agendaList', + canEditAgenda: 'dashboard', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + }); + })); + + + + it('sholud path when nothing fails in only blaock', fakeAsync(() => { + fakeService.addPermission('canEditAgenda'); + + route = { + data: { + permissions: { + only: ['canEditAgenda'], + redirectTo: { + canReadAgenda: 'agendaList', + canEditAgenda: 'dashboard', + canRun: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(true); + }); + })); +}); + +describe('Permissions guard test redirectTo path multiple redirectionRule permissions load as string', () => { + + let permissionGuard: NgxPermissionsGuard; + let fakeRouter; + let route; + let testRouter; + let fakeService; + beforeEach(() => { + TestBed.configureTestingModule({ + + imports: [NgxPermissionsModule.forRoot()] + }); + }); + beforeEach(inject([NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService) => { + fakeRouter = { navigate: () => { } }; + + service.addPermission('canReadAgenda'); + fakeService = service; + // fakeRouter = router; + spyOn(fakeRouter, 'navigate'); + permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); + })); + + it('should create an instance', () => { + expect(permissionGuard).toBeTruthy(); + }); + + it('sholud redirect dashboard can canRead Agenda fullfils can edit agenda fails', fakeAsync(() => { + route = { + data: { + permissions: { + except: 'canReadAgenda', + redirectTo: { + canReadAgenda: 'agendaList', + canEditAgenda: 'dashboard', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['agendaList']); + }); + })); + + it('sholud redirect to run when there is permission canRun and it fails', fakeAsync(() => { + fakeService.addPermission('canEditAgenda'); + + route = { + data: { + permissions: { + only: 'DELETE', + redirectTo: { + canReadAgenda: 'agendaList', + canEditAgenda: 'dashboard', + DELETE: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['run']); + }); + })); + + it('sholud path when nothing fails', fakeAsync(() => { + fakeService.addPermission('canEditAgenda'); + + route = { + data: { + permissions: { + except: 'aweomse', + redirectTo: { + canReadAgenda: 'agendaList', + canEditAgenda: 'dashboard', + canRun: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(true); + }); + })); + // + it('redirect to default route when except fails but there is no redirect rule for that permission', fakeAsync(() => { + + route = { + data: { + permissions: { + except: 'canReadAgenda', + redirectTo: { + canRun: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['login']); + + }); + })); + + it('redirect to only failed route when except passes but only fails', fakeAsync(() => { + + route = { + data: { + permissions: { + except: 'canEditAgenda', + only: 'canRunAgenda', + redirectTo: { + canReadAgenda: 'agendaList', + canRunAgenda: 'dashboard', + canRun: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['dashboard']); + }); + })); + + it('path if except and only passes', fakeAsync(() => { + fakeService.addPermission('canRunAgenda'); + route = { + data: { + permissions: { + except: 'canEditAgenda', + only: 'canRunAgenda', + redirectTo: { + canReadAgenda: 'agendaList', + canRunAgenda: 'dashboard', + canRun: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(true); + + }); + })); + + + + it('sholud path when nothing fails in only blaock', fakeAsync(() => { + fakeService.addPermission('canEditAgenda'); + route = { + data: { + permissions: { + only: 'canEditAgenda', + redirectTo: { + canReadAgenda: 'agendaList', + canEditAgenda: 'dashboard', + canRun: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(true); + }); + })); +}); + + +describe('Permissions guard test redirectTo path dynamic redirectionRule permissions load as string', () => { + + let permissionGuard: NgxPermissionsGuard; + let fakeRouter; + let route; + let testRouter; + let fakeService; + beforeEach(() => { + TestBed.configureTestingModule({ + + imports: [NgxPermissionsModule.forRoot()] + }); + }); + beforeEach(inject([NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService) => { + fakeRouter = { navigate: () => { } }; + + service.addPermission('canReadAgenda'); + fakeService = service; + // fakeRouter = router; + spyOn(fakeRouter, 'navigate'); + permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); + })); + + it('should create an instance', () => { + expect(permissionGuard).toBeTruthy(); + }); + + it('sholud redirect dashboard can canRead Agenda fullfils can edit agenda fails', fakeAsync(() => { + route = { + data: { + permissions: { + except: 'canReadAgenda', + redirectTo: { + canReadAgenda: 'agendaList', + canEditAgenda: 'dashboard', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['agendaList']); + }); + })); + + it('sholud redirect to run when there is permission canRun and it fails', fakeAsync(() => { + fakeService.addPermission('canEditAgenda'); + + route = { + data: { + permissions: { + only: 'DELETE', + redirectTo: { + canReadAgenda: 'agendaList', + canEditAgenda: 'dashboard', + DELETE: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['run']); + }); + })); + + it('sholud path when nothing fails', fakeAsync(() => { + fakeService.addPermission('canEditAgenda'); + + route = { + data: { + permissions: { + except: 'aweomse', + redirectTo: { + canReadAgenda: 'agendaList', + canEditAgenda: 'dashboard', + canRun: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(true); + }); + })); + // + it('redirect to default route when except fails but there is no redirect rule for that permission', fakeAsync(() => { + + route = { + data: { + permissions: { + except: 'canReadAgenda', + redirectTo: { + canRun: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['login']); + + }); + })); + + it('redirect to only failed route when except passes but only fails', fakeAsync(() => { + + route = { + data: { + permissions: { + except: 'canEditAgenda', + only: 'canRunAgenda', + redirectTo: { + canReadAgenda: 'agendaList', + canRunAgenda: 'dashboard', + canRun: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['dashboard']); + }); + })); + it('redirect to only failed route when except passes but only fails called as function', fakeAsync(() => { + + route = { + data: { + permissions: { + except: 'canEditAgenda', + only: 'canRunAgenda', + redirectTo: { + canReadAgenda: 'agendaList', + canRunAgenda: (failedPermissionName: any, b: any, c: any) => { + return failedPermissionName; + }, + canRun: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['canRunAgenda']); + }); + })); + + it('redirect to except failed route when except dont pass as a function', fakeAsync(() => { + + route = { + data: { + permissions: { + except: 'canReadAgenda', + only: 'canRunAgenda', + redirectTo: { + canReadAgenda: (failedPermissionName: any, b: any, c: any) => { + return failedPermissionName; + }, + canRun: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['canReadAgenda']); + }); + })); + + it('path if except and only passes', fakeAsync(() => { + fakeService.addPermission('canRunAgenda'); + route = { + data: { + permissions: { + except: 'canEditAgenda', + only: 'canRunAgenda', + redirectTo: { + canReadAgenda: 'agendaList', + canRunAgenda: 'dashboard', + canRun: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(true); + + }); + })); + + + + it('sholud path when nothing fails in only blaock', fakeAsync(() => { + fakeService.addPermission('canEditAgenda'); + route = { + data: { + permissions: { + only: 'canEditAgenda', + redirectTo: { + canReadAgenda: 'agendaList', + canEditAgenda: 'dashboard', + canRun: 'run', + default: 'login' + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(true); + }); + })); +}); + +describe('Permissions guard test redirectTo as function', () => { + + let permissionGuard: NgxPermissionsGuard; + let fakeRouter; + let route; + let testRouter; + let fakeService; + beforeEach(() => { + TestBed.configureTestingModule({ + + imports: [NgxPermissionsModule.forRoot()] + }); + }); + beforeEach(inject([NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService) => { + fakeRouter = { navigate: () => { } }; + + service.addPermission('canReadAgenda'); + fakeService = service; + // fakeRouter = router; + spyOn(fakeRouter, 'navigate'); + permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); + })); + + it('should create an instance', () => { + expect(permissionGuard).toBeTruthy(); + }); + + it('sholud redirect dashboard can canRead Agenda fullfils can edit agenda fails', fakeAsync(() => { + route = { + data: { + permissions: { + except: ['canEditAgenda', 'canReadAgenda', 'canRun'], + redirectTo: (failedPermission, _, state) => { + return failedPermission; + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['canReadAgenda']); + }); + })); + + it('it should dynamically redirect to failed route redirectoTo as fucntion', fakeAsync(() => { + route = { + data: { + permissions: { + only: ['canRun'], + redirectTo: (failedPermission, _, state) => { + return failedPermission; + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['canRun']); + }); + })); + + it('it should dynamically redirect to failed route redirectoTo as fucntion when except pass only fails', fakeAsync(() => { + route = { + data: { + permissions: { + except: 'nice', + only: ['canRun'], + redirectTo: (failedPermission, _, state) => { + return failedPermission; + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['canRun']); + }); + })); + + it('it should allow to pass when at least one of parameters allow passing and redirectToIsFunction', fakeAsync(() => { + function loginRedirect(activateRouteSnapshot: ActivatedRouteSnapshot, + routerStateSnapshot: RouterStateSnapshot) { + return 'login'; + } + route = { + data: { + permissions: { + only: ['canReadAgenda', 'CAN_SWIM'], + redirectTo: loginRedirect + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(true); + }); + })); + + it('it should allow to pass when at least except and only parameters passes the check', fakeAsync(() => { + function loginRedirect(permissonName, activateRouteSnapshot: ActivatedRouteSnapshot, + routerStateSnapshot: RouterStateSnapshot) { + localStorage.setItem('redirectUrl', routerStateSnapshot.url); + return 'login'; + } + route = { + data: { + permissions: { + except: ['Dont exist'], + only: ['CAN_SWIM', 'TROLOLO'], + redirectTo: loginRedirect + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['login']); + }); + })); + + + it('it should allow to pass when at least except parameters passes the check', fakeAsync(() => { + function loginRedirect(activateRouteSnapshot: ActivatedRouteSnapshot, + routerStateSnapshot: RouterStateSnapshot) { + return 'login'; + } + route = { + data: { + permissions: { + except: ['Dont exist', 'Me also doesnt exist'], + redirectTo: loginRedirect + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(true); + }); + })); +}); + + +describe('Role guard test redirectTo as function', () => { + + let permissionGuard: NgxPermissionsGuard; + let fakeRouter; + let route; + let testRouter; + let fakeService; + let roleService; + beforeEach(() => { + TestBed.configureTestingModule({ + + imports: [NgxPermissionsModule.forRoot()] + }); + }); + beforeEach(inject([NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService) => { + fakeRouter = { navigate: () => { } }; + + service.addPermission('canReadAgenda'); + service.addPermission('AWESOME'); + rolesService.addRole('ADMIN', ['AWESOME', 'canReadAgenda']); + roleService = rolesService; + fakeService = service; + // fakeRouter = router; + spyOn(fakeRouter, 'navigate'); + permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); + })); + + it('should create an instance', () => { + expect(permissionGuard).toBeTruthy(); + }); + + xit('Should redirect to failed permission', fakeAsync(() => { + route = { + data: { + permissions: { + except: ['ADMIN'], + redirectTo: { + AWESOME: 'agendaList', + SOMETHING: 'dashboard', + canRun: 'run', + default: 'login' + } + // redirectTo: (failedPermission, route, state) => { + // console.log(failedPermission); + // return failedPermission; + // } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['canReadAgenda']); + }); + })); + + + + it('it should dynamically redirect to failed route redirectoTo as fucntion', fakeAsync(() => { + route = { + data: { + permissions: { + only: ['canRun'], + redirectTo: (failedPermission, _, state) => { + return failedPermission; + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['canRun']); + }); + })); + + it('it should dynamically redirect to failed role route redirectoTo as fucntion', fakeAsync(() => { + roleService.addRole('RUN', ['BLABLA', 'BLABLA']); + + route = { + data: { + permissions: { + only: ['RUN'], + redirectTo: (failedPermission, _, state) => { + return failedPermission; + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + // expect(fakeRouter.navigate).toHaveBeenCalledWith(['canRun']); + }); + })); + + it('it should dynamically pass if one satisfies', fakeAsync(() => { + roleService.addRole('RUN', ['BLABLA', 'BLABLA']); + + route = { + data: { + permissions: { + only: ['RUN', 'AWESOME'], + redirectTo: (failedPermission, _, state) => { + return failedPermission; + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(true); + }); + })); + + it('it should dynamically redirect to failed route redirectoTo as fucntion when except pass only fails', fakeAsync(() => { + route = { + data: { + permissions: { + except: 'nice', + only: ['canRun'], + redirectTo: (failedPermission, _, state) => { + return failedPermission; + } + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['canRun']); + }); + })); + + it('it should allow to pass when at least one of parameters allow passing and redirectToIsFunction', fakeAsync(() => { + function loginRedirect(activateRouteSnapshot: ActivatedRouteSnapshot, + routerStateSnapshot: RouterStateSnapshot) { + return 'login'; + } + route = { + data: { + permissions: { + only: ['canReadAgenda', 'CAN_SWIM'], + redirectTo: loginRedirect + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(true); + }); + })); + + it('it should allow to pass when at least except and only parameters passes the check', fakeAsync(() => { + function loginRedirect(permissonName, activateRouteSnapshot: ActivatedRouteSnapshot, + routerStateSnapshot: RouterStateSnapshot) { + localStorage.setItem('redirectUrl', routerStateSnapshot.url); + return 'login'; + } + route = { + data: { + permissions: { + except: ['Dont exist'], + only: ['CAN_SWIM', 'TROLOLO'], + redirectTo: loginRedirect + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(false); + expect(fakeRouter.navigate).toHaveBeenCalledWith(['login']); + }); + })); + + + it('it should allow to pass when at least except parameters passes the check', fakeAsync(() => { + function loginRedirect(activateRouteSnapshot: ActivatedRouteSnapshot, + routerStateSnapshot: RouterStateSnapshot) { + return 'login'; + } + route = { + data: { + permissions: { + except: ['Dont exist', 'Me also doesnt exist'], + redirectTo: loginRedirect + }, + path: 'crisis-center/44' + } + }; + (>permissionGuard.canActivate(route, {} as RouterStateSnapshot)).then((data) => { + expect(data).toEqual(true); + }); + })); +}); diff --git a/src/router/permissions-guard.service.ts b/projects/ngx-permissions/src/lib/router/permissions-guard.service.ts similarity index 68% rename from src/router/permissions-guard.service.ts rename to projects/ngx-permissions/src/lib/router/permissions-guard.service.ts index aefba5e..f79732d 100644 --- a/src/router/permissions-guard.service.ts +++ b/projects/ngx-permissions/src/lib/router/permissions-guard.service.ts @@ -1,8 +1,14 @@ import { Injectable } from '@angular/core'; import { - ActivatedRouteSnapshot, CanActivate, CanActivateChild, CanLoad, NavigationExtras, Route, Router, RouterStateSnapshot + ActivatedRouteSnapshot, + CanActivate, + CanActivateChild, + CanLoad, + NavigationExtras, + Route, + Router, + RouterStateSnapshot, } from '@angular/router'; - import { forkJoin, from, Observable, of } from 'rxjs'; import { first, mergeMap, tap } from 'rxjs/operators'; @@ -11,6 +17,9 @@ import { NgxPermissionsService } from '../service/permissions.service'; import { NgxRolesService } from '../service/roles.service'; import { isFunction, isPlainObject, transformStringToArray } from '../utils/utils'; + + + interface NgxRedirectToNavigationParameters { navigationCommands: any[] | Function; navigationExtras?: NavigationExtras | Function; @@ -19,7 +28,7 @@ interface NgxRedirectToNavigationParameters { @Injectable() export class NgxPermissionsGuard implements CanActivate, CanLoad, CanActivateChild { - constructor(private permissionsService: NgxPermissionsService, private rolesService: NgxRolesService, private router: Router) { + constructor(private permissionsService: NgxPermissionsService, private rolesService: NgxRolesService, private router: Router) { } canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise | boolean { @@ -35,7 +44,7 @@ export class NgxPermissionsGuard implements CanActivate, CanLoad, CanActivateChi } private hasPermissions(route: ActivatedRouteSnapshot | Route, state?: RouterStateSnapshot) { - const purePermissions = !!route && route.data ? route.data[ 'permissions' ] as NgxPermissionsRouterData : {}; + const purePermissions = !!route && route.data ? route.data['permissions'] as NgxPermissionsRouterData : {}; let permissions: NgxPermissionsRouterData = this.transformPermission(purePermissions, route, state); if (this.isParameterAvailable(permissions.except)) { @@ -73,8 +82,8 @@ export class NgxPermissionsGuard implements CanActivate, CanLoad, CanActivateChi } private passingExceptPermissionsValidation(permissions: NgxPermissionsRouterData, route: any, state: any) { - if (!!permissions.redirectTo && ((isFunction(permissions.redirectTo)) || (isPlainObject(permissions.redirectTo) && !this.isRedirectionWithParameters( - permissions.redirectTo)))) { + if (!!permissions.redirectTo && (isFunction(permissions.redirectTo) || + (isPlainObject(permissions.redirectTo) && !this.isRedirectionWithParameters(permissions.redirectTo)))) { let failedPermission = ''; return from(permissions.except as any[]).pipe( @@ -83,14 +92,14 @@ export class NgxPermissionsGuard implements CanActivate, CanLoad, CanActivateChi this.permissionsService.hasPermission(data), this.rolesService.hasOnlyRoles(data) ]).pipe(tap((hasPermissions: boolean[]) => { - const dontHavePermissions = hasPermissions.every((data) => data === false); + const dontHavePermissions = hasPermissions.every((_data) => _data === false); if (!dontHavePermissions) { failedPermission = data; } })); }), - first((data: any) => data.some((data: boolean) => data === true), false), + first((data: any) => data.some((_data: boolean) => _data === true), false), mergeMap((isAllFalse) => { if (!!failedPermission) { this.handleRedirectOfFailedPermission(permissions, failedPermission, route, state); @@ -107,22 +116,24 @@ export class NgxPermissionsGuard implements CanActivate, CanLoad, CanActivateChi ).toPromise(); } - return Promise.all([ this.permissionsService.hasPermission(permissions.except), this.rolesService.hasOnlyRoles(permissions.except) ]) - .then(([ permissionsPr, roles ]) => { - if (permissionsPr || roles) { - if (permissions.redirectTo) { - this.redirectToAnotherRoute(permissions.redirectTo, route, state); - return false; - } else { - return false; - } - } else { - if (permissions.only) { - return this.checkOnlyPermissions(permissions, route, state); - } - return true; - } - }); + return Promise.all([ + this.permissionsService.hasPermission(permissions.except), + this.rolesService.hasOnlyRoles(permissions.except) + ]).then(([permissionsPr, roles]) => { + if (permissionsPr || roles) { + if (permissions.redirectTo) { + this.redirectToAnotherRoute(permissions.redirectTo, route, state); + return false; + } else { + return false; + } + } else { + if (permissions.only) { + return this.checkOnlyPermissions(permissions, route, state); + } + return true; + } + }); } private redirectToAnotherRoute( @@ -137,22 +148,24 @@ export class NgxPermissionsGuard implements CanActivate, CanLoad, CanActivateChi if (this.isRedirectionWithParameters(redirectTo)) { if (this.hasNavigationExtrasAsFunction(redirectTo)) { - (redirectTo).navigationExtras = ((redirectTo).navigationExtras as Function)( - route, - state - ); + (redirectTo).navigationExtras = + ((redirectTo).navigationExtras as Function)( + route, + state + ); } if (this.hasNavigationCommandsAsFunction(redirectTo)) { - (redirectTo).navigationCommands = ((redirectTo).navigationCommands as Function)( - route, - state - ); + (redirectTo).navigationCommands = + ((redirectTo).navigationCommands as Function)( + route, + state + ); } this.router.navigate( ((redirectTo).navigationCommands as any[]), - (( redirectTo).navigationExtras as NavigationExtras) + ((redirectTo).navigationExtras as NavigationExtras) ); return; @@ -161,7 +174,7 @@ export class NgxPermissionsGuard implements CanActivate, CanLoad, CanActivateChi if (Array.isArray(redirectTo)) { this.router.navigate(redirectTo); } else { - this.router.navigate([ redirectTo ]); + this.router.navigate([redirectTo]); } } @@ -170,13 +183,13 @@ export class NgxPermissionsGuard implements CanActivate, CanLoad, CanActivateChi } private hasNavigationExtrasAsFunction(redirectTo: any): boolean { - return !!( redirectTo).navigationExtras && - isFunction(( redirectTo).navigationExtras); + return !!(redirectTo).navigationExtras && + isFunction((redirectTo).navigationExtras); } private hasNavigationCommandsAsFunction(redirectTo: any): boolean { - return !!( redirectTo).navigationCommands && - isFunction(( redirectTo).navigationCommands); + return !!(redirectTo).navigationCommands && + isFunction((redirectTo).navigationCommands); } private onlyRedirectCheck(permissions: any, route: ActivatedRouteSnapshot | Route, state?: RouterStateSnapshot): Promise { @@ -189,7 +202,7 @@ export class NgxPermissionsGuard implements CanActivate, CanLoad, CanActivateChi this.rolesService.hasOnlyRoles(data) ]).pipe( tap((hasPermission: boolean[]) => { - const failed = hasPermission.every((data) => data === false); + const failed = hasPermission.every((_data) => _data === false); if (failed) { failedPermission = data; @@ -200,10 +213,10 @@ export class NgxPermissionsGuard implements CanActivate, CanLoad, CanActivateChi first( (data: any) => { if (isFunction(permissions.redirectTo)) { - return data.some((data: boolean) => data === true); + return data.some((_data: boolean) => _data === true); } - return data.every((data: boolean) => data === false); + return data.every((_data: boolean) => _data === false); }, false ), @@ -232,18 +245,18 @@ export class NgxPermissionsGuard implements CanActivate, CanLoad, CanActivateChi state?: RouterStateSnapshot ) { if (this.isFailedPermissionPropertyOfRedirectTo(permissions, failedPermission)) { - this.redirectToAnotherRoute((permissions.redirectTo)[ failedPermission ], route, state, failedPermission); + this.redirectToAnotherRoute((permissions.redirectTo)[failedPermission], route, state, failedPermission); } else { if (isFunction(permissions.redirectTo)) { this.redirectToAnotherRoute((permissions.redirectTo), route, state, failedPermission); } else { - this.redirectToAnotherRoute((permissions.redirectTo)[ 'default' ], route, state, failedPermission); + this.redirectToAnotherRoute((permissions.redirectTo)['default'], route, state, failedPermission); } } } private isFailedPermissionPropertyOfRedirectTo(permissions: any, failedPermission: string) { - return !!permissions.redirectTo && permissions.redirectTo[ failedPermission ]; + return !!permissions.redirectTo && permissions.redirectTo[failedPermission]; } private checkOnlyPermissions(purePermissions: any, route: ActivatedRouteSnapshot | Route, state?: RouterStateSnapshot) { @@ -251,24 +264,28 @@ export class NgxPermissionsGuard implements CanActivate, CanLoad, CanActivateChi ...purePermissions }; - return Promise.all([ this.permissionsService.hasPermission(permissions.only), this.rolesService.hasOnlyRoles(permissions.only) ]) - .then(([ permissionsPr, roles ]) => { - if (permissionsPr || roles) { - return true; - } else { - if (permissions.redirectTo) { - this.redirectToAnotherRoute(permissions.redirectTo, route, state); - return false; - } else { - return false; - } - } - }); + return Promise.all([ + this.permissionsService.hasPermission(permissions.only), + this.rolesService.hasOnlyRoles(permissions.only) + ]).then(([permissionsPr, roles]) => { + if (permissionsPr || roles) { + return true; + } else { + if (permissions.redirectTo) { + this.redirectToAnotherRoute(permissions.redirectTo, route, state); + return false; + } else { + return false; + } + } + }); } - private passingOnlyPermissionsValidation(permissions: NgxPermissionsRouterData, route: ActivatedRouteSnapshot | Route, state?: RouterStateSnapshot) { - if ((isFunction(permissions.redirectTo) || isPlainObject(permissions.redirectTo) && !this.isRedirectionWithParameters(permissions.redirectTo))) { - return this.onlyRedirectCheck(permissions, route, state) + private passingOnlyPermissionsValidation( + permissions: NgxPermissionsRouterData, route: ActivatedRouteSnapshot | Route, state?: RouterStateSnapshot) { + if ((isFunction(permissions.redirectTo) || + isPlainObject(permissions.redirectTo) && !this.isRedirectionWithParameters(permissions.redirectTo))) { + return this.onlyRedirectCheck(permissions, route, state); } return this.checkOnlyPermissions(permissions, route, state); } diff --git a/src/service/configuration.service.spec.ts b/projects/ngx-permissions/src/lib/service/configuration.service.spec.ts similarity index 62% rename from src/service/configuration.service.spec.ts rename to projects/ngx-permissions/src/lib/service/configuration.service.spec.ts index 3d1a45e..284be70 100644 --- a/src/service/configuration.service.spec.ts +++ b/projects/ngx-permissions/src/lib/service/configuration.service.spec.ts @@ -1,10 +1,10 @@ -import { fakeAsync, inject, TestBed } from '@angular/core/testing'; +import { TestBed, inject } from '@angular/core/testing'; import { NgxPermissionsModule } from '../index'; import { NgxPermissionsConfigurationService } from './configuration.service'; const StrategiesFunction = { - FUNCTION: () => {}, -} + FUNCTION: () => { }, +}; describe('Configuration Service', () => { let localService: NgxPermissionsConfigurationService; @@ -23,38 +23,38 @@ describe('Configuration Service', () => { expect(localService).toBeTruthy(); }); - it ('should add configuration function', () => { + it('should add configuration function', () => { expect(localService.getAllStrategies()['FUNCTION']).toBeFalsy(); - localService.addPermissionStrategy('FUNCTION', () => {}); + localService.addPermissionStrategy('FUNCTION', () => { }); expect(localService.getAllStrategies()['FUNCTION']).toBeTruthy(); }); - it ('should retrieve strategy function', () => { + it('should retrieve strategy function', () => { expect(localService.getStrategy('FUNCTION')).toBeFalsy(); - localService.addPermissionStrategy('FUNCTION', () => {}); + localService.addPermissionStrategy('FUNCTION', () => { }); expect(localService.getStrategy('FUNCTION')).toBeTruthy(); }); - it ('should throw an error when strategy is not defined but user tries to set it as default on authorised method', () => { - expect(function () { localService.setDefaultOnAuthorizedStrategy('FUNCTION')}).toThrow(); + it('should throw an error when strategy is not defined but user tries to set it as default on authorised method', () => { + expect(function () { localService.setDefaultOnAuthorizedStrategy('FUNCTION'); }).toThrow(); }); - it ('should throw an error when strategy is not defined but user tries to set it as default on unauthorised method', () => { - expect(function () { localService.setDefaultOnUnauthorizedStrategy('FUNCTION')}).toThrow(); + it('should throw an error when strategy is not defined but user tries to set it as default on unauthorised method', () => { + expect(function () { localService.setDefaultOnUnauthorizedStrategy('FUNCTION'); }).toThrow(); }); - it ('should set default unauthorised method with string', () => { - localService.addPermissionStrategy('FUNCTION', () => {}); + it('should set default unauthorised method with string', () => { + localService.addPermissionStrategy('FUNCTION', () => { }); localService.setDefaultOnUnauthorizedStrategy('FUNCTION'); expect(localService.onUnAuthorisedDefaultStrategy).toBeTruthy(); expect(localService.onUnAuthorisedDefaultStrategy).toEqual('FUNCTION'); }); - it ('should set default authorised method with string', () => { - localService.addPermissionStrategy('FUNCTION', () => {}); + it('should set default authorised method with string', () => { + localService.addPermissionStrategy('FUNCTION', () => { }); localService.setDefaultOnAuthorizedStrategy('FUNCTION'); expect(localService.onAuthorisedDefaultStrategy).toBeTruthy(); expect(localService.onAuthorisedDefaultStrategy).toEqual('FUNCTION'); }); -}); \ No newline at end of file +}); diff --git a/src/service/configuration.service.ts b/projects/ngx-permissions/src/lib/service/configuration.service.ts similarity index 100% rename from src/service/configuration.service.ts rename to projects/ngx-permissions/src/lib/service/configuration.service.ts diff --git a/src/service/permissions.service.spec.ts b/projects/ngx-permissions/src/lib/service/permissions.service.spec.ts similarity index 85% rename from src/service/permissions.service.spec.ts rename to projects/ngx-permissions/src/lib/service/permissions.service.spec.ts index 59ecbef..0cfe171 100644 --- a/src/service/permissions.service.spec.ts +++ b/projects/ngx-permissions/src/lib/service/permissions.service.spec.ts @@ -1,9 +1,9 @@ -import { NgxPermissionsService } from './permissions.service'; -import { fakeAsync, inject, TestBed } from '@angular/core/testing'; +import { TestBed, fakeAsync, inject } from '@angular/core/testing'; import { NgxPermissionsModule } from '../index'; import { NgxPermission } from '../model/permission.model'; +import { NgxPermissionsService } from './permissions.service'; enum PermissionsNamesEnum { ADMIN = 'ADMIN', @@ -26,13 +26,13 @@ describe('Permissions Service', () => { expect(localService).toBeTruthy(); }); - it ('should add permission to permission object', () => { + it('should add permission to permission object', () => { expect(localService.getPermission(PermissionsNamesEnum.ADMIN)).toBeFalsy(); localService.addPermission(PermissionsNamesEnum.ADMIN); expect(localService.getPermission(PermissionsNamesEnum.ADMIN)).toBeTruthy(); - }) + }); // - it ('should remove permission from role object', () => { + it('should remove permission from role object', () => { expect(localService.getPermissions()[PermissionsNamesEnum.ADMIN]).toBeFalsy(); localService.addPermission(PermissionsNamesEnum.ADMIN, ); expect(localService.getPermissions()[PermissionsNamesEnum.ADMIN]).toBeTruthy(); @@ -40,7 +40,7 @@ describe('Permissions Service', () => { expect(localService.getPermissions()[PermissionsNamesEnum.ADMIN]).toBeFalsy(); }); - it ('should remove all permisssions from object', () => { + it('should remove all permisssions from object', () => { expect(Object.keys(localService.getPermissions()).length).toEqual(0); localService.addPermission(PermissionsNamesEnum.ADMIN, ); localService.addPermission(PermissionsNamesEnum.GUEST, ); @@ -49,18 +49,19 @@ describe('Permissions Service', () => { expect(Object.keys(localService.getPermissions()).length).toEqual(0); }); - it ('should add multiple permissions', () => { + it('should add multiple permissions', () => { expect(Object.keys(localService.getPermissions()).length).toEqual(0); localService.addPermission([PermissionsNamesEnum.ADMIN, PermissionsNamesEnum.GUEST]); expect(Object.keys(localService.getPermissions()).length).toEqual(2); expect(localService.getPermissions()).toEqual( { - ADMIN: {name: "ADMIN"}, - GUEST: {name: "GUEST"}}); + ADMIN: { name: 'ADMIN' }, + GUEST: { name: 'GUEST' } + }); }); - it ('return true when permission name is present in permissions object', fakeAsync(() => { + it('return true when permission name is present in permissions object', fakeAsync(() => { expect(Object.keys(localService.getPermissions()).length).toEqual(0); localService.addPermission([PermissionsNamesEnum.ADMIN, PermissionsNamesEnum.GUEST]); @@ -81,10 +82,10 @@ describe('Permissions Service', () => { }); })); - it ('return true when role permission function return true', fakeAsync(() => { + it('return true when role permission function return true', fakeAsync(() => { expect(Object.keys(localService.getPermissions()).length).toEqual(0); localService.addPermission(PermissionsNamesEnum.ADMIN, () => { - return true + return true; }); expect(Object.keys(localService.getPermissions()).length).toEqual(1); localService.hasPermission('ADMIN').then((data) => { @@ -92,7 +93,7 @@ describe('Permissions Service', () => { }); localService.addPermission(PermissionsNamesEnum.GUEST, () => { - return false + return false; }); expect(Object.keys(localService.getPermissions()).length).toEqual(2); localService.hasPermission('GUEST').then((data) => { @@ -100,14 +101,14 @@ describe('Permissions Service', () => { }); localService.addPermission('TEST1', () => { - return Promise.resolve(true) + return Promise.resolve(true); }); expect(Object.keys(localService.getPermissions()).length).toEqual(3); localService.hasPermission('TEST1').then((data) => { expect(data).toEqual(true); }); localService.addPermission('TEST2', () => { - return Promise.resolve(false) + return Promise.resolve(false); }); expect(Object.keys(localService.getPermissions()).length).toEqual(4); localService.hasPermission('TEST2').then((data) => { @@ -123,10 +124,10 @@ describe('Permissions Service', () => { // }); })); - it ('return true when role permissions[array] function return true', fakeAsync(() => { + it('return true when role permissions[array] function return true', fakeAsync(() => { expect(Object.keys(localService.getPermissions()).length).toEqual(0); localService.addPermission([PermissionsNamesEnum.ADMIN], () => { - return true + return true; }); expect(Object.keys(localService.getPermissions()).length).toEqual(1); @@ -135,7 +136,7 @@ describe('Permissions Service', () => { }); localService.addPermission([PermissionsNamesEnum.GUEST], () => { - return false + return false; }); expect(Object.keys(localService.getPermissions()).length).toEqual(2); localService.hasPermission('GUEST').then((data) => { @@ -143,14 +144,14 @@ describe('Permissions Service', () => { }); localService.addPermission(['TEST1'], () => { - return Promise.resolve(true) + return Promise.resolve(true); }); expect(Object.keys(localService.getPermissions()).length).toEqual(3); localService.hasPermission('TEST1').then((data) => { expect(data).toEqual(true); }); localService.addPermission(['TEST9'], () => { - return Promise.resolve(false) + return Promise.resolve(false); }); expect(Object.keys(localService.getPermissions()).length).toEqual(4); localService.hasPermission(['TEST9']).then((data) => { @@ -158,7 +159,7 @@ describe('Permissions Service', () => { }); localService.addPermission(['TEST11'], (name, store) => { - return Promise.resolve(false) + return Promise.resolve(false); }); @@ -171,13 +172,13 @@ describe('Permissions Service', () => { // }); })); - it ('return call function with name and store in array', fakeAsync(() => { + it('return call function with name and store in array', fakeAsync(() => { localService.addPermission(['TEST11'], (n, store) => { expect(n).toEqual('TEST11'); expect(n).toEqual('TEST11'); expect(store['TEST11']).toBeTruthy(); - return Promise.resolve(n) + return Promise.resolve(n); }); expect(Object.keys(localService.getPermissions()).length).toEqual(1); localService.hasPermission(['TEST11']).then((data) => { @@ -185,12 +186,12 @@ describe('Permissions Service', () => { }); })); - it ('return call function with name and store in string', fakeAsync(() => { + it('return call function with name and store in string', fakeAsync(() => { localService.addPermission(['TEST11'], (n, store) => { expect(n).toEqual('TEST11'); expect(n).toEqual('TEST11'); expect(store['TEST11']).toBeTruthy(); - return Promise.resolve(true) + return Promise.resolve(true); }); expect(Object.keys(localService.getPermissions()).length).toEqual(1); localService.hasPermission('TEST11').then((data) => { @@ -202,13 +203,13 @@ describe('Permissions Service', () => { localService.hasPermission('').then((data) => { expect(data).toEqual(true); }); - })) + })); it('should return true when called with empty array', fakeAsync(() => { localService.hasPermission([]).then((data) => { expect(data).toEqual(true); }); - })) + })); }); @@ -218,5 +219,5 @@ describe('Permissions Service model', () => { let permission = new NgxPermission('permission', () => true); expect(permission.name).toBe('permission'); expect((permission.validationFunction as Function)()).toBe(true); - }) -}); \ No newline at end of file + }); +}); diff --git a/src/service/permissions.service.ts b/projects/ngx-permissions/src/lib/service/permissions.service.ts similarity index 100% rename from src/service/permissions.service.ts rename to projects/ngx-permissions/src/lib/service/permissions.service.ts diff --git a/src/service/roles.service.spec.ts b/projects/ngx-permissions/src/lib/service/roles.service.spec.ts similarity index 80% rename from src/service/roles.service.spec.ts rename to projects/ngx-permissions/src/lib/service/roles.service.spec.ts index dfa2a73..6e06af3 100644 --- a/src/service/roles.service.spec.ts +++ b/projects/ngx-permissions/src/lib/service/roles.service.spec.ts @@ -1,9 +1,8 @@ -import { NgxRolesService } from './roles.service'; -import { fakeAsync, inject, TestBed } from '@angular/core/testing'; -import { NgxRolesStore } from '../store/roles.store'; +import { TestBed, fakeAsync, inject } from '@angular/core/testing'; import { NgxPermissionsModule } from '../index'; import { NgxRole } from '../model/role.model'; import { NgxPermissionsService } from './permissions.service'; +import { NgxRolesService } from './roles.service'; enum RoleNamesEnum { ADMIN = 'ADMIN', @@ -29,16 +28,16 @@ describe('Roles Service', () => { expect(localService).toBeTruthy(); }); - it ('should add role to role object', () => { + it('should add role to role object', () => { expect(localService.getRoles()[RoleNamesEnum.ADMIN]).toBeFalsy(); localService.addRole(RoleNamesEnum.ADMIN, ['edit', 'remove']); expect(localService.getRoles()[RoleNamesEnum.ADMIN]).toBeTruthy(); expect(localService.getRoles()).toEqual( - {ADMIN: {name: 'ADMIN', validationFunction: ['edit', 'remove']}} - ) + { ADMIN: { name: 'ADMIN', validationFunction: ['edit', 'remove'] } } + ); }); - it ('should remove role from role object', () => { + it('should remove role from role object', () => { expect(localService.getRoles()[RoleNamesEnum.ADMIN]).toBeFalsy(); localService.addRole(RoleNamesEnum.ADMIN, ['edit', 'remove']); expect(localService.getRoles()[RoleNamesEnum.ADMIN]).toBeTruthy(); @@ -46,7 +45,7 @@ describe('Roles Service', () => { expect(localService.getRoles()[RoleNamesEnum.ADMIN]).toBeFalsy(); }); - it ('should remove all roles from object', () => { + it('should remove all roles from object', () => { expect(Object.keys(localService.getRoles()).length).toEqual(0); localService.addRole(RoleNamesEnum.ADMIN, ['edit', 'remove']); localService.addRole(RoleNamesEnum.GUEST, ['edit', 'remove']); @@ -55,25 +54,26 @@ describe('Roles Service', () => { expect(Object.keys(localService.getRoles()).length).toEqual(0); }); - it ('should add multiple roles', () => { + it('should add multiple roles', () => { expect(Object.keys(localService.getRoles()).length).toEqual(0); localService.addRoles({ - ADMIN: ['Nice'], - GUEST: ["Awesome"] + ADMIN: ['Nice'], + GUEST: ['Awesome'] }); expect(Object.keys(localService.getRoles()).length).toEqual(2); expect(localService.getRoles()).toEqual( { - ADMIN: {name: "ADMIN", validationFunction: ['Nice']}, - GUEST: {name: "GUEST", validationFunction: ['Awesome']}}) + ADMIN: { name: 'ADMIN', validationFunction: ['Nice'] }, + GUEST: { name: 'GUEST', validationFunction: ['Awesome'] } + }); }); - it ('return true when role name is present in Roles object', fakeAsync(() => { + it('return true when role name is present in Roles object', fakeAsync(() => { expect(Object.keys(localService.getRoles()).length).toEqual(0); localService.addRoles({ ADMIN: ['Nice'], - GUEST: ["Awesome"] + GUEST: ['Awesome'] }); expect(Object.keys(localService.getRoles()).length).toEqual(2); @@ -98,12 +98,12 @@ describe('Roles Service', () => { }); })); - it ('return true when role permission name is present in Roles object', fakeAsync(() => { + it('return true when role permission name is present in Roles object', fakeAsync(() => { expect(Object.keys(localService.getRoles()).length).toEqual(0); permissionsService.addPermission(['Nice', 'Awesome']); localService.addRoles({ ADMIN: ['Nice'], - GUEST: ["Awesome"] + GUEST: ['Awesome'] }); @@ -134,13 +134,13 @@ describe('Roles Service', () => { expect((role.validationFunction as Function)()).toEqual(true); })); - it ('should return true when checking with empty permisssion(not specified)', fakeAsync(() => { + it('should return true when checking with empty permisssion(not specified)', fakeAsync(() => { localService.hasOnlyRoles('').then((data) => { expect(data).toEqual(true); }); })); - it ('should return false when permission array is empty', fakeAsync(() => { + it('should return false when permission array is empty', fakeAsync(() => { localService.hasOnlyRoles('Empty').then((data) => { expect(data).toEqual(false); }); @@ -167,12 +167,12 @@ describe('Roles Service', () => { }); })); - it('should check role permissions with "and" operator', fakeAsync(() => { + it(`should check role permissions with 'and' operator`, fakeAsync(() => { permissionsService.addPermission(['one', 'two']); localService.addRole('test', ['one', 'two']); localService.hasOnlyRoles('test').then((data) => { expect(data).toBe(true); - }) + }); })); @@ -181,11 +181,11 @@ describe('Roles Service', () => { localService.addRole('test', ['one', 'two']); localService.hasOnlyRoles('test').then((data) => { expect(data).toBe(false); - }) + }); })); xit('maybe add functionality when function returns array', fakeAsync(() => { - localService.addRole('test', () => {return ['nice']}); + localService.addRole('test', () => ['nice']); localService.hasOnlyRoles(['nice']).then((data) => { expect(data).toBe(true); }); @@ -193,9 +193,9 @@ describe('Roles Service', () => { }); describe('Roles Service model', () => { - it('should create role mode', () => { - let roleModel = new NgxRole('role', () => true); - expect(roleModel.name).toBe('role'); - expect((roleModel.validationFunction as Function)()).toBe(true); - }) -}); \ No newline at end of file + it('should create role mode', () => { + let roleModel = new NgxRole('role', () => true); + expect(roleModel.name).toBe('role'); + expect((roleModel.validationFunction as Function)()).toBe(true); + }); +}); diff --git a/src/service/roles.service.ts b/projects/ngx-permissions/src/lib/service/roles.service.ts similarity index 73% rename from src/service/roles.service.ts rename to projects/ngx-permissions/src/lib/service/roles.service.ts index 9200efa..c7f4020 100644 --- a/src/service/roles.service.ts +++ b/projects/ngx-permissions/src/lib/service/roles.service.ts @@ -1,8 +1,6 @@ import { Inject, Injectable, InjectionToken } from '@angular/core'; - -import { BehaviorSubject, from, Observable, ObservableInput, of } from 'rxjs'; +import { BehaviorSubject, Observable, ObservableInput, from, of } from 'rxjs'; import { catchError, every, first, map, mergeAll, mergeMap, switchMap } from 'rxjs/operators'; - import { NgxRole } from '../model/role.model'; import { NgxRolesStore } from '../store/roles.store'; import { isBoolean, isFunction, isPromise, transformStringToArray } from '../utils/utils'; @@ -10,7 +8,7 @@ import { NgxPermissionsService } from './permissions.service'; export const USE_ROLES_STORE = new InjectionToken('USE_ROLES_STORE'); -export type NgxRolesObject = { [ name: string ]: NgxRole }; +export type NgxRolesObject = { [name: string]: NgxRole }; @Injectable() export class NgxRolesService { @@ -31,14 +29,14 @@ export class NgxRolesService { public addRole(name: string, validationFunction: Function | string[]) { const roles = { ...this.rolesSource.value, - [ name ]: { name, validationFunction } + [name]: { name, validationFunction } }; this.rolesSource.next(roles); } - public addRoles(rolesObj: { [ name: string ]: Function | string[] }) { + public addRoles(rolesObj: { [name: string]: Function | string[] }) { Object.keys(rolesObj).forEach((key, index) => { - this.addRole(key, rolesObj[ key ]); + this.addRole(key, rolesObj[key]); }); } @@ -50,7 +48,7 @@ export class NgxRolesService { let roles = { ...this.rolesSource.value }; - delete roles[ roleName ]; + delete roles[roleName]; this.rolesSource.next(roles); } @@ -59,7 +57,7 @@ export class NgxRolesService { } public getRole(name: string) { - return this.rolesSource.value[ name ]; + return this.rolesSource.value[name]; } public hasOnlyRoles(names: string | string[]): Promise { @@ -69,21 +67,21 @@ export class NgxRolesService { names = transformStringToArray(names); - return Promise.all([ this.hasRoleKey(names), this.hasRolePermission(this.rolesSource.value, names) ]) - .then(([ hasRoles, hasPermissions ]: [ boolean, boolean ]) => { - return hasRoles || hasPermissions; - }); + return Promise.all([this.hasRoleKey(names), this.hasRolePermission(this.rolesSource.value, names)]) + .then(([hasRoles, hasPermissions]: [boolean, boolean]) => { + return hasRoles || hasPermissions; + }); } private hasRoleKey(roleName: string[]): Promise { const promises: Observable[] = roleName.map((key) => { if ( - !!this.rolesSource.value[ key ] && - !!this.rolesSource.value[ key ].validationFunction && - isFunction(this.rolesSource.value[ key ].validationFunction) && - !isPromise(this.rolesSource.value[ key ].validationFunction) + !!this.rolesSource.value[key] && + !!this.rolesSource.value[key].validationFunction && + isFunction(this.rolesSource.value[key].validationFunction) && + !isPromise(this.rolesSource.value[key].validationFunction) ) { - const validationFunction: Function = this.rolesSource.value[ key ].validationFunction; + const validationFunction: Function = this.rolesSource.value[key].validationFunction; return of(null).pipe( map(() => validationFunction()), @@ -106,8 +104,8 @@ export class NgxRolesService { private hasRolePermission(roles: NgxRolesObject, roleNames: string[]): Promise { return from(roleNames).pipe( mergeMap((key) => { - if (roles[ key ] && Array.isArray(roles[ key ].validationFunction)) { - return from(roles[ key ].validationFunction).pipe( + if (roles[key] && Array.isArray(roles[key].validationFunction)) { + return from(roles[key].validationFunction).pipe( mergeMap((permission) => this.permissionsService.hasPermission(permission)), every((hasPermissions) => hasPermissions === true) ); diff --git a/src/store/configuration.store.ts b/projects/ngx-permissions/src/lib/store/configuration.store.ts similarity index 100% rename from src/store/configuration.store.ts rename to projects/ngx-permissions/src/lib/store/configuration.store.ts diff --git a/src/store/permissions.store.ts b/projects/ngx-permissions/src/lib/store/permissions.store.ts similarity index 100% rename from src/store/permissions.store.ts rename to projects/ngx-permissions/src/lib/store/permissions.store.ts diff --git a/src/store/roles.store.ts b/projects/ngx-permissions/src/lib/store/roles.store.ts similarity index 100% rename from src/store/roles.store.ts rename to projects/ngx-permissions/src/lib/store/roles.store.ts diff --git a/src/testing/permissions-allow.directive.stub.spec.ts b/projects/ngx-permissions/src/lib/testing/permissions-allow.directive.stub.spec.ts similarity index 76% rename from src/testing/permissions-allow.directive.stub.spec.ts rename to projects/ngx-permissions/src/lib/testing/permissions-allow.directive.stub.spec.ts index 059d8e7..0997a43 100644 --- a/src/testing/permissions-allow.directive.stub.spec.ts +++ b/projects/ngx-permissions/src/lib/testing/permissions-allow.directive.stub.spec.ts @@ -1,10 +1,12 @@ import { Component } from '@angular/core'; -import { fakeAsync, TestBed, tick } from '@angular/core/testing'; +import { TestBed, fakeAsync, tick } from '@angular/core/testing'; import { NgxPermissionsAllowStubDirective } from './permissions-allow.directive.stub'; describe('Permissions stub testing only original template', () => { - @Component({selector: 'test-comp', - template: `
                                                                              123
                                                                              `}) + @Component({ + selector: 'test-comp', + template: `
                                                                              123
                                                                              ` + }) class TestComp { data: any; } @@ -12,12 +14,12 @@ describe('Permissions stub testing only original template', () => { let fixture: any; let comp; beforeEach(() => { - TestBed.configureTestingModule({declarations: [TestComp, NgxPermissionsAllowStubDirective]}); + TestBed.configureTestingModule({ declarations: [TestComp, NgxPermissionsAllowStubDirective] }); fixture = TestBed.createComponent(TestComp); comp = fixture.componentInstance; }); - it ('Should show the component', fakeAsync(() => { + it('Should show the component', fakeAsync(() => { detectChanges(fixture); let content = fixture.debugElement.nativeElement.querySelector('div'); @@ -36,8 +38,10 @@ describe('Permissions stub testing only original template', () => { }); describe('Permissions stub testing except template', () => { - @Component({selector: 'test-comp', - template: `
                                                                              123
                                                                              `}) + @Component({ + selector: 'test-comp', + template: `
                                                                              123
                                                                              ` + }) class TestComp { data: any; } @@ -45,12 +49,12 @@ describe('Permissions stub testing except template', () => { let fixture: any; let comp; beforeEach(() => { - TestBed.configureTestingModule({declarations: [TestComp, NgxPermissionsAllowStubDirective]}); + TestBed.configureTestingModule({ declarations: [TestComp, NgxPermissionsAllowStubDirective] }); fixture = TestBed.createComponent(TestComp); comp = fixture.componentInstance; }); - it ('Should show the component', fakeAsync(() => { + it('Should show the component', fakeAsync(() => { detectChanges(fixture); let content = fixture.debugElement.nativeElement.querySelector('div'); @@ -61,7 +65,8 @@ describe('Permissions stub testing except template', () => { describe('Permissions stub testing only then template', () => { - @Component({selector: 'test-comp', + @Component({ + selector: 'test-comp', template: `
                                                                              @@ -79,12 +84,12 @@ describe('Permissions stub testing only then template', () => { let fixture: any; let comp; beforeEach(() => { - TestBed.configureTestingModule({declarations: [TestComp, NgxPermissionsAllowStubDirective]}); + TestBed.configureTestingModule({ declarations: [TestComp, NgxPermissionsAllowStubDirective] }); fixture = TestBed.createComponent(TestComp); comp = fixture.componentInstance; }); - it ('Should show the component', fakeAsync(() => { + it('Should show the component', fakeAsync(() => { detectChanges(fixture); let content = fixture.debugElement.nativeElement.querySelector('div'); @@ -95,7 +100,8 @@ describe('Permissions stub testing only then template', () => { describe('Permissions stub testing except then template', () => { - @Component({selector: 'test-comp', + @Component({ + selector: 'test-comp', template: `
                                                                              @@ -113,12 +119,12 @@ describe('Permissions stub testing except then template', () => { let fixture: any; let comp; beforeEach(() => { - TestBed.configureTestingModule({declarations: [TestComp, NgxPermissionsAllowStubDirective]}); + TestBed.configureTestingModule({ declarations: [TestComp, NgxPermissionsAllowStubDirective] }); fixture = TestBed.createComponent(TestComp); comp = fixture.componentInstance; }); - it ('Should show the component', fakeAsync(() => { + it('Should show the component', fakeAsync(() => { detectChanges(fixture); let content = fixture.debugElement.nativeElement.querySelector('div'); @@ -129,4 +135,4 @@ describe('Permissions stub testing except then template', () => { function detectChanges(fixture) { tick(); fixture.detectChanges(); -} \ No newline at end of file +} diff --git a/src/testing/permissions-allow.directive.stub.ts b/projects/ngx-permissions/src/lib/testing/permissions-allow.directive.stub.ts similarity index 100% rename from src/testing/permissions-allow.directive.stub.ts rename to projects/ngx-permissions/src/lib/testing/permissions-allow.directive.stub.ts diff --git a/src/testing/permissions-restrict.directive.stub.spec.ts b/projects/ngx-permissions/src/lib/testing/permissions-restrict.directive.stub.spec.ts similarity index 80% rename from src/testing/permissions-restrict.directive.stub.spec.ts rename to projects/ngx-permissions/src/lib/testing/permissions-restrict.directive.stub.spec.ts index 8044e87..774bef9 100644 --- a/src/testing/permissions-restrict.directive.stub.spec.ts +++ b/projects/ngx-permissions/src/lib/testing/permissions-restrict.directive.stub.spec.ts @@ -3,8 +3,10 @@ import { fakeAsync, TestBed, tick } from '@angular/core/testing'; import { NgxPermissionsRestrictStubDirective } from './permissions-restrict.directive.stub'; describe('Permissions restrict stub testing only original template', () => { - @Component({selector: 'test-comp', - template: `
                                                                              123
                                                                              `}) + @Component({ + selector: 'test-comp', + template: `
                                                                              123
                                                                              ` + }) class TestComp { data: any; } @@ -12,7 +14,7 @@ describe('Permissions restrict stub testing only original template', () => { let fixture: any; let comp; beforeEach(() => { - TestBed.configureTestingModule({declarations: [TestComp, NgxPermissionsRestrictStubDirective]}); + TestBed.configureTestingModule({ declarations: [TestComp, NgxPermissionsRestrictStubDirective] }); fixture = TestBed.createComponent(TestComp); comp = fixture.componentInstance; }); @@ -28,7 +30,8 @@ describe('Permissions restrict stub testing only original template', () => { describe('Permissions stub testing only then template', () => { - @Component({selector: 'test-comp', + @Component({ + selector: 'test-comp', template: `
                                                                              @@ -46,12 +49,12 @@ describe('Permissions stub testing only then template', () => { let fixture: any; let comp; beforeEach(() => { - TestBed.configureTestingModule({declarations: [TestComp, NgxPermissionsRestrictStubDirective]}); + TestBed.configureTestingModule({ declarations: [TestComp, NgxPermissionsRestrictStubDirective] }); fixture = TestBed.createComponent(TestComp); comp = fixture.componentInstance; }); - it ('Should show else component', fakeAsync(() => { + it('Should show else component', fakeAsync(() => { detectChanges(fixture); let content = fixture.debugElement.nativeElement.querySelector('div'); @@ -64,4 +67,4 @@ describe('Permissions stub testing only then template', () => { function detectChanges(fixture) { tick(); fixture.detectChanges(); -} \ No newline at end of file +} diff --git a/src/testing/permissions-restrict.directive.stub.ts b/projects/ngx-permissions/src/lib/testing/permissions-restrict.directive.stub.ts similarity index 100% rename from src/testing/permissions-restrict.directive.stub.ts rename to projects/ngx-permissions/src/lib/testing/permissions-restrict.directive.stub.ts diff --git a/src/testing/permissions-testing.module.ts b/projects/ngx-permissions/src/lib/testing/permissions-testing.module.ts similarity index 99% rename from src/testing/permissions-testing.module.ts rename to projects/ngx-permissions/src/lib/testing/permissions-testing.module.ts index e58f82c..93a00ee 100644 --- a/src/testing/permissions-testing.module.ts +++ b/projects/ngx-permissions/src/lib/testing/permissions-testing.module.ts @@ -40,4 +40,4 @@ // // NgxRolesService, // // {provide: USE_PERMISSIONS_STORE, useValue: config.permissionsIsolate}, // // {provide: USE_ROLES_STORE, useValue: config.rolesIsolate}, -// // ] \ No newline at end of file +// // ] diff --git a/src/utils/utils.ts b/projects/ngx-permissions/src/lib/utils/utils.ts similarity index 100% rename from src/utils/utils.ts rename to projects/ngx-permissions/src/lib/utils/utils.ts diff --git a/projects/ngx-permissions/src/public_api.ts b/projects/ngx-permissions/src/public_api.ts new file mode 100644 index 0000000..82d017c --- /dev/null +++ b/projects/ngx-permissions/src/public_api.ts @@ -0,0 +1,5 @@ +/* + * Public API Surface of ngx-permissions + */ + +export * from './lib'; diff --git a/application/src/test.ts b/projects/ngx-permissions/src/test.ts similarity index 55% rename from application/src/test.ts rename to projects/ngx-permissions/src/test.ts index cd612ee..e11ff1c 100644 --- a/application/src/test.ts +++ b/projects/ngx-permissions/src/test.ts @@ -1,24 +1,16 @@ // This file is required by karma.conf.js and loads recursively all the .spec and framework files -import 'zone.js/dist/long-stack-trace-zone'; -import 'zone.js/dist/proxy.js'; -import 'zone.js/dist/sync-test'; -import 'zone.js/dist/jasmine-patch'; -import 'zone.js/dist/async-test'; -import 'zone.js/dist/fake-async-test'; +import 'core-js/es7/reflect'; +import 'zone.js/dist/zone'; +import 'zone.js/dist/zone-testing'; import { getTestBed } from '@angular/core/testing'; import { BrowserDynamicTestingModule, platformBrowserDynamicTesting } from '@angular/platform-browser-dynamic/testing'; -// Unfortunately there's no typing for the `__karma__` variable. Just declare it as any. -declare const __karma__: any; declare const require: any; -// Prevent Karma from running prematurely. -__karma__.loaded = function () {}; - // First, initialize the Angular testing environment. getTestBed().initTestEnvironment( BrowserDynamicTestingModule, @@ -28,5 +20,3 @@ getTestBed().initTestEnvironment( const context = require.context('./', true, /\.spec\.ts$/); // And load the modules. context.keys().map(context); -// Finally, start Karma to run the tests. -__karma__.start(); diff --git a/projects/ngx-permissions/tsconfig.lib.json b/projects/ngx-permissions/tsconfig.lib.json new file mode 100644 index 0000000..3a2b0b9 --- /dev/null +++ b/projects/ngx-permissions/tsconfig.lib.json @@ -0,0 +1,33 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/lib", + "target": "es2015", + "module": "es2015", + "moduleResolution": "node", + "declaration": true, + "sourceMap": true, + "inlineSources": true, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "importHelpers": true, + "types": [], + "lib": [ + "dom", + "es2015" + ] + }, + "angularCompilerOptions": { + "annotateForClosureCompiler": true, + "skipTemplateCodegen": true, + "strictMetadataEmit": true, + "fullTemplateTypeCheck": true, + "strictInjectionParameters": true, + "flatModuleId": "AUTOGENERATED", + "flatModuleOutFile": "AUTOGENERATED" + }, + "exclude": [ + "src/test.ts", + "**/*.spec.ts" + ] +} diff --git a/projects/ngx-permissions/tsconfig.spec.json b/projects/ngx-permissions/tsconfig.spec.json new file mode 100644 index 0000000..16da33d --- /dev/null +++ b/projects/ngx-permissions/tsconfig.spec.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/spec", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "src/test.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/projects/ngx-permissions/tslint.json b/projects/ngx-permissions/tslint.json new file mode 100644 index 0000000..07ca233 --- /dev/null +++ b/projects/ngx-permissions/tslint.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tslint.json", + "rules": { + "directive-selector": [ + true, + "attribute", + "", + "camelCase" + ], + "component-selector": [ + false, + "element", + "", + "" + ] + } +} diff --git a/application/src/app/app-routing.module.ts b/src/app/app-routing.module.ts similarity index 83% rename from application/src/app/app-routing.module.ts rename to src/app/app-routing.module.ts index 6e54c9f..33b9d6f 100644 --- a/application/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -6,13 +6,14 @@ import { NgxPermissionsGuard } from 'ngx-permissions'; export function testPermissions(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) { if (route.params['id'] === 42) { - return ['MANAGER', "UTILS"] + return ['MANAGER', 'UTILS']; } else { - return 'ADMIN' + return 'ADMIN'; } } const appRoutes: Routes = [ - { path: 'home', + { + path: 'home', component: HomeComponent, canActivate: [NgxPermissionsGuard], data: { @@ -23,7 +24,8 @@ const appRoutes: Routes = [ } }, - { path: 'home3', + { + path: 'home3', component: HomeComponent, canActivate: [NgxPermissionsGuard], data: { @@ -33,7 +35,8 @@ const appRoutes: Routes = [ } } }, - { path: 'dynamic/:id', + { + path: 'dynamic/:id', component: HomeComponent, canActivate: [NgxPermissionsGuard], data: { @@ -42,7 +45,8 @@ const appRoutes: Routes = [ } } }, - { path: 'home4', + { + path: 'home4', component: HomeComponent, canActivate: [NgxPermissionsGuard], data: { @@ -52,7 +56,8 @@ const appRoutes: Routes = [ } } }, - { path: 'home1', + { + path: 'home1', component: HomeComponent, canActivate: [NgxPermissionsGuard], data: { @@ -102,9 +107,12 @@ const appRoutes: Routes = [ canLoad: [NgxPermissionsGuard], loadChildren: 'app/lazy-module/lazy-module.module#LazyModule' }, - { path: 'lazy-isolate', loadChildren: 'app/lazy-isolate/lazy-isolate.module#LazyIsolateModule' }, - { path: 'lazy-roles-isolate', loadChildren: 'app/lazy-role-isolate/lazy-role-isolate.module#LazyRoleIsolateModule' }, - { path: 'lazy-roles-async-isolate', loadChildren: 'app/lazy-roles-async-isolate/lazy-roles-async-isolate.module#LazyRolesAsyncIsolateModule' }, + { path: 'lazy-isolate', loadChildren: './lazy-isolate/lazy-isolate.module#LazyIsolateModule' }, + { path: 'lazy-roles-isolate', loadChildren: './lazy-role-isolate/lazy-role-isolate.module#LazyRoleIsolateModule' }, + { + path: 'lazy-roles-async-isolate', + loadChildren: './lazy-roles-async-isolate/lazy-roles-async-isolate.module#LazyRolesAsyncIsolateModule' + }, { @@ -163,4 +171,4 @@ const appRoutes: Routes = [ // CanDeactivateGuard ] }) -export class AppRoutingModule {} +export class AppRoutingModule { } diff --git a/application/src/app/app.component.css b/src/app/app.component.css similarity index 100% rename from application/src/app/app.component.css rename to src/app/app.component.css diff --git a/application/src/app/app.component.html b/src/app/app.component.html similarity index 82% rename from application/src/app/app.component.html rename to src/app/app.component.html index 21286e5..d19339b 100644 --- a/application/src/app/app.component.html +++ b/src/app/app.component.html @@ -5,11 +5,48 @@

                                                                            • -

                                                                              Only should go Home Page

                                                                              -

                                                                              Only should not go Home Page

                                                                              -

                                                                              Except should not go through

                                                                              -

                                                                              Except should go through

                                                                              -

                                                                              Dynamic routes

                                                                              + + + + + +
                                                                              +
                                                                              +
                                                                              + + + + + + + + +
                                                                              +
                                                                              +
                                                                              +
                                                                              + + + + + + + +

                                                                              + Only should go Home Page +

                                                                              +

                                                                              + Only should not go Home Page +

                                                                              +

                                                                              + Except should not go through +

                                                                              +

                                                                              + Except should go through +

                                                                              +

                                                                              + Dynamic routes +

                                                                              Lazy module Lazy ISOLATE @@ -18,7 +55,7 @@

                                                                              Dynamic routes

                                                                              -
                                                                              +
                                                                              @@ -48,9 +85,8 @@

                                                                              Dynamic routes

                                                                              THis USES BOTH only and except - - Usage on both only and except - I SHOULD SEE see it only admin + + Usage on both only and except I SHOULD SEE see it only admin
                                                                              @@ -82,4 +118,4 @@

                                                                              Dynamic routes

                                                                              then block - + \ No newline at end of file diff --git a/application/src/app/app.component.spec.ts b/src/app/app.component.spec.ts similarity index 100% rename from application/src/app/app.component.spec.ts rename to src/app/app.component.spec.ts diff --git a/application/src/app/app.component.ts b/src/app/app.component.ts similarity index 86% rename from application/src/app/app.component.ts rename to src/app/app.component.ts index 8c519c5..46387d7 100644 --- a/application/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -13,7 +13,7 @@ export class AppComponent implements OnInit { } ngOnInit(): void { - this.permissionsService.loadPermissions(['ADMIN']) + this.permissionsService.loadPermissions(['ADMIN']); } public unAuthorized() { @@ -21,7 +21,7 @@ export class AppComponent implements OnInit { } public authorized() { - console.log('authorizes') + console.log('authorizes'); } public addPermission() { diff --git a/application/src/app/app.module.ts b/src/app/app.module.ts similarity index 100% rename from application/src/app/app.module.ts rename to src/app/app.module.ts diff --git a/application/src/app/home/home.component.css b/src/app/home/home.component.css similarity index 100% rename from application/src/app/home/home.component.css rename to src/app/home/home.component.css diff --git a/application/src/app/home/home.component.html b/src/app/home/home.component.html similarity index 100% rename from application/src/app/home/home.component.html rename to src/app/home/home.component.html diff --git a/application/src/app/home/home.component.spec.ts b/src/app/home/home.component.spec.ts similarity index 100% rename from application/src/app/home/home.component.spec.ts rename to src/app/home/home.component.spec.ts diff --git a/application/src/app/home/home.component.ts b/src/app/home/home.component.ts similarity index 100% rename from application/src/app/home/home.component.ts rename to src/app/home/home.component.ts diff --git a/application/src/app/initial-load/initial-load.component.css b/src/app/initial-load/initial-load.component.css similarity index 100% rename from application/src/app/initial-load/initial-load.component.css rename to src/app/initial-load/initial-load.component.css diff --git a/application/src/app/initial-load/initial-load.component.html b/src/app/initial-load/initial-load.component.html similarity index 100% rename from application/src/app/initial-load/initial-load.component.html rename to src/app/initial-load/initial-load.component.html diff --git a/application/src/app/initial-load/initial-load.component.js b/src/app/initial-load/initial-load.component.js similarity index 100% rename from application/src/app/initial-load/initial-load.component.js rename to src/app/initial-load/initial-load.component.js diff --git a/application/src/app/initial-load/initial-load.component.spec.js b/src/app/initial-load/initial-load.component.spec.js similarity index 100% rename from application/src/app/initial-load/initial-load.component.spec.js rename to src/app/initial-load/initial-load.component.spec.js diff --git a/application/src/app/initial-load/initial-load.component.spec.ts b/src/app/initial-load/initial-load.component.spec.ts similarity index 100% rename from application/src/app/initial-load/initial-load.component.spec.ts rename to src/app/initial-load/initial-load.component.spec.ts diff --git a/application/src/app/initial-load/initial-load.component.ts b/src/app/initial-load/initial-load.component.ts similarity index 100% rename from application/src/app/initial-load/initial-load.component.ts rename to src/app/initial-load/initial-load.component.ts diff --git a/application/src/app/lazy-isolate/isolate/isolate.component.css b/src/app/lazy-isolate/isolate/isolate.component.css similarity index 100% rename from application/src/app/lazy-isolate/isolate/isolate.component.css rename to src/app/lazy-isolate/isolate/isolate.component.css diff --git a/application/src/app/lazy-isolate/isolate/isolate.component.html b/src/app/lazy-isolate/isolate/isolate.component.html similarity index 100% rename from application/src/app/lazy-isolate/isolate/isolate.component.html rename to src/app/lazy-isolate/isolate/isolate.component.html diff --git a/application/src/app/lazy-isolate/isolate/isolate.component.spec.ts b/src/app/lazy-isolate/isolate/isolate.component.spec.ts similarity index 100% rename from application/src/app/lazy-isolate/isolate/isolate.component.spec.ts rename to src/app/lazy-isolate/isolate/isolate.component.spec.ts diff --git a/application/src/app/lazy-isolate/isolate/isolate.component.ts b/src/app/lazy-isolate/isolate/isolate.component.ts similarity index 100% rename from application/src/app/lazy-isolate/isolate/isolate.component.ts rename to src/app/lazy-isolate/isolate/isolate.component.ts diff --git a/application/src/app/lazy-isolate/lazy-isolate-routing.module.ts b/src/app/lazy-isolate/lazy-isolate-routing.module.ts similarity index 100% rename from application/src/app/lazy-isolate/lazy-isolate-routing.module.ts rename to src/app/lazy-isolate/lazy-isolate-routing.module.ts diff --git a/application/src/app/lazy-isolate/lazy-isolate.module.ts b/src/app/lazy-isolate/lazy-isolate.module.ts similarity index 100% rename from application/src/app/lazy-isolate/lazy-isolate.module.ts rename to src/app/lazy-isolate/lazy-isolate.module.ts diff --git a/application/src/app/lazy-module/lazy-component/lazy-component.component.css b/src/app/lazy-module/lazy-component/lazy-component.component.css similarity index 100% rename from application/src/app/lazy-module/lazy-component/lazy-component.component.css rename to src/app/lazy-module/lazy-component/lazy-component.component.css diff --git a/application/src/app/lazy-module/lazy-component/lazy-component.component.html b/src/app/lazy-module/lazy-component/lazy-component.component.html similarity index 100% rename from application/src/app/lazy-module/lazy-component/lazy-component.component.html rename to src/app/lazy-module/lazy-component/lazy-component.component.html diff --git a/application/src/app/lazy-module/lazy-component/lazy-component.component.spec.ts b/src/app/lazy-module/lazy-component/lazy-component.component.spec.ts similarity index 100% rename from application/src/app/lazy-module/lazy-component/lazy-component.component.spec.ts rename to src/app/lazy-module/lazy-component/lazy-component.component.spec.ts diff --git a/application/src/app/lazy-module/lazy-component/lazy-component.component.ts b/src/app/lazy-module/lazy-component/lazy-component.component.ts similarity index 100% rename from application/src/app/lazy-module/lazy-component/lazy-component.component.ts rename to src/app/lazy-module/lazy-component/lazy-component.component.ts diff --git a/application/src/app/lazy-module/lazy-module.module.ts b/src/app/lazy-module/lazy-module.module.ts similarity index 100% rename from application/src/app/lazy-module/lazy-module.module.ts rename to src/app/lazy-module/lazy-module.module.ts diff --git a/application/src/app/lazy-module/lazy-routing.module.ts b/src/app/lazy-module/lazy-routing.module.ts similarity index 100% rename from application/src/app/lazy-module/lazy-routing.module.ts rename to src/app/lazy-module/lazy-routing.module.ts diff --git a/application/src/app/lazy-role-isolate/lazy-isolate-role-routing.module.ts b/src/app/lazy-role-isolate/lazy-isolate-role-routing.module.ts similarity index 100% rename from application/src/app/lazy-role-isolate/lazy-isolate-role-routing.module.ts rename to src/app/lazy-role-isolate/lazy-isolate-role-routing.module.ts diff --git a/application/src/app/lazy-role-isolate/lazy-role-isolate-test/lazy-role-isolate-test.component.css b/src/app/lazy-role-isolate/lazy-role-isolate-test/lazy-role-isolate-test.component.css similarity index 100% rename from application/src/app/lazy-role-isolate/lazy-role-isolate-test/lazy-role-isolate-test.component.css rename to src/app/lazy-role-isolate/lazy-role-isolate-test/lazy-role-isolate-test.component.css diff --git a/application/src/app/lazy-role-isolate/lazy-role-isolate-test/lazy-role-isolate-test.component.html b/src/app/lazy-role-isolate/lazy-role-isolate-test/lazy-role-isolate-test.component.html similarity index 100% rename from application/src/app/lazy-role-isolate/lazy-role-isolate-test/lazy-role-isolate-test.component.html rename to src/app/lazy-role-isolate/lazy-role-isolate-test/lazy-role-isolate-test.component.html diff --git a/application/src/app/lazy-role-isolate/lazy-role-isolate-test/lazy-role-isolate-test.component.spec.ts b/src/app/lazy-role-isolate/lazy-role-isolate-test/lazy-role-isolate-test.component.spec.ts similarity index 100% rename from application/src/app/lazy-role-isolate/lazy-role-isolate-test/lazy-role-isolate-test.component.spec.ts rename to src/app/lazy-role-isolate/lazy-role-isolate-test/lazy-role-isolate-test.component.spec.ts diff --git a/application/src/app/lazy-role-isolate/lazy-role-isolate-test/lazy-role-isolate-test.component.ts b/src/app/lazy-role-isolate/lazy-role-isolate-test/lazy-role-isolate-test.component.ts similarity index 100% rename from application/src/app/lazy-role-isolate/lazy-role-isolate-test/lazy-role-isolate-test.component.ts rename to src/app/lazy-role-isolate/lazy-role-isolate-test/lazy-role-isolate-test.component.ts diff --git a/application/src/app/lazy-role-isolate/lazy-role-isolate.module.ts b/src/app/lazy-role-isolate/lazy-role-isolate.module.ts similarity index 100% rename from application/src/app/lazy-role-isolate/lazy-role-isolate.module.ts rename to src/app/lazy-role-isolate/lazy-role-isolate.module.ts diff --git a/application/src/app/lazy-roles-async-isolate/async-test.service.spec.ts b/src/app/lazy-roles-async-isolate/async-test.service.spec.ts similarity index 100% rename from application/src/app/lazy-roles-async-isolate/async-test.service.spec.ts rename to src/app/lazy-roles-async-isolate/async-test.service.spec.ts diff --git a/application/src/app/lazy-roles-async-isolate/async-test.service.ts b/src/app/lazy-roles-async-isolate/async-test.service.ts similarity index 100% rename from application/src/app/lazy-roles-async-isolate/async-test.service.ts rename to src/app/lazy-roles-async-isolate/async-test.service.ts diff --git a/application/src/app/lazy-roles-async-isolate/lazy-isolate-role-async-routing.module.ts b/src/app/lazy-roles-async-isolate/lazy-isolate-role-async-routing.module.ts similarity index 100% rename from application/src/app/lazy-roles-async-isolate/lazy-isolate-role-async-routing.module.ts rename to src/app/lazy-roles-async-isolate/lazy-isolate-role-async-routing.module.ts diff --git a/application/src/app/lazy-roles-async-isolate/lazy-roles-async-isolate.module.ts b/src/app/lazy-roles-async-isolate/lazy-roles-async-isolate.module.ts similarity index 100% rename from application/src/app/lazy-roles-async-isolate/lazy-roles-async-isolate.module.ts rename to src/app/lazy-roles-async-isolate/lazy-roles-async-isolate.module.ts diff --git a/application/src/app/lazy-roles-async-isolate/lazy-roles-async-test/lazy-roles-async-test.component.css b/src/app/lazy-roles-async-isolate/lazy-roles-async-test/lazy-roles-async-test.component.css similarity index 100% rename from application/src/app/lazy-roles-async-isolate/lazy-roles-async-test/lazy-roles-async-test.component.css rename to src/app/lazy-roles-async-isolate/lazy-roles-async-test/lazy-roles-async-test.component.css diff --git a/application/src/app/lazy-roles-async-isolate/lazy-roles-async-test/lazy-roles-async-test.component.html b/src/app/lazy-roles-async-isolate/lazy-roles-async-test/lazy-roles-async-test.component.html similarity index 100% rename from application/src/app/lazy-roles-async-isolate/lazy-roles-async-test/lazy-roles-async-test.component.html rename to src/app/lazy-roles-async-isolate/lazy-roles-async-test/lazy-roles-async-test.component.html diff --git a/application/src/app/lazy-roles-async-isolate/lazy-roles-async-test/lazy-roles-async-test.component.spec.ts b/src/app/lazy-roles-async-isolate/lazy-roles-async-test/lazy-roles-async-test.component.spec.ts similarity index 100% rename from application/src/app/lazy-roles-async-isolate/lazy-roles-async-test/lazy-roles-async-test.component.spec.ts rename to src/app/lazy-roles-async-isolate/lazy-roles-async-test/lazy-roles-async-test.component.spec.ts diff --git a/application/src/app/lazy-roles-async-isolate/lazy-roles-async-test/lazy-roles-async-test.component.ts b/src/app/lazy-roles-async-isolate/lazy-roles-async-test/lazy-roles-async-test.component.ts similarity index 100% rename from application/src/app/lazy-roles-async-isolate/lazy-roles-async-test/lazy-roles-async-test.component.ts rename to src/app/lazy-roles-async-isolate/lazy-roles-async-test/lazy-roles-async-test.component.ts diff --git a/application/src/assets/.gitkeep b/src/assets/.gitkeep similarity index 100% rename from application/src/assets/.gitkeep rename to src/assets/.gitkeep diff --git a/src/browserslist b/src/browserslist new file mode 100644 index 0000000..8e09ab4 --- /dev/null +++ b/src/browserslist @@ -0,0 +1,9 @@ +# This file is currently used by autoprefixer to adjust CSS to support the below specified browsers +# For additional information regarding the format and rule options, please see: +# https://github.com/browserslist/browserslist#queries +# For IE 9-11 support, please uncomment the last line of the file and adjust as needed +> 0.5% +last 2 versions +Firefox ESR +not dead +# IE 9-11 \ No newline at end of file diff --git a/application/src/environments/environment.prod.ts b/src/environments/environment.prod.ts similarity index 100% rename from application/src/environments/environment.prod.ts rename to src/environments/environment.prod.ts diff --git a/src/environments/environment.ts b/src/environments/environment.ts new file mode 100644 index 0000000..012182e --- /dev/null +++ b/src/environments/environment.ts @@ -0,0 +1,15 @@ +// This file can be replaced during build by using the `fileReplacements` array. +// `ng build ---prod` replaces `environment.ts` with `environment.prod.ts`. +// The list of file replacements can be found in `angular.json`. + +export const environment = { + production: false +}; + +/* + * In development mode, to ignore zone related error stack frames such as + * `zone.run`, `zoneDelegate.invokeTask` for easier debugging, you can + * import the following file, but please comment it out in production mode + * because it will have performance impact when throw error + */ +// import 'zone.js/dist/zone-error'; // Included with Angular CLI. diff --git a/application/src/favicon.ico b/src/favicon.ico similarity index 100% rename from application/src/favicon.ico rename to src/favicon.ico diff --git a/application/src/index.html b/src/index.html similarity index 89% rename from application/src/index.html rename to src/index.html index f7f0220..ef247ce 100644 --- a/application/src/index.html +++ b/src/index.html @@ -2,7 +2,7 @@ - Application + NgxPermissions diff --git a/src/karma.conf.js b/src/karma.conf.js new file mode 100644 index 0000000..b6e0042 --- /dev/null +++ b/src/karma.conf.js @@ -0,0 +1,31 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, '../coverage'), + reports: ['html', 'lcovonly'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false + }); +}; \ No newline at end of file diff --git a/application/src/main.ts b/src/main.ts similarity index 76% rename from application/src/main.ts rename to src/main.ts index a9ca1ca..91ec6da 100644 --- a/application/src/main.ts +++ b/src/main.ts @@ -8,4 +8,5 @@ if (environment.production) { enableProdMode(); } -platformBrowserDynamic().bootstrapModule(AppModule); +platformBrowserDynamic().bootstrapModule(AppModule) + .catch(err => console.log(err)); diff --git a/application/src/polyfills.ts b/src/polyfills.ts similarity index 62% rename from application/src/polyfills.ts rename to src/polyfills.ts index 8cfeeb2..d310405 100644 --- a/application/src/polyfills.ts +++ b/src/polyfills.ts @@ -37,22 +37,39 @@ /** IE10 and IE11 requires the following for NgClass support on SVG elements */ // import 'classlist.js'; // Run `npm install --save classlist.js`. +/** IE10 and IE11 requires the following for the Reflect API. */ +// import 'core-js/es6/reflect'; + + /** Evergreen browsers require these. **/ -import 'core-js/es6/reflect'; +// Used for reflect-metadata in JIT. If you use AOT (and only Angular decorators), you can remove. import 'core-js/es7/reflect'; -import 'core-js/es7/array'; /** - * Required to support Web Animations `@angular/animation`. - * Needed for: All but Chrome, Firefox and Opera. http://caniuse.com/#feat=web-animation + * Web Animations `@angular/platform-browser/animations` + * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari. + * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0). **/ // import 'web-animations-js'; // Run `npm install --save web-animations-js`. +/** + * By default, zone.js will patch all possible macroTask and DomEvents + * user can disable parts of macroTask/DomEvents patch by setting following flags + */ + + // (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame + // (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick + // (window as any).__zone_symbol__BLACK_LISTED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames + /* + * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js + * with the following flag, it will bypass `zone.js` patch for IE/Edge + */ +// (window as any).__Zone_enable_cross_context_check = true; /*************************************************************************************************** - * Zone JS is required by Angular itself. + * Zone JS is required by default for Angular itself. */ import 'zone.js/dist/zone'; // Included with Angular CLI. @@ -61,13 +78,3 @@ import 'zone.js/dist/zone'; // Included with Angular CLI. /*************************************************************************************************** * APPLICATION IMPORTS */ - -/** - * Date, currency, decimal and percent pipes. - * Needed for: All but Chrome, Firefox, Edge, IE11 and Safari 10 - */ -// import 'intl'; // Run `npm install --save intl`. -/** - * Need to import at least one locale-data with intl. - */ -// import 'intl/locale-data/jsonp/en'; diff --git a/src/router/permissions-guard-can-activate-child.service.spec.ts b/src/router/permissions-guard-can-activate-child.service.spec.ts deleted file mode 100644 index 09218a2..0000000 --- a/src/router/permissions-guard-can-activate-child.service.spec.ts +++ /dev/null @@ -1,1267 +0,0 @@ - -import { NgxPermissionsGuard } from './permissions-guard.service'; -import { async, fakeAsync, inject, TestBed } from '@angular/core/testing'; -import { NgxPermissionsService } from '../service/permissions.service'; -import { NgxRolesService } from '../service/roles.service'; -import { NgxPermissionsModule } from '../index'; -import { ActivatedRouteSnapshot, Router, RouterStateSnapshot } from '@angular/router'; -import { tick } from "@angular/core/testing"; -import { RouterTestingModule } from '@angular/router/testing'; - -describe('Permissions guard only', () => { - - let permissionGuard: NgxPermissionsGuard; - let route; - let fakeRouter; - beforeEach(() => { - TestBed.configureTestingModule({ - imports: [NgxPermissionsModule.forRoot()] - }); - }); - beforeEach(inject([NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService) => { - fakeRouter = {navigate: () => {}}; - spyOn(fakeRouter, 'navigate'); - - service.addPermission('ADMIN'); - permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); - })); - - it('should create an instance', () => { - expect(permissionGuard).toBeTruthy(); - }); - - it ('sholud return true when only fullfills', fakeAsync(() => { - route = { data: { - permissions: { - only: 'ADMIN' - } - }}; - permissionGuard.canActivateChild(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(true); - }) - })); - - it ('sholud return false when only doesnt match', fakeAsync(() => { - route = { data: { - permissions: { - only: 'DOESNT MATCH' - } - }}; - permissionGuard.canActivateChild(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - }) - })); - - it ('sholud return false when only doesnt match and navigate to 404', fakeAsync(() => { - route = { data: { - permissions: { - only: 'DOESNT MATCH', - redirectTo: './404' - } - }}; - permissionGuard.canActivateChild(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['./404']) - }) - })); - - it ('should return false when only doesnt match and navigate to array 404', fakeAsync(() => { - route = { data: { - permissions: { - only: 'DOESNT MATCH', - redirectTo: ['./404'] - } - }}; - permissionGuard.canActivateChild(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['./404']) - }) - })); - - it ('should return true when neither only not except specified', fakeAsync(() => { - route = { data: { - permissions: { - only: '', - except: '', - redirectTo: ['./404'] - } - }}; - expect(permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).toBe(true); - })); - - it ('should return true when neither only not except specified as array', fakeAsync(() => { - route = { data: { - permissions: { - only: [], - except: [], - redirectTo: ['./404'] - } - }}; - expect(permissionGuard.canActivateChild(route, {} as RouterStateSnapshot)).toBe(true); - })) -}); - -describe('Permissions guard Except', () => { - - let permissionGuard: NgxPermissionsGuard; - let fakeRouter; - let route; - beforeEach(() => { - TestBed.configureTestingModule({ - imports: [NgxPermissionsModule.forRoot()] - }); - }); - beforeEach(inject([NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService) => { - fakeRouter = {navigate: () => {}}; - spyOn(fakeRouter, 'navigate'); - - service.addPermission('MANAGER'); - permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); - })); - - it('should create an instance', () => { - expect(permissionGuard).toBeTruthy(); - }); - - it ('sholud return false when except matches', fakeAsync(() => { - route = { data: { - permissions: { - except: 'MANAGER' - } - }}; - permissionGuard.canActivateChild(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - }) - })); - - it ('sholud return false when except matches and redirectTo 404', fakeAsync(() => { - route = { data: { - permissions: { - except: 'MANAGER', - redirectTo: './404' - } - }}; - permissionGuard.canActivateChild(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['./404']); - }) - })); - - it ('sholud return false when except matches at least one array', fakeAsync(() => { - route = { data: { - permissions: { - except: ["MANAGER", 'Something else'] - } - }}; - permissionGuard.canActivateChild(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - }) - })); - - it ('sholud return false when except matches in array and redirectTo 404', fakeAsync(() => { - route = { data: { - permissions: { - except: ["MANAGER", 'Something else'], - redirectTo: './404' - } - }}; - permissionGuard.canActivateChild(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['./404']); - }) - })); - - it ('sholud return true when except doesn"t match', fakeAsync(() => { - route = { data: { - permissions: { - except: 'DOESNT MATCH' - } - }}; - permissionGuard.canActivateChild(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(true); - }) - })); - - it ('sholud return true when any in array doesn"t match', fakeAsync(() => { - route = { data: { - permissions: { - except: ['DOESNT MATCH', "AWESOME"] - } - }}; - permissionGuard.canActivateChild(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(true); - }) - })); - - -}); - - -describe('Permissions guard Except and only together', () => { - - let permissionGuard: NgxPermissionsGuard; - let fakeRouter; - let route; - beforeEach(() => { - TestBed.configureTestingModule({ - imports: [NgxPermissionsModule.forRoot()] - }); - }); - beforeEach(inject([NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService) => { - fakeRouter = {navigate: () => {}}; - spyOn(fakeRouter, 'navigate') - - service.addPermission('MANAGER'); - permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); - })); - - it('should create an instance', () => { - expect(permissionGuard).toBeTruthy(); - }); - - it ('sholud return false when except matches and it should not check only and redirect to 404', fakeAsync(() => { - route = { data: { - permissions: { - except: 'MANAGER', - only: 'AWESOME', - redirectTo: './404' - } - }}; - permissionGuard.canActivateChild(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['./404']); - }) - })); - - it ('should return false when except matches at least one array', fakeAsync(() => { - route = { data: { - permissions: { - except: ["MANAGER", 'Something else'], - only: 'AWESOME' - } - }}; - permissionGuard.canActivateChild(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - }) - })); - - it ('sholud return true when except doesn"t match but only matcher', fakeAsync(() => { - route = { data: { - permissions: { - except: 'DOESNT MATCH', - only: "MANAGER" - } - }}; - permissionGuard.canActivateChild(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(true); - }) - })); - - it ('sholud return true when any in array doesn"t match but only matches', fakeAsync(() => { - route = { data: { - permissions: { - except: ['DOESNT MATCH', "AWESOME"], - only: ['MANAGER', 'AWESOME'] - } - }}; - permissionGuard.canActivateChild(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(true); - }) - })); - it ('sholud return false when except in array doesn"t match and only also doesn"t matches', fakeAsync(() => { - route = { data: { - permissions: { - except: ['DOESNT MATCH', "AWESOME"], - only: ['gg', 'AWESOME'], - redirectTo: './404' - } - }}; - permissionGuard.canActivateChild(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['./404']); - }) - })); -}); - - -describe('Permissions guard use only dynamically', () => { - - let permissionGuard: NgxPermissionsGuard; - let fakeRouter; - let route; - let testRouter; - beforeEach(() => { - TestBed.configureTestingModule({ - - imports: [NgxPermissionsModule.forRoot(), - - RouterTestingModule.withRoutes( - [ - { - path: 'crisis-center/:id', - redirectTo: '404', - data: { - permissions: { - except: (route: ActivatedRouteSnapshot, awesome: RouterStateSnapshot) => { - return true; - } - }, - } - }, - ])] - }); - }); - beforeEach(inject([NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService, router: Router) => { - fakeRouter = {navigate: () => {}}; - - service.addPermission('MANAGER'); - // fakeRouter = router; - spyOn(fakeRouter, 'navigate'); - permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); - })); - - it('should create an instance', () => { - expect(permissionGuard).toBeTruthy(); - }); - - it ('sholud return true when only matches and it should not check only', fakeAsync(() => { - route = { data: { - permissions: { - only: (route: ActivatedRouteSnapshot, awesome: RouterStateSnapshot) => { - if (route.data.path.includes(44)) { - return ['MANAGER'] - } else { - return 'notManager' - } - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivateChild(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(true); - }) - })); - - it ('should return true when except matches and it should ', fakeAsync(() => { - route = { data: { - permissions: { - except: (route: ActivatedRouteSnapshot, awesome: RouterStateSnapshot) => { - if (route.data.path.includes('doesntInclude')) { - return ['MANAGER'] - } else { - return 'notManager' - } - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivateChild(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(true); - }) - })); - - it ('should return true when except doens"t match but only matches it should true', fakeAsync(() => { - route = { data: { - permissions: { - except: (route: ActivatedRouteSnapshot, awesome: RouterStateSnapshot) => { - if (route.data.path.includes('doesntInclude')) { - return ['MANAGER'] - } else { - return 'notManager' - } - }, - only: (route: ActivatedRouteSnapshot, awesome: RouterStateSnapshot) => { - if (route.data.path.includes('44')) { - return ['MANAGER'] - } else { - return 'notManager' - } - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivateChild(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(true); - }) - })); - - it ('should return true when except doens"t match but only matches it should true', fakeAsync(() => { - route = { data: { - permissions: { - except: (route: ActivatedRouteSnapshot, awesome: RouterStateSnapshot) => { - if (route.data.path.includes('doesntInclude')) { - return ['MANAGER'] - } else { - return 'notManager' - } - }, - only: (route: ActivatedRouteSnapshot, awesome: RouterStateSnapshot) => { - if (route.data.path.includes('gg')) { - return ['MANAGER'] - } else { - return 'notManager' - } - }, - redirectTo: '/404' - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivateChild(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['/404']); - }) - })); -}); - -describe('Permissions guard test redirectTo path parameters dynamically', () => { - - let permissionGuard: NgxPermissionsGuard; - let fakeRouter; - let route; - let testRouter; - beforeEach(() => { - TestBed.configureTestingModule({ - - imports: [NgxPermissionsModule.forRoot(), - - RouterTestingModule.withRoutes( - [ - { - path: 'crisis-center/:id', - redirectTo: '404', - data: { - permissions: { - except: (route: ActivatedRouteSnapshot, awesome: RouterStateSnapshot) => { - return true; - }, - redirectTo: { - navigationCommands: ['123'], - navigationExtras: { - skipLocationChange: true - } - } - }, - } - }, - ])] - }); - }); - beforeEach(inject([NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService, router: Router) => { - fakeRouter = {navigate: () => {}}; - - service.addPermission('MANAGER'); - // fakeRouter = router; - spyOn(fakeRouter, 'navigate'); - permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); - })); - - it('should create an instance', () => { - expect(permissionGuard).toBeTruthy(); - }); - - it ('sholud redirect to parameters specified on navigation commands and navigationExtras', fakeAsync(() => { - route = { data: { - permissions: { - only: "TIED", - redirectTo: { - navigationCommands: ['123'], - navigationExtras: { - skipLocationChange: true - } - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivateChild(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['123'], {skipLocationChange: true}); - - }) - })); - - it ('sholud redirect to parameters specified in navigation commands and navigationExtras', fakeAsync(() => { - route = { data: { - permissions: { - only: "TIED", - redirectTo: { - navigationCommands: (rejectedPermission, route, state) => { - return ['123'] - }, - navigationExtras: (route, state) => { - return { - skipLocationChange: true - } - } - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivateChild(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['123'], {skipLocationChange: true}); - - }) - })); - - it ('except sholud redirect to parameters specified in navigation commands and navigationExtras', fakeAsync(() => { - route = { data: { - permissions: { - except: "MANAGER", - redirectTo: { - navigationCommands: (rejectedPermission, route, state) => { - return ['123'] - }, - navigationExtras: (route, state) => { - return { - skipLocationChange: true - } - } - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivateChild(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['123'], {skipLocationChange: true}); - - }) - })); -}); - - -describe('Permissions guard test redirectTo path multiple redirectionRule', () => { - - let permissionGuard: NgxPermissionsGuard; - let fakeRouter; - let route; - let testRouter; - let fakeService; - beforeEach(() => { - TestBed.configureTestingModule({ - - imports: [NgxPermissionsModule.forRoot()] - }); - }); - beforeEach(inject([NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService) => { - fakeRouter = {navigate: () => {}}; - - service.addPermission('canReadAgenda'); - fakeService = service; - // fakeRouter = router; - spyOn(fakeRouter, 'navigate'); - permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); - })); - - it('should create an instance', () => { - expect(permissionGuard).toBeTruthy(); - }); - - it ('sholud redirect dashboard can canRead Agenda fullfils can edit agenda fails', fakeAsync(() => { - route = { data: { - permissions: { - except: [ 'canEditAgenda', 'canReadAgenda', "canRun"], - redirectTo: { - canReadAgenda: 'agendaList', - canEditAgenda: 'dashboard', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivateChild(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['agendaList']); - }) - })); - - it ('sholud redirect to run when there is permission canRun and it fails', fakeAsync(() => { - fakeService.addPermission('canEditAgenda'); - - route = { data: { - permissions: { - except: ["canRun", 'canReadAgenda', 'canEditAgenda' ], - redirectTo: { - canReadAgenda: 'agendaList', - canEditAgenda: 'dashboard', - canRun: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivateChild(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['agendaList']); - }) - })); - - it ('sholud path when nothing fails', fakeAsync(() => { - fakeService.addPermission('canEditAgenda'); - - route = { data: { - permissions: { - except: ['aweomse', 'awesome'], - redirectTo: { - canReadAgenda: 'agendaList', - canEditAgenda: 'dashboard', - canRun: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivateChild(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(true); - }) - })); - - it ('redirect to default route when it fails but there is no redirect rule for that permission', fakeAsync(() => { - - route = { data: { - permissions: { - except: ['canReadAgenda', 'canEditAgenda'], - redirectTo: { - canRun: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivateChild(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['login']); - - }) - })); - - it ('redirect to only failed route when except passes but only fails', fakeAsync(() => { - - route = { data: { - permissions: { - except: ['canEditAgenda'], - only: [ 'canRunAgenda'], - redirectTo: { - canReadAgenda: 'agendaList', - canRunAgenda: 'dashboard', - canRun: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivateChild(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['dashboard']); - - }) - })); - - it ('path if except and only passes', fakeAsync(() => { - fakeService.addPermission('canRunAgenda'); - route = { data: { - permissions: { - except: ['canEditAgenda'], - only: [ 'canRunAgenda'], - redirectTo: { - canReadAgenda: 'agendaList', - canRunAgenda: 'dashboard', - canRun: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivateChild(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(true); - - }) - })); - - - it ('redirect fail on can editAgenda and redirect to dashboard', fakeAsync(() => { - route = { data: { - permissions: { - only: [ 'canReadAgenda', 'canEditAgenda' , "canRun"], - redirectTo: { - canReadAgenda: 'agendaList', - canEditAgenda: 'dashboard', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivateChild(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['dashboard']); - }) - })); - - it ('redirect to dashboard when canEdit agenda fails only', fakeAsync(() => { - route = { data: { - permissions: { - only: [ 'canReadAgenda', 'canEditAgenda' , "canRun"], - redirectTo: { - canReadAgenda: 'agendaList', - canEditAgenda: (route, state) => { - return 'dashboard' - }, - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivateChild(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['dashboard']); - }) - })); - - it ('redirect to dashboard when canEdit agenda fails with objectProperty only', fakeAsync(() => { - route = { data: { - permissions: { - only: [ 'canReadAgenda', 'canEditAgenda' , "canRun"], - redirectTo: { - canReadAgenda: 'agendaList', - canEditAgenda: { - navigationCommands: ['123'], - navigationExtras: { - skipLocationChange: true - } - }, - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivateChild(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['123'], {skipLocationChange: true}); - }) - })); - - it ('should redirect to 123 when redirect to multiple and used as function', fakeAsync(() => { - route = { data: { - permissions: { - only: [ 'canReadAgenda', 'canEditAgenda' , "canRun"], - redirectTo: { - canReadAgenda: 'agendaList', - canEditAgenda: () => { - return { - navigationCommands: ['123'], - navigationExtras: { - skipLocationChange: true - } - } - }, - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivateChild(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['123'], {skipLocationChange: true}); - }) - })); - - it ('redirect to default when only fails but there is no redirection rule', fakeAsync(() => { - fakeService.addPermission('canEditAgenda'); - - route = { data: { - permissions: { - only: ['canReadAgenda', 'canEditAgenda', 'Can run' ], - redirectTo: { - canReadAgenda: 'agendaList', - canEditAgenda: 'dashboard', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivateChild(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - }) - })); - - - - it ('sholud path when nothing fails in only blaock', fakeAsync(() => { - fakeService.addPermission('canEditAgenda'); - - route = { data: { - permissions: { - only: ['canEditAgenda'], - redirectTo: { - canReadAgenda: 'agendaList', - canEditAgenda: 'dashboard', - canRun: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivateChild(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(true); - }) - })); -}); - -describe('Permissions guard test redirectTo path multiple redirectionRule permissions load as string', () => { - - let permissionGuard: NgxPermissionsGuard; - let fakeRouter; - let route; - let testRouter; - let fakeService; - beforeEach(() => { - TestBed.configureTestingModule({ - - imports: [NgxPermissionsModule.forRoot()] - }); - }); - beforeEach(inject([NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService) => { - fakeRouter = {navigate: () => {}}; - - service.addPermission('canReadAgenda'); - fakeService = service; - // fakeRouter = router; - spyOn(fakeRouter, 'navigate'); - permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); - })); - - it('should create an instance', () => { - expect(permissionGuard).toBeTruthy(); - }); - - it ('sholud redirect dashboard can canRead Agenda fullfils can edit agenda fails', fakeAsync(() => { - route = { data: { - permissions: { - except: 'canReadAgenda', - redirectTo: { - canReadAgenda: 'agendaList', - canEditAgenda: 'dashboard', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivateChild(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['agendaList']); - }) - })); - - it ('sholud redirect to run when there is permission canRun and it fails', fakeAsync(() => { - fakeService.addPermission('canEditAgenda'); - - route = { data: { - permissions: { - only: "DELETE", - redirectTo: { - canReadAgenda: 'agendaList', - canEditAgenda: 'dashboard', - DELETE: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivateChild(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['run']); - }) - })); - - it ('sholud path when nothing fails', fakeAsync(() => { - fakeService.addPermission('canEditAgenda'); - - route = { data: { - permissions: { - except: 'aweomse', - redirectTo: { - canReadAgenda: 'agendaList', - canEditAgenda: 'dashboard', - canRun: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivateChild(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(true); - }) - })); - // - it ('redirect to default route when except fails but there is no redirect rule for that permission', fakeAsync(() => { - - route = { data: { - permissions: { - except: 'canReadAgenda', - redirectTo: { - canRun: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivateChild(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['login']); - - }) - })); - - it ('redirect to only failed route when except passes but only fails', fakeAsync(() => { - - route = { data: { - permissions: { - except: 'canEditAgenda', - only: 'canRunAgenda', - redirectTo: { - canReadAgenda: 'agendaList', - canRunAgenda: 'dashboard', - canRun: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivateChild(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['dashboard']); - }) - })); - - it ('path if except and only passes', fakeAsync(() => { - fakeService.addPermission('canRunAgenda'); - route = { data: { - permissions: { - except: 'canEditAgenda', - only: 'canRunAgenda', - redirectTo: { - canReadAgenda: 'agendaList', - canRunAgenda: 'dashboard', - canRun: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivateChild(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(true); - - }) - })); - - - - it ('sholud path when nothing fails in only blaock', fakeAsync(() => { - fakeService.addPermission('canEditAgenda'); - route = { data: { - permissions: { - only: 'canEditAgenda', - redirectTo: { - canReadAgenda: 'agendaList', - canEditAgenda: 'dashboard', - canRun: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivateChild(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(true); - }) - })); -}); - - -describe('Permissions guard test redirectTo path dynamic redirectionRule permissions load as string', () => { - - let permissionGuard: NgxPermissionsGuard; - let fakeRouter; - let route; - let testRouter; - let fakeService; - beforeEach(() => { - TestBed.configureTestingModule({ - - imports: [NgxPermissionsModule.forRoot()] - }); - }); - beforeEach(inject([NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService) => { - fakeRouter = {navigate: () => {}}; - - service.addPermission('canReadAgenda'); - fakeService = service; - // fakeRouter = router; - spyOn(fakeRouter, 'navigate'); - permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); - })); - - it('should create an instance', () => { - expect(permissionGuard).toBeTruthy(); - }); - - it ('sholud redirect dashboard can canRead Agenda fullfils can edit agenda fails', fakeAsync(() => { - route = { data: { - permissions: { - except: 'canReadAgenda', - redirectTo: { - canReadAgenda: 'agendaList', - canEditAgenda: 'dashboard', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivateChild(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['agendaList']); - }) - })); - - it ('sholud redirect to run when there is permission canRun and it fails', fakeAsync(() => { - fakeService.addPermission('canEditAgenda'); - - route = { data: { - permissions: { - only: "DELETE", - redirectTo: { - canReadAgenda: 'agendaList', - canEditAgenda: 'dashboard', - DELETE: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivateChild(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['run']); - }) - })); - - it ('sholud path when nothing fails', fakeAsync(() => { - fakeService.addPermission('canEditAgenda'); - - route = { data: { - permissions: { - except: 'aweomse', - redirectTo: { - canReadAgenda: 'agendaList', - canEditAgenda: 'dashboard', - canRun: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivateChild(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(true); - }) - })); - // - it ('redirect to default route when except fails but there is no redirect rule for that permission', fakeAsync(() => { - - route = { data: { - permissions: { - except: 'canReadAgenda', - redirectTo: { - canRun: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivateChild(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['login']); - - }) - })); - - it ('redirect to only failed route when except passes but only fails', fakeAsync(() => { - - route = { data: { - permissions: { - except: 'canEditAgenda', - only: 'canRunAgenda', - redirectTo: { - canReadAgenda: 'agendaList', - canRunAgenda: 'dashboard', - canRun: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivateChild(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['dashboard']); - }) - })); - it ('redirect to only failed route when except passes but only fails called as function', fakeAsync(() => { - - route = { data: { - permissions: { - except: 'canEditAgenda', - only: 'canRunAgenda', - redirectTo: { - canReadAgenda: 'agendaList', - canRunAgenda: (failedPermissionName: any,b: any,c: any) => { - return failedPermissionName; - }, - canRun: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivateChild(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['canRunAgenda']); - }) - })); - - it ('redirect to except failed route when except dont pass as a function', fakeAsync(() => { - - route = { data: { - permissions: { - except: 'canReadAgenda', - only: 'canRunAgenda', - redirectTo: { - canReadAgenda: (failedPermissionName: any,b: any,c: any) => { - return failedPermissionName; - }, - canRun: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivateChild(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['canReadAgenda']); - }) - })); - - it ('path if except and only passes', fakeAsync(() => { - fakeService.addPermission('canRunAgenda'); - route = { data: { - permissions: { - except: 'canEditAgenda', - only: 'canRunAgenda', - redirectTo: { - canReadAgenda: 'agendaList', - canRunAgenda: 'dashboard', - canRun: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivateChild(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(true); - - }) - })); - - - - it ('sholud path when nothing fails in only blaock', fakeAsync(() => { - fakeService.addPermission('canEditAgenda'); - route = { data: { - permissions: { - only: 'canEditAgenda', - redirectTo: { - canReadAgenda: 'agendaList', - canEditAgenda: 'dashboard', - canRun: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivateChild(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(true); - }) - })); -}); - -describe('Permissions guard test redirectTo as function', () => { - - let permissionGuard: NgxPermissionsGuard; - let fakeRouter; - let route; - let testRouter; - let fakeService; - beforeEach(() => { - TestBed.configureTestingModule({ - - imports: [NgxPermissionsModule.forRoot()] - }); - }); - beforeEach(inject([NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService) => { - fakeRouter = {navigate: () => {}}; - - service.addPermission('canReadAgenda'); - fakeService = service; - // fakeRouter = router; - spyOn(fakeRouter, 'navigate'); - permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); - })); - - it('should create an instance', () => { - expect(permissionGuard).toBeTruthy(); - }); - - it ('sholud redirect dashboard can canRead Agenda fullfils can edit agenda fails', fakeAsync(() => { - route = { data: { - permissions: { - except: [ 'canEditAgenda', 'canReadAgenda', "canRun"], - redirectTo: (failedPermission, route, state) => { - return failedPermission; - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivateChild(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['canReadAgenda']); - }) - })); - - it ('it should dynamically redirect to failed route redirectoTo as fucntion', fakeAsync(() => { - route = { data: { - permissions: { - only: [ "canRun"], - redirectTo: (failedPermission, route, state) => { - return failedPermission; - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivateChild(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['canRun']); - }) - })); - - it ('it should dynamically redirect to failed route redirectoTo as fucntion when except pass only fails', fakeAsync(() => { - route = { data: { - permissions: { - except: 'nice', - only: [ "canRun"], - redirectTo: (failedPermission, route, state) => { - return failedPermission; - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivateChild(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['canRun']); - }) - })); -}); \ No newline at end of file diff --git a/src/router/permissions-guard-can-load.service.spec.ts b/src/router/permissions-guard-can-load.service.spec.ts deleted file mode 100644 index 3672017..0000000 --- a/src/router/permissions-guard-can-load.service.spec.ts +++ /dev/null @@ -1,1354 +0,0 @@ - -import { NgxPermissionsGuard } from './permissions-guard.service'; -import { async, fakeAsync, inject, TestBed } from '@angular/core/testing'; -import { NgxPermissionsService } from '../service/permissions.service'; -import { NgxRolesService } from '../service/roles.service'; -import { NgxPermissionsModule } from '../index'; -import { ActivatedRouteSnapshot, Router, RouterStateSnapshot } from '@angular/router'; -import { tick } from "@angular/core/testing"; -import { RouterTestingModule } from '@angular/router/testing'; - -describe('Permissions guard only', () => { - - let permissionGuard: NgxPermissionsGuard; - let route; - let fakeRouter; - beforeEach(() => { - TestBed.configureTestingModule({ - imports: [NgxPermissionsModule.forRoot()] - }); - }); - beforeEach(inject([NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService) => { - fakeRouter = {navigate: () => {}}; - spyOn(fakeRouter, 'navigate'); - - service.addPermission('ADMIN'); - permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); - })); - - it('should create an instance', () => { - expect(permissionGuard).toBeTruthy(); - }); - - it ('sholud return true when only fullfills', fakeAsync(() => { - route = { data: { - permissions: { - only: 'ADMIN' - } - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(true); - }) - })); - - it ('sholud return false when only doesnt match', fakeAsync(() => { - route = { data: { - permissions: { - only: 'DOESNT MATCH' - } - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(false); - }) - })); - - it ('sholud return false when only doesnt match and navigate to 404', fakeAsync(() => { - route = { data: { - permissions: { - only: 'DOESNT MATCH', - redirectTo: './404' - } - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['./404']) - }) - })); - - it ('should return false when only doesnt match and navigate to array 404', fakeAsync(() => { - route = { data: { - permissions: { - only: 'DOESNT MATCH', - redirectTo: ['./404'] - } - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['./404']) - }) - })); - - it ('should return true when neither only not except specified', fakeAsync(() => { - route = { data: { - permissions: { - only: '', - except: '', - redirectTo: ['./404'] - } - }}; - expect(permissionGuard.canLoad(route)).toBe(true); - })); - - it ('should return true when neither only not except specified as array', fakeAsync(() => { - route = { data: { - permissions: { - only: [], - except: [], - redirectTo: ['./404'] - } - }}; - expect(permissionGuard.canLoad(route)).toBe(true); - })) -}); - -describe('Permissions guard Except', () => { - - let permissionGuard: NgxPermissionsGuard; - let fakeRouter; - let route; - beforeEach(() => { - TestBed.configureTestingModule({ - imports: [NgxPermissionsModule.forRoot()] - }); - }); - beforeEach(inject([NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService) => { - fakeRouter = {navigate: () => {}}; - spyOn(fakeRouter, 'navigate'); - - service.addPermission('MANAGER'); - permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); - })); - - it('should create an instance', () => { - expect(permissionGuard).toBeTruthy(); - }); - - it ('sholud return false when except matches', fakeAsync(() => { - route = { data: { - permissions: { - except: 'MANAGER' - } - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(false); - }) - })); - - it ('sholud return false when except matches and redirectTo 404', fakeAsync(() => { - route = { data: { - permissions: { - except: 'MANAGER', - redirectTo: './404' - } - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['./404']); - }) - })); - - it ('sholud return false when except matches at least one array', fakeAsync(() => { - route = { data: { - permissions: { - except: ["MANAGER", 'Something else'] - } - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(false); - }) - })); - - it ('sholud return false when except matches in array and redirectTo 404', fakeAsync(() => { - route = { data: { - permissions: { - except: ["MANAGER", 'Something else'], - redirectTo: './404' - } - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['./404']); - }) - })); - - it ('sholud return true when except doesn"t match', fakeAsync(() => { - route = { data: { - permissions: { - except: 'DOESNT MATCH' - } - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(true); - }) - })); - - it ('sholud return true when any in array doesn"t match', fakeAsync(() => { - route = { data: { - permissions: { - except: ['DOESNT MATCH', "AWESOME"] - } - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(true); - }) - })); - - -}); - - -describe('Permissions guard Except and only together', () => { - - let permissionGuard: NgxPermissionsGuard; - let fakeRouter; - let route; - beforeEach(() => { - TestBed.configureTestingModule({ - imports: [NgxPermissionsModule.forRoot()] - }); - }); - beforeEach(inject([NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService) => { - fakeRouter = {navigate: () => {}}; - spyOn(fakeRouter, 'navigate') - - service.addPermission('MANAGER'); - permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); - })); - - it('should create an instance', () => { - expect(permissionGuard).toBeTruthy(); - }); - - it ('sholud return false when except matches and it should not check only and redirect to 404', fakeAsync(() => { - route = { data: { - permissions: { - except: 'MANAGER', - only: 'AWESOME', - redirectTo: './404' - } - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['./404']); - }) - })); - - it ('should return false when except matches at least one array', fakeAsync(() => { - route = { data: { - permissions: { - except: ["MANAGER", 'Something else'], - only: 'AWESOME' - } - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(false); - }) - })); - - it ('sholud return true when except doesn"t match but only matcher', fakeAsync(() => { - route = { data: { - permissions: { - except: 'DOESNT MATCH', - only: "MANAGER" - } - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(true); - }) - })); - - it ('sholud return true when any in array doesn"t match but only matches', fakeAsync(() => { - route = { data: { - permissions: { - except: ['DOESNT MATCH', "AWESOME"], - only: ['MANAGER', 'AWESOME'] - } - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(true); - }) - })); - it ('sholud return false when except in array doesn"t match and only also doesn"t matches', fakeAsync(() => { - route = { data: { - permissions: { - except: ['DOESNT MATCH', "AWESOME"], - only: ['gg', 'AWESOME'], - redirectTo: './404' - } - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['./404']); - }) - })); -}); - -describe('Permissions guard Except and only together with isolation in root', () => { - - let permissionGuard: NgxPermissionsGuard; - let fakeRouter; - let route; - beforeEach(() => { - TestBed.configureTestingModule({ - imports: [NgxPermissionsModule.forRoot({permissionsIsolate: true, rolesIsolate: true})] - }); - }); - beforeEach(inject([NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService) => { - fakeRouter = {navigate: () => {}}; - spyOn(fakeRouter, 'navigate') - - service.addPermission('MANAGER'); - permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); - })); - - it('should create an instance', () => { - expect(permissionGuard).toBeTruthy(); - }); - - it ('sholud return false when except matches and it should not check only and redirect to 404', fakeAsync(() => { - route = { data: { - permissions: { - except: 'MANAGER', - only: 'AWESOME', - redirectTo: './404' - } - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['./404']); - }) - })); - - it ('should return false when except matches at least one array', fakeAsync(() => { - route = { data: { - permissions: { - except: ["MANAGER", 'Something else'], - only: 'AWESOME' - } - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(false); - }) - })); - - it ('sholud return true when except doesn"t match but only matcher', fakeAsync(() => { - route = { data: { - permissions: { - except: 'DOESNT MATCH', - only: "MANAGER" - } - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(true); - }) - })); - - it ('sholud return true when any in array doesn"t match but only matches', fakeAsync(() => { - route = { data: { - permissions: { - except: ['DOESNT MATCH', "AWESOME"], - only: ['MANAGER', 'AWESOME'] - } - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(true); - }) - })); - it ('sholud return false when except in array doesn"t match and only also doesn"t matches', fakeAsync(() => { - route = { data: { - permissions: { - except: ['DOESNT MATCH', "AWESOME"], - only: ['gg', 'AWESOME'], - redirectTo: './404' - } - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['./404']); - }) - })); -}); - - -describe('Permissions guard use only dynamically', () => { - - let permissionGuard: NgxPermissionsGuard; - let fakeRouter; - let route; - let testRouter; - beforeEach(() => { - TestBed.configureTestingModule({ - - imports: [NgxPermissionsModule.forRoot(), - - RouterTestingModule.withRoutes( - [ - { - path: 'crisis-center/:id', - redirectTo: '404', - data: { - permissions: { - except: (route: ActivatedRouteSnapshot, awesome: RouterStateSnapshot) => { - return true; - } - }, - } - }, - ])] - }); - }); - beforeEach(inject([NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService, router: Router) => { - fakeRouter = {navigate: () => {}}; - - service.addPermission('MANAGER'); - // fakeRouter = router; - spyOn(fakeRouter, 'navigate'); - permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); - })); - - it('should create an instance', () => { - expect(permissionGuard).toBeTruthy(); - }); - - it ('sholud return true when only matches and it should not check only', fakeAsync(() => { - route = { data: { - permissions: { - only: (route: ActivatedRouteSnapshot, awesome: RouterStateSnapshot) => { - if (route.data.path.includes(44)) { - return ['MANAGER'] - } else { - return 'notManager' - } - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(true); - }) - })); - - it ('should return true when except matches and it should ', fakeAsync(() => { - route = { data: { - permissions: { - except: (route: ActivatedRouteSnapshot, awesome: RouterStateSnapshot) => { - if (route.data.path.includes('doesntInclude')) { - return ['MANAGER'] - } else { - return 'notManager' - } - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(true); - }) - })); - - it ('should return true when except doens"t match but only matches it should true', fakeAsync(() => { - route = { data: { - permissions: { - except: (route: ActivatedRouteSnapshot, awesome: RouterStateSnapshot) => { - if (route.data.path.includes('doesntInclude')) { - return ['MANAGER'] - } else { - return 'notManager' - } - }, - only: (route: ActivatedRouteSnapshot, awesome: RouterStateSnapshot) => { - if (route.data.path.includes('44')) { - return ['MANAGER'] - } else { - return 'notManager' - } - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(true); - }) - })); - - it ('should return true when except doens"t match but only matches it should true', fakeAsync(() => { - route = { data: { - permissions: { - except: (route: ActivatedRouteSnapshot, awesome: RouterStateSnapshot) => { - if (route.data.path.includes('doesntInclude')) { - return ['MANAGER'] - } else { - return 'notManager' - } - }, - only: (route: ActivatedRouteSnapshot, awesome: RouterStateSnapshot) => { - if (route.data.path.includes('gg')) { - return ['MANAGER'] - } else { - return 'notManager' - } - }, - redirectTo: '/404' - }, - path: 'crisis-center/44' - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['/404']); - }) - })); -}); - -describe('Permissions guard test redirectTo path parameters dynamically', () => { - - let permissionGuard: NgxPermissionsGuard; - let fakeRouter; - let route; - let testRouter; - beforeEach(() => { - TestBed.configureTestingModule({ - - imports: [NgxPermissionsModule.forRoot(), - - RouterTestingModule.withRoutes( - [ - { - path: 'crisis-center/:id', - redirectTo: '404', - data: { - permissions: { - except: (route: ActivatedRouteSnapshot, awesome: RouterStateSnapshot) => { - return true; - }, - redirectTo: { - navigationCommands: ['123'], - navigationExtras: { - skipLocationChange: true - } - } - }, - } - }, - ])] - }); - }); - beforeEach(inject([NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService, router: Router) => { - fakeRouter = {navigate: () => {}}; - - service.addPermission('MANAGER'); - // fakeRouter = router; - spyOn(fakeRouter, 'navigate'); - permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); - })); - - it('should create an instance', () => { - expect(permissionGuard).toBeTruthy(); - }); - - it ('sholud redirect to parameters specified on navigation commands and navigationExtras', fakeAsync(() => { - route = { data: { - permissions: { - only: "TIED", - redirectTo: { - navigationCommands: ['123'], - navigationExtras: { - skipLocationChange: true - } - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['123'], {skipLocationChange: true}); - - }) - })); - - it ('sholud redirect to parameters specified in navigation commands and navigationExtras', fakeAsync(() => { - route = { data: { - permissions: { - only: "TIED", - redirectTo: { - navigationCommands: (rejectedPermission, route) => { - return ['123'] - }, - navigationExtras: (route) => { - return { - skipLocationChange: true - } - } - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['123'], {skipLocationChange: true}); - - }) - })); - - it ('except sholud redirect to parameters specified in navigation commands and navigationExtras', fakeAsync(() => { - route = { data: { - permissions: { - except: "MANAGER", - redirectTo: { - navigationCommands: (rejectedPermission, route) => { - return ['123'] - }, - navigationExtras: (route) => { - return { - skipLocationChange: true - } - } - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['123'], {skipLocationChange: true}); - - }) - })); -}); - - -describe('Permissions guard test redirectTo path multiple redirectionRule', () => { - - let permissionGuard: NgxPermissionsGuard; - let fakeRouter; - let route; - let testRouter; - let fakeService; - beforeEach(() => { - TestBed.configureTestingModule({ - - imports: [NgxPermissionsModule.forRoot()] - }); - }); - beforeEach(inject([NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService) => { - fakeRouter = {navigate: () => {}}; - - service.addPermission('canReadAgenda'); - fakeService = service; - // fakeRouter = router; - spyOn(fakeRouter, 'navigate'); - permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); - })); - - it('should create an instance', () => { - expect(permissionGuard).toBeTruthy(); - }); - - it ('sholud redirect dashboard can canRead Agenda fullfils can edit agenda fails', fakeAsync(() => { - route = { data: { - permissions: { - except: [ 'canEditAgenda', 'canReadAgenda', "canRun"], - redirectTo: { - canReadAgenda: 'agendaList', - canEditAgenda: 'dashboard', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['agendaList']); - }) - })); - - it ('sholud redirect to run when there is permission canRun and it fails', fakeAsync(() => { - fakeService.addPermission('canEditAgenda'); - - route = { data: { - permissions: { - except: ["canRun", 'canReadAgenda', 'canEditAgenda' ], - redirectTo: { - canReadAgenda: 'agendaList', - canEditAgenda: 'dashboard', - canRun: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['agendaList']); - }) - })); - - it ('sholud path when nothing fails', fakeAsync(() => { - fakeService.addPermission('canEditAgenda'); - - route = { data: { - permissions: { - except: ['aweomse', 'awesome'], - redirectTo: { - canReadAgenda: 'agendaList', - canEditAgenda: 'dashboard', - canRun: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(true); - }) - })); - - it ('redirect to default route when it fails but there is no redirect rule for that permission', fakeAsync(() => { - - route = { data: { - permissions: { - except: ['canReadAgenda', 'canEditAgenda'], - redirectTo: { - canRun: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['login']); - - }) - })); - - it ('redirect to only failed route when except passes but only fails', fakeAsync(() => { - - route = { data: { - permissions: { - except: ['canEditAgenda'], - only: [ 'canRunAgenda'], - redirectTo: { - canReadAgenda: 'agendaList', - canRunAgenda: 'dashboard', - canRun: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['dashboard']); - - }) - })); - - it ('path if except and only passes', fakeAsync(() => { - fakeService.addPermission('canRunAgenda'); - route = { data: { - permissions: { - except: ['canEditAgenda'], - only: [ 'canRunAgenda'], - redirectTo: { - canReadAgenda: 'agendaList', - canRunAgenda: 'dashboard', - canRun: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(true); - - }) - })); - - - it ('redirect fail on can editAgenda and redirect to dashboard', fakeAsync(() => { - route = { data: { - permissions: { - only: [ 'canReadAgenda', 'canEditAgenda' , "canRun"], - redirectTo: { - canReadAgenda: 'agendaList', - canEditAgenda: 'dashboard', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['dashboard']); - }) - })); - - it ('redirect to dashboard when canEdit agenda fails only', fakeAsync(() => { - route = { data: { - permissions: { - only: [ 'canReadAgenda', 'canEditAgenda' , "canRun"], - redirectTo: { - canReadAgenda: 'agendaList', - canEditAgenda: (route) => { - return 'dashboard' - }, - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['dashboard']); - }) - })); - - it ('redirect to dashboard when canEdit agenda fails with objectProperty only', fakeAsync(() => { - route = { data: { - permissions: { - only: [ 'canReadAgenda', 'canEditAgenda' , "canRun"], - redirectTo: { - canReadAgenda: 'agendaList', - canEditAgenda: { - navigationCommands: ['123'], - navigationExtras: { - skipLocationChange: true - } - }, - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['123'], {skipLocationChange: true}); - }) - })); - - it ('should redirect to 123 when redirect to multiple and used as function', fakeAsync(() => { - route = { data: { - permissions: { - only: [ 'canReadAgenda', 'canEditAgenda' , "canRun"], - redirectTo: { - canReadAgenda: 'agendaList', - canEditAgenda: () => { - return { - navigationCommands: ['123'], - navigationExtras: { - skipLocationChange: true - } - } - }, - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['123'], {skipLocationChange: true}); - }) - })); - - it ('redirect to default when only fails but there is no redirection rule', fakeAsync(() => { - fakeService.addPermission('canEditAgenda'); - - route = { data: { - permissions: { - only: ['canReadAgenda', 'canEditAgenda', 'Can run' ], - redirectTo: { - canReadAgenda: 'agendaList', - canEditAgenda: 'dashboard', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['login']); - }) - })); - - - - it ('sholud path when nothing fails in only blaock', fakeAsync(() => { - fakeService.addPermission('canEditAgenda'); - - route = { data: { - permissions: { - only: ['canEditAgenda'], - redirectTo: { - canReadAgenda: 'agendaList', - canEditAgenda: 'dashboard', - canRun: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(true); - }) - })); -}); - -describe('Permissions guard test redirectTo path multiple redirectionRule permissions load as string', () => { - - let permissionGuard: NgxPermissionsGuard; - let fakeRouter; - let route; - let testRouter; - let fakeService; - beforeEach(() => { - TestBed.configureTestingModule({ - - imports: [NgxPermissionsModule.forRoot()] - }); - }); - beforeEach(inject([NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService) => { - fakeRouter = {navigate: () => {}}; - - service.addPermission('canReadAgenda'); - fakeService = service; - // fakeRouter = router; - spyOn(fakeRouter, 'navigate'); - permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); - })); - - it('should create an instance', () => { - expect(permissionGuard).toBeTruthy(); - }); - - it ('sholud redirect dashboard can canRead Agenda fullfils can edit agenda fails', fakeAsync(() => { - route = { data: { - permissions: { - except: 'canReadAgenda', - redirectTo: { - canReadAgenda: 'agendaList', - canEditAgenda: 'dashboard', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['agendaList']); - }) - })); - - it ('sholud redirect to run when there is permission canRun and it fails', fakeAsync(() => { - fakeService.addPermission('canEditAgenda'); - - route = { data: { - permissions: { - only: "DELETE", - redirectTo: { - canReadAgenda: 'agendaList', - canEditAgenda: 'dashboard', - DELETE: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['run']); - }) - })); - - it ('sholud path when nothing fails', fakeAsync(() => { - fakeService.addPermission('canEditAgenda'); - - route = { data: { - permissions: { - except: 'aweomse', - redirectTo: { - canReadAgenda: 'agendaList', - canEditAgenda: 'dashboard', - canRun: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(true); - }) - })); - // - it ('redirect to default route when except fails but there is no redirect rule for that permission', fakeAsync(() => { - - route = { data: { - permissions: { - except: 'canReadAgenda', - redirectTo: { - canRun: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['login']); - - }) - })); - - it ('redirect to only failed route when except passes but only fails', fakeAsync(() => { - - route = { data: { - permissions: { - except: 'canEditAgenda', - only: 'canRunAgenda', - redirectTo: { - canReadAgenda: 'agendaList', - canRunAgenda: 'dashboard', - canRun: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['dashboard']); - }) - })); - - it ('path if except and only passes', fakeAsync(() => { - fakeService.addPermission('canRunAgenda'); - route = { data: { - permissions: { - except: 'canEditAgenda', - only: 'canRunAgenda', - redirectTo: { - canReadAgenda: 'agendaList', - canRunAgenda: 'dashboard', - canRun: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(true); - - }) - })); - - - - it ('sholud path when nothing fails in only blaock', fakeAsync(() => { - fakeService.addPermission('canEditAgenda'); - route = { data: { - permissions: { - only: 'canEditAgenda', - redirectTo: { - canReadAgenda: 'agendaList', - canEditAgenda: 'dashboard', - canRun: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(true); - }) - })); -}); - - -describe('Permissions guard test redirectTo path dynamic redirectionRule permissions load as string', () => { - - let permissionGuard: NgxPermissionsGuard; - let fakeRouter; - let route; - let testRouter; - let fakeService; - beforeEach(() => { - TestBed.configureTestingModule({ - - imports: [NgxPermissionsModule.forRoot()] - }); - }); - beforeEach(inject([NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService) => { - fakeRouter = {navigate: () => {}}; - - service.addPermission('canReadAgenda'); - fakeService = service; - // fakeRouter = router; - spyOn(fakeRouter, 'navigate'); - permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); - })); - - it('should create an instance', () => { - expect(permissionGuard).toBeTruthy(); - }); - - it ('sholud redirect dashboard can canRead Agenda fullfils can edit agenda fails', fakeAsync(() => { - route = { data: { - permissions: { - except: 'canReadAgenda', - redirectTo: { - canReadAgenda: 'agendaList', - canEditAgenda: 'dashboard', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['agendaList']); - }) - })); - - it ('sholud redirect to run when there is permission canRun and it fails', fakeAsync(() => { - fakeService.addPermission('canEditAgenda'); - - route = { data: { - permissions: { - only: "DELETE", - redirectTo: { - canReadAgenda: 'agendaList', - canEditAgenda: 'dashboard', - DELETE: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['run']); - }) - })); - - it ('sholud path when nothing fails', fakeAsync(() => { - fakeService.addPermission('canEditAgenda'); - - route = { data: { - permissions: { - except: 'aweomse', - redirectTo: { - canReadAgenda: 'agendaList', - canEditAgenda: 'dashboard', - canRun: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(true); - }) - })); - // - it ('redirect to default route when except fails but there is no redirect rule for that permission', fakeAsync(() => { - - route = { data: { - permissions: { - except: 'canReadAgenda', - redirectTo: { - canRun: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['login']); - - }) - })); - - it ('redirect to only failed route when except passes but only fails', fakeAsync(() => { - - route = { data: { - permissions: { - except: 'canEditAgenda', - only: 'canRunAgenda', - redirectTo: { - canReadAgenda: 'agendaList', - canRunAgenda: 'dashboard', - canRun: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['dashboard']); - }) - })); - it ('redirect to only failed route when except passes but only fails called as function', fakeAsync(() => { - - route = { data: { - permissions: { - except: 'canEditAgenda', - only: 'canRunAgenda', - redirectTo: { - canReadAgenda: 'agendaList', - canRunAgenda: (failedPermissionName: any,b: any,c: any) => { - return failedPermissionName; - }, - canRun: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['canRunAgenda']); - }) - })); - - it ('redirect to except failed route when except dont pass as a function', fakeAsync(() => { - - route = { data: { - permissions: { - except: 'canReadAgenda', - only: 'canRunAgenda', - redirectTo: { - canReadAgenda: (failedPermissionName: any,b: any,c: any) => { - return failedPermissionName; - }, - canRun: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['canReadAgenda']); - }) - })); - - it ('path if except and only passes', fakeAsync(() => { - fakeService.addPermission('canRunAgenda'); - route = { data: { - permissions: { - except: 'canEditAgenda', - only: 'canRunAgenda', - redirectTo: { - canReadAgenda: 'agendaList', - canRunAgenda: 'dashboard', - canRun: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(true); - - }) - })); - - - - it ('sholud path when nothing fails in only blaock', fakeAsync(() => { - fakeService.addPermission('canEditAgenda'); - route = { data: { - permissions: { - only: 'canEditAgenda', - redirectTo: { - canReadAgenda: 'agendaList', - canEditAgenda: 'dashboard', - canRun: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(true); - }) - })); -}); - -describe('Permissions guard test redirectTo as function', () => { - - let permissionGuard: NgxPermissionsGuard; - let fakeRouter; - let route; - let testRouter; - let fakeService; - beforeEach(() => { - TestBed.configureTestingModule({ - - imports: [NgxPermissionsModule.forRoot()] - }); - }); - beforeEach(inject([NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService) => { - fakeRouter = {navigate: () => {}}; - - service.addPermission('canReadAgenda'); - fakeService = service; - // fakeRouter = router; - spyOn(fakeRouter, 'navigate'); - permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); - })); - - it('should create an instance', () => { - expect(permissionGuard).toBeTruthy(); - }); - - it ('sholud redirect dashboard can canRead Agenda fullfils can edit agenda fails', fakeAsync(() => { - route = { data: { - permissions: { - except: [ 'canEditAgenda', 'canReadAgenda', "canRun"], - redirectTo: (failedPermission, route) => { - return failedPermission; - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['canReadAgenda']); - }) - })); - - it ('it should dynamically redirect to failed route redirectoTo as fucntion', fakeAsync(() => { - route = { data: { - permissions: { - only: [ "canRun"], - redirectTo: (failedPermission, route) => { - return failedPermission; - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['canRun']); - }) - })); - - it ('it should dynamically redirect to failed route redirectoTo as fucntion when except pass only fails', fakeAsync(() => { - route = { data: { - permissions: { - except: 'nice', - only: [ "canRun"], - redirectTo: (failedPermission, route) => { - return failedPermission; - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canLoad(route).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['canRun']); - }) - })); -}); \ No newline at end of file diff --git a/src/router/permissions-guard.service.spec.ts b/src/router/permissions-guard.service.spec.ts deleted file mode 100644 index 79be1d5..0000000 --- a/src/router/permissions-guard.service.spec.ts +++ /dev/null @@ -1,1529 +0,0 @@ - -import { NgxPermissionsGuard } from './permissions-guard.service'; -import { async, fakeAsync, inject, TestBed } from '@angular/core/testing'; -import { NgxPermissionsService } from '../service/permissions.service'; -import { NgxRolesService } from '../service/roles.service'; -import { NgxPermissionsModule } from '../index'; -import { ActivatedRouteSnapshot, Router, RouterStateSnapshot } from '@angular/router'; -import { tick } from "@angular/core/testing"; -import { RouterTestingModule } from '@angular/router/testing'; - -describe('Permissions guard only', () => { - - let permissionGuard: NgxPermissionsGuard; - let route; - let fakeRouter; - beforeEach(() => { - TestBed.configureTestingModule({ - imports: [NgxPermissionsModule.forRoot()] - }); - }); - beforeEach(inject([NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService) => { - fakeRouter = {navigate: () => {}}; - spyOn(fakeRouter, 'navigate'); - - service.addPermission('ADMIN'); - permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); - })); - - it('should create an instance', () => { - expect(permissionGuard).toBeTruthy(); - }); - - it ('sholud return true when only fullfills', fakeAsync(() => { - route = { data: { - permissions: { - only: 'ADMIN' - } - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(true); - }) - })); - - it ('sholud return true when only is empty array', fakeAsync(() => { - route = { data: { - permissions: { - only: [] - } - }}; - expect( permissionGuard.canActivate(route, {} as RouterStateSnapshot)).toEqual(true); - - })); - - it ('sholud return true when no permissions array specified', fakeAsync(() => { - route = {}; - expect( permissionGuard.canActivate(route, {} as RouterStateSnapshot)).toEqual(true); - - })); - - it ('sholud return true when except is empty array', fakeAsync(() => { - route = { data: { - permissions: { - except: [] - } - }}; - expect( permissionGuard.canActivate(route, {} as RouterStateSnapshot)).toEqual(true); - - })); - - it ('sholud return false when only doesnt match', fakeAsync(() => { - route = { data: { - permissions: { - only: 'DOESNT MATCH' - } - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - }) - })); - - it ('sholud return false when only doesnt match and navigate to 404', fakeAsync(() => { - route = { data: { - permissions: { - only: 'DOESNT MATCH', - redirectTo: './404' - } - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['./404']) - }) - })); - - it ('should return false when only doesnt match and navigate to array 404', fakeAsync(() => { - route = { data: { - permissions: { - only: 'DOESNT MATCH', - redirectTo: ['./404'] - } - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['./404']) - }) - })); - - it ('should return true when neither only not except specified', fakeAsync(() => { - route = { data: { - permissions: { - only: '', - except: '', - redirectTo: ['./404'] - } - }}; - expect(permissionGuard.canActivate(route, {} as RouterStateSnapshot)).toBe(true); - })); - - it ('should return true when neither only not except specified as array', fakeAsync(() => { - route = { data: { - permissions: { - only: [], - except: [], - redirectTo: ['./404'] - } - }}; - expect(permissionGuard.canActivate(route, {} as RouterStateSnapshot)).toBe(true); - })) -}); - -describe('Permissions guard Except', () => { - - let permissionGuard: NgxPermissionsGuard; - let fakeRouter; - let route; - beforeEach(() => { - TestBed.configureTestingModule({ - imports: [NgxPermissionsModule.forRoot()] - }); - }); - beforeEach(inject([NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService) => { - fakeRouter = {navigate: () => {}}; - spyOn(fakeRouter, 'navigate'); - - service.addPermission('MANAGER'); - permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); - })); - - it('should create an instance', () => { - expect(permissionGuard).toBeTruthy(); - }); - - it ('sholud return false when except matches', fakeAsync(() => { - route = { data: { - permissions: { - except: 'MANAGER' - } - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - }) - })); - - it ('sholud return false when except matches and redirectTo 404', fakeAsync(() => { - route = { data: { - permissions: { - except: 'MANAGER', - redirectTo: './404' - } - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['./404']); - }) - })); - - it ('sholud return false when except matches at least one array', fakeAsync(() => { - route = { data: { - permissions: { - except: ["MANAGER", 'Something else'] - } - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - }) - })); - - it ('sholud return false when except matches in array and redirectTo 404', fakeAsync(() => { - route = { data: { - permissions: { - except: ["MANAGER", 'Something else'], - redirectTo: './404' - } - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['./404']); - }) - })); - - it ('sholud return true when except doesn"t match', fakeAsync(() => { - route = { data: { - permissions: { - except: 'DOESNT MATCH' - } - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(true); - }) - })); - - it ('sholud return true when any in array doesn"t match', fakeAsync(() => { - route = { data: { - permissions: { - except: ['DOESNT MATCH', "AWESOME"] - } - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(true); - }) - })); - - -}); - - -describe('Permissions guard Except and only together', () => { - - let permissionGuard: NgxPermissionsGuard; - let fakeRouter; - let route; - beforeEach(() => { - TestBed.configureTestingModule({ - imports: [NgxPermissionsModule.forRoot()] - }); - }); - beforeEach(inject([NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService) => { - fakeRouter = {navigate: () => {}}; - spyOn(fakeRouter, 'navigate') - - service.addPermission('MANAGER'); - permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); - })); - - it('should create an instance', () => { - expect(permissionGuard).toBeTruthy(); - }); - - it ('sholud return false when except matches and it should not check only and redirect to 404', fakeAsync(() => { - route = { data: { - permissions: { - except: 'MANAGER', - only: 'AWESOME', - redirectTo: './404' - } - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['./404']); - }) - })); - - it ('should return false when except matches at least one array', fakeAsync(() => { - route = { data: { - permissions: { - except: ["MANAGER", 'Something else'], - only: 'AWESOME' - } - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - }) - })); - - it ('sholud return true when except doesn"t match but only matcher', fakeAsync(() => { - route = { data: { - permissions: { - except: 'DOESNT MATCH', - only: "MANAGER" - } - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(true); - }) - })); - - it ('sholud return true when any in array doesn"t match but only matches', fakeAsync(() => { - route = { data: { - permissions: { - except: ['DOESNT MATCH', "AWESOME"], - only: ['MANAGER', 'AWESOME'] - } - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(true); - }) - })); - it ('sholud return false when except in array doesn"t match and only also doesn"t matches', fakeAsync(() => { - route = { data: { - permissions: { - except: ['DOESNT MATCH', "AWESOME"], - only: ['gg', 'AWESOME'], - redirectTo: './404' - } - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['./404']); - }) - })); -}); - - -describe('Permissions guard use only dynamically', () => { - - let permissionGuard: NgxPermissionsGuard; - let fakeRouter; - let route; - let testRouter; - beforeEach(() => { - TestBed.configureTestingModule({ - - imports: [NgxPermissionsModule.forRoot(), - - RouterTestingModule.withRoutes( - [ - { - path: 'crisis-center/:id', - redirectTo: '404', - data: { - permissions: { - except: (route: ActivatedRouteSnapshot, awesome: RouterStateSnapshot) => { - return true; - } - }, - } - }, - ])] - }); - }); - beforeEach(inject([NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService, router: Router) => { - fakeRouter = {navigate: () => {}}; - - service.addPermission('MANAGER'); - // fakeRouter = router; - spyOn(fakeRouter, 'navigate'); - permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); - })); - - it('should create an instance', () => { - expect(permissionGuard).toBeTruthy(); - }); - - it ('sholud return true when only matches and it should not check only', fakeAsync(() => { - route = { data: { - permissions: { - only: (route: ActivatedRouteSnapshot, awesome: RouterStateSnapshot) => { - if (route.data.path.includes(44)) { - return ['MANAGER'] - } else { - return 'notManager' - } - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(true); - }) - })); - - it ('should return true when except matches and it should ', fakeAsync(() => { - route = { data: { - permissions: { - except: (route: ActivatedRouteSnapshot, awesome: RouterStateSnapshot) => { - if (route.data.path.includes('doesntInclude')) { - return ['MANAGER'] - } else { - return 'notManager' - } - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(true); - }) - })); - - it ('should return true when except doens"t match but only matches it should true', fakeAsync(() => { - route = { data: { - permissions: { - except: (route: ActivatedRouteSnapshot, awesome: RouterStateSnapshot) => { - if (route.data.path.includes('doesntInclude')) { - return ['MANAGER'] - } else { - return 'notManager' - } - }, - only: (route: ActivatedRouteSnapshot, awesome: RouterStateSnapshot) => { - if (route.data.path.includes('44')) { - return ['MANAGER'] - } else { - return 'notManager' - } - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(true); - }) - })); - - it ('should return true when except doens"t match but only matches it should true', fakeAsync(() => { - route = { data: { - permissions: { - except: (route: ActivatedRouteSnapshot, awesome: RouterStateSnapshot) => { - if (route.data.path.includes('doesntInclude')) { - return ['MANAGER'] - } else { - return 'notManager' - } - }, - only: (route: ActivatedRouteSnapshot, awesome: RouterStateSnapshot) => { - if (route.data.path.includes('gg')) { - return ['MANAGER'] - } else { - return 'notManager' - } - }, - redirectTo: '/404' - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['/404']); - }) - })); -}); - -describe('Permissions guard test redirectTo path parameters dynamically', () => { - - let permissionGuard: NgxPermissionsGuard; - let fakeRouter; - let route; - let testRouter; - beforeEach(() => { - TestBed.configureTestingModule({ - - imports: [NgxPermissionsModule.forRoot(), - - RouterTestingModule.withRoutes( - [ - { - path: 'crisis-center/:id', - redirectTo: '404', - data: { - permissions: { - except: (route: ActivatedRouteSnapshot, awesome: RouterStateSnapshot) => { - return true; - }, - redirectTo: { - navigationCommands: ['123'], - navigationExtras: { - skipLocationChange: true - } - } - }, - } - }, - ])] - }); - }); - beforeEach(inject([NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService, router: Router) => { - fakeRouter = {navigate: () => {}}; - - service.addPermission('MANAGER'); - // fakeRouter = router; - spyOn(fakeRouter, 'navigate'); - permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); - })); - - it('should create an instance', () => { - expect(permissionGuard).toBeTruthy(); - }); - - it ('sholud redirect to parameters specified on navigation commands and navigationExtras', fakeAsync(() => { - route = { data: { - permissions: { - only: "TIED", - redirectTo: { - navigationCommands: ['123'], - navigationExtras: { - skipLocationChange: true - } - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['123'], {skipLocationChange: true}); - - }) - })); - - it ('sholud redirect to parameters specified in navigation commands and navigationExtras', fakeAsync(() => { - route = { data: { - permissions: { - only: "TIED", - redirectTo: { - navigationCommands: (rejectedPermission, route, state) => { - return ['123'] - }, - navigationExtras: (route, state) => { - return { - skipLocationChange: true - } - } - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['123'], {skipLocationChange: true}); - - }) - })); - - it ('except sholud redirect to parameters specified in navigation commands and navigationExtras', fakeAsync(() => { - route = { data: { - permissions: { - except: "MANAGER", - redirectTo: { - navigationCommands: (rejectedPermission, route, state) => { - return ['123'] - }, - navigationExtras: (route, state) => { - return { - skipLocationChange: true - } - } - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['123'], {skipLocationChange: true}); - - }) - })); -}); - - -describe('Permissions guard test redirectTo path multiple redirectionRule', () => { - - let permissionGuard: NgxPermissionsGuard; - let fakeRouter; - let route; - let testRouter; - let fakeService; - beforeEach(() => { - TestBed.configureTestingModule({ - - imports: [NgxPermissionsModule.forRoot()] - }); - }); - beforeEach(inject([NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService) => { - fakeRouter = {navigate: () => {}}; - - service.addPermission('canReadAgenda'); - fakeService = service; - // fakeRouter = router; - spyOn(fakeRouter, 'navigate'); - permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); - })); - - it('should create an instance', () => { - expect(permissionGuard).toBeTruthy(); - }); - - it ('sholud redirect dashboard can canRead Agenda fullfils can edit agenda fails', fakeAsync(() => { - route = { data: { - permissions: { - except: [ 'canEditAgenda', 'canReadAgenda', "canRun"], - redirectTo: { - canReadAgenda: 'agendaList', - canEditAgenda: 'dashboard', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['agendaList']); - }) - })); - - it ('sholud redirect to run when there is permission canRun and it fails', fakeAsync(() => { - fakeService.addPermission('canEditAgenda'); - - route = { data: { - permissions: { - except: ["canRun", 'canReadAgenda', 'canEditAgenda' ], - redirectTo: { - canReadAgenda: 'agendaList', - canEditAgenda: 'dashboard', - canRun: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['agendaList']); - }) - })); - - it ('sholud path when nothing fails', fakeAsync(() => { - fakeService.addPermission('canEditAgenda'); - - route = { data: { - permissions: { - except: ['aweomse', 'awesome'], - redirectTo: { - canReadAgenda: 'agendaList', - canEditAgenda: 'dashboard', - canRun: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(true); - }) - })); - - it ('redirect to default route when it fails but there is no redirect rule for that permission', fakeAsync(() => { - - route = { data: { - permissions: { - except: ['canReadAgenda', 'canEditAgenda'], - redirectTo: { - canRun: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['login']); - - }) - })); - - it ('redirect to only failed route when except passes but only fails', fakeAsync(() => { - - route = { data: { - permissions: { - except: ['canEditAgenda'], - only: [ 'canRunAgenda'], - redirectTo: { - canReadAgenda: 'agendaList', - canRunAgenda: 'dashboard', - canRun: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['dashboard']); - - }) - })); - - it ('path if except and only passes', fakeAsync(() => { - fakeService.addPermission('canRunAgenda'); - route = { data: { - permissions: { - except: ['canEditAgenda'], - only: [ 'canRunAgenda'], - redirectTo: { - canReadAgenda: 'agendaList', - canRunAgenda: 'dashboard', - canRun: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(true); - - }) - })); - - - it ('redirect fail on can editAgenda and redirect to dashboard', fakeAsync(() => { - route = { data: { - permissions: { - only: [ 'canReadAgenda', 'canEditAgenda' , "canRun"], - redirectTo: { - canReadAgenda: 'agendaList', - canEditAgenda: 'dashboard', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['dashboard']); - }) - })); - - it ('redirect to dashboard when canEdit agenda fails only', fakeAsync(() => { - route = { data: { - permissions: { - only: [ 'canReadAgenda', 'canEditAgenda' , "canRun"], - redirectTo: { - canReadAgenda: 'agendaList', - canEditAgenda: (route, state) => { - return 'dashboard' - }, - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['dashboard']); - }) - })); - - it ('redirect to dashboard when canEdit agenda fails with objectProperty only', fakeAsync(() => { - route = { data: { - permissions: { - only: [ 'canEditAgenda' , "canRun"], - redirectTo: { - canReadAgenda: 'agendaList', - canEditAgenda: { - navigationCommands: ['123'], - navigationExtras: { - skipLocationChange: true - } - }, - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['123'], {skipLocationChange: true}); - }) - })); - - it ('should redirect to 123 when redirect to multiple and used as function', fakeAsync(() => { - route = { data: { - permissions: { - only: [ 'canReadAgenda', 'canEditAgenda' , "canRun"], - redirectTo: { - canReadAgenda: 'agendaList', - canEditAgenda: () => { - return { - navigationCommands: ['123'], - navigationExtras: { - skipLocationChange: true - } - } - }, - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['123'], {skipLocationChange: true}); - }) - })); - - it ('redirect to default when only fails but there is no redirection rule', fakeAsync(() => { - fakeService.addPermission('canEditAgenda'); - - route = { data: { - permissions: { - only: ['canReadAgenda', 'canEditAgenda', 'Can run' ], - redirectTo: { - canReadAgenda: 'agendaList', - canEditAgenda: 'dashboard', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - }) - })); - - - - it ('sholud path when nothing fails in only blaock', fakeAsync(() => { - fakeService.addPermission('canEditAgenda'); - - route = { data: { - permissions: { - only: ['canEditAgenda'], - redirectTo: { - canReadAgenda: 'agendaList', - canEditAgenda: 'dashboard', - canRun: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(true); - }) - })); -}); - -describe('Permissions guard test redirectTo path multiple redirectionRule permissions load as string', () => { - - let permissionGuard: NgxPermissionsGuard; - let fakeRouter; - let route; - let testRouter; - let fakeService; - beforeEach(() => { - TestBed.configureTestingModule({ - - imports: [NgxPermissionsModule.forRoot()] - }); - }); - beforeEach(inject([NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService) => { - fakeRouter = {navigate: () => {}}; - - service.addPermission('canReadAgenda'); - fakeService = service; - // fakeRouter = router; - spyOn(fakeRouter, 'navigate'); - permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); - })); - - it('should create an instance', () => { - expect(permissionGuard).toBeTruthy(); - }); - - it ('sholud redirect dashboard can canRead Agenda fullfils can edit agenda fails', fakeAsync(() => { - route = { data: { - permissions: { - except: 'canReadAgenda', - redirectTo: { - canReadAgenda: 'agendaList', - canEditAgenda: 'dashboard', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['agendaList']); - }) - })); - - it ('sholud redirect to run when there is permission canRun and it fails', fakeAsync(() => { - fakeService.addPermission('canEditAgenda'); - - route = { data: { - permissions: { - only: "DELETE", - redirectTo: { - canReadAgenda: 'agendaList', - canEditAgenda: 'dashboard', - DELETE: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['run']); - }) - })); - - it ('sholud path when nothing fails', fakeAsync(() => { - fakeService.addPermission('canEditAgenda'); - - route = { data: { - permissions: { - except: 'aweomse', - redirectTo: { - canReadAgenda: 'agendaList', - canEditAgenda: 'dashboard', - canRun: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(true); - }) - })); - // - it ('redirect to default route when except fails but there is no redirect rule for that permission', fakeAsync(() => { - - route = { data: { - permissions: { - except: 'canReadAgenda', - redirectTo: { - canRun: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['login']); - - }) - })); - - it ('redirect to only failed route when except passes but only fails', fakeAsync(() => { - - route = { data: { - permissions: { - except: 'canEditAgenda', - only: 'canRunAgenda', - redirectTo: { - canReadAgenda: 'agendaList', - canRunAgenda: 'dashboard', - canRun: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['dashboard']); - }) - })); - - it ('path if except and only passes', fakeAsync(() => { - fakeService.addPermission('canRunAgenda'); - route = { data: { - permissions: { - except: 'canEditAgenda', - only: 'canRunAgenda', - redirectTo: { - canReadAgenda: 'agendaList', - canRunAgenda: 'dashboard', - canRun: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(true); - - }) - })); - - - - it ('sholud path when nothing fails in only blaock', fakeAsync(() => { - fakeService.addPermission('canEditAgenda'); - route = { data: { - permissions: { - only: 'canEditAgenda', - redirectTo: { - canReadAgenda: 'agendaList', - canEditAgenda: 'dashboard', - canRun: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(true); - }) - })); -}); - - -describe('Permissions guard test redirectTo path dynamic redirectionRule permissions load as string', () => { - - let permissionGuard: NgxPermissionsGuard; - let fakeRouter; - let route; - let testRouter; - let fakeService; - beforeEach(() => { - TestBed.configureTestingModule({ - - imports: [NgxPermissionsModule.forRoot()] - }); - }); - beforeEach(inject([NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService) => { - fakeRouter = {navigate: () => {}}; - - service.addPermission('canReadAgenda'); - fakeService = service; - // fakeRouter = router; - spyOn(fakeRouter, 'navigate'); - permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); - })); - - it('should create an instance', () => { - expect(permissionGuard).toBeTruthy(); - }); - - it ('sholud redirect dashboard can canRead Agenda fullfils can edit agenda fails', fakeAsync(() => { - route = { data: { - permissions: { - except: 'canReadAgenda', - redirectTo: { - canReadAgenda: 'agendaList', - canEditAgenda: 'dashboard', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['agendaList']); - }) - })); - - it ('sholud redirect to run when there is permission canRun and it fails', fakeAsync(() => { - fakeService.addPermission('canEditAgenda'); - - route = { data: { - permissions: { - only: "DELETE", - redirectTo: { - canReadAgenda: 'agendaList', - canEditAgenda: 'dashboard', - DELETE: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['run']); - }) - })); - - it ('sholud path when nothing fails', fakeAsync(() => { - fakeService.addPermission('canEditAgenda'); - - route = { data: { - permissions: { - except: 'aweomse', - redirectTo: { - canReadAgenda: 'agendaList', - canEditAgenda: 'dashboard', - canRun: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(true); - }) - })); - // - it ('redirect to default route when except fails but there is no redirect rule for that permission', fakeAsync(() => { - - route = { data: { - permissions: { - except: 'canReadAgenda', - redirectTo: { - canRun: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['login']); - - }) - })); - - it ('redirect to only failed route when except passes but only fails', fakeAsync(() => { - - route = { data: { - permissions: { - except: 'canEditAgenda', - only: 'canRunAgenda', - redirectTo: { - canReadAgenda: 'agendaList', - canRunAgenda: 'dashboard', - canRun: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['dashboard']); - }) - })); - it ('redirect to only failed route when except passes but only fails called as function', fakeAsync(() => { - - route = { data: { - permissions: { - except: 'canEditAgenda', - only: 'canRunAgenda', - redirectTo: { - canReadAgenda: 'agendaList', - canRunAgenda: (failedPermissionName: any,b: any,c: any) => { - return failedPermissionName; - }, - canRun: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['canRunAgenda']); - }) - })); - - it ('redirect to except failed route when except dont pass as a function', fakeAsync(() => { - - route = { data: { - permissions: { - except: 'canReadAgenda', - only: 'canRunAgenda', - redirectTo: { - canReadAgenda: (failedPermissionName: any,b: any,c: any) => { - return failedPermissionName; - }, - canRun: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['canReadAgenda']); - }) - })); - - it ('path if except and only passes', fakeAsync(() => { - fakeService.addPermission('canRunAgenda'); - route = { data: { - permissions: { - except: 'canEditAgenda', - only: 'canRunAgenda', - redirectTo: { - canReadAgenda: 'agendaList', - canRunAgenda: 'dashboard', - canRun: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(true); - - }) - })); - - - - it ('sholud path when nothing fails in only blaock', fakeAsync(() => { - fakeService.addPermission('canEditAgenda'); - route = { data: { - permissions: { - only: 'canEditAgenda', - redirectTo: { - canReadAgenda: 'agendaList', - canEditAgenda: 'dashboard', - canRun: 'run', - default: 'login' - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(true); - }) - })); -}); - -describe('Permissions guard test redirectTo as function', () => { - - let permissionGuard: NgxPermissionsGuard; - let fakeRouter; - let route; - let testRouter; - let fakeService; - beforeEach(() => { - TestBed.configureTestingModule({ - - imports: [NgxPermissionsModule.forRoot()] - }); - }); - beforeEach(inject([NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService) => { - fakeRouter = {navigate: () => {}}; - - service.addPermission('canReadAgenda'); - fakeService = service; - // fakeRouter = router; - spyOn(fakeRouter, 'navigate'); - permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); - })); - - it('should create an instance', () => { - expect(permissionGuard).toBeTruthy(); - }); - - it ('sholud redirect dashboard can canRead Agenda fullfils can edit agenda fails', fakeAsync(() => { - route = { data: { - permissions: { - except: [ 'canEditAgenda', 'canReadAgenda', "canRun"], - redirectTo: (failedPermission, route, state) => { - return failedPermission; - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['canReadAgenda']); - }) - })); - - it ('it should dynamically redirect to failed route redirectoTo as fucntion', fakeAsync(() => { - route = { data: { - permissions: { - only: [ "canRun"], - redirectTo: (failedPermission, route, state) => { - return failedPermission; - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['canRun']); - }) - })); - - it ('it should dynamically redirect to failed route redirectoTo as fucntion when except pass only fails', fakeAsync(() => { - route = { data: { - permissions: { - except: 'nice', - only: [ "canRun"], - redirectTo: (failedPermission, route, state) => { - return failedPermission; - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['canRun']); - }) - })); - - it ('it should allow to pass when at least one of parameters allow passing and redirectToIsFunction', fakeAsync(() => { - function loginRedirect(activateRouteSnapshot: ActivatedRouteSnapshot, - routerStateSnapshot: RouterStateSnapshot) { - return 'login'; - } - route = { data: { - permissions: { - only: [ "canReadAgenda", "CAN_SWIM"], - redirectTo: loginRedirect - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(true); - }) - })); - - it ('it should allow to pass when at least except and only parameters passes the check', fakeAsync(() => { - function loginRedirect(permissonName, activateRouteSnapshot: ActivatedRouteSnapshot, - routerStateSnapshot: RouterStateSnapshot) { - localStorage.setItem('redirectUrl', routerStateSnapshot.url); - return 'login'; - } - route = { data: { - permissions: { - except: ['Dont exist'], - only: [ "CAN_SWIM", "TROLOLO"], - redirectTo: loginRedirect - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['login']); - }) - })); - - - it ('it should allow to pass when at least except parameters passes the check', fakeAsync(() => { - function loginRedirect(activateRouteSnapshot: ActivatedRouteSnapshot, - routerStateSnapshot: RouterStateSnapshot) { - return 'login'; - } - route = { data: { - permissions: { - except: ['Dont exist', 'Me also doesnt exist'], - redirectTo: loginRedirect - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(true); - }) - })); -}); - - -describe('Role guard test redirectTo as function', () => { - - let permissionGuard: NgxPermissionsGuard; - let fakeRouter; - let route; - let testRouter; - let fakeService; - let roleService; - beforeEach(() => { - TestBed.configureTestingModule({ - - imports: [NgxPermissionsModule.forRoot()] - }); - }); - beforeEach(inject([NgxPermissionsService, NgxRolesService], (service: NgxPermissionsService, rolesService: NgxRolesService) => { - fakeRouter = {navigate: () => {}}; - - service.addPermission('canReadAgenda'); - service.addPermission('AWESOME'); - rolesService.addRole('ADMIN', ['AWESOME', 'canReadAgenda']); - roleService = rolesService; - fakeService = service; - // fakeRouter = router; - spyOn(fakeRouter, 'navigate'); - permissionGuard = new NgxPermissionsGuard(service, rolesService, fakeRouter as Router); - })); - - it('should create an instance', () => { - expect(permissionGuard).toBeTruthy(); - }); - - xit ('Should redirect to failed permission', fakeAsync(() => { - route = { data: { - permissions: { - except: ['ADMIN'], - redirectTo: { - AWESOME: 'agendaList', - SOMETHING: 'dashboard', - canRun: 'run', - default: 'login' - } - // redirectTo: (failedPermission, route, state) => { - // console.log(failedPermission); - // return failedPermission; - // } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['canReadAgenda']); - }) - })); - - - - it ('it should dynamically redirect to failed route redirectoTo as fucntion', fakeAsync(() => { - route = { data: { - permissions: { - only: [ "canRun"], - redirectTo: (failedPermission, route, state) => { - return failedPermission; - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['canRun']); - }) - })); - - it ('it should dynamically redirect to failed role route redirectoTo as fucntion', fakeAsync(() => { - roleService.addRole('RUN', ['BLABLA', 'BLABLA']); - - route = { data: { - permissions: { - only: ["RUN"], - redirectTo: (failedPermission, route, state) => { - return failedPermission; - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - // expect(fakeRouter.navigate).toHaveBeenCalledWith(['canRun']); - }) - })); - - it ('it should dynamically pass if one satisfies', fakeAsync(() => { - roleService.addRole('RUN', ['BLABLA', 'BLABLA']); - - route = { data: { - permissions: { - only: ["RUN", "AWESOME"], - redirectTo: (failedPermission, route, state) => { - return failedPermission; - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(true); - }) - })); - - it ('it should dynamically redirect to failed route redirectoTo as fucntion when except pass only fails', fakeAsync(() => { - route = { data: { - permissions: { - except: 'nice', - only: [ "canRun"], - redirectTo: (failedPermission, route, state) => { - return failedPermission; - } - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['canRun']); - }) - })); - - it ('it should allow to pass when at least one of parameters allow passing and redirectToIsFunction', fakeAsync(() => { - function loginRedirect(activateRouteSnapshot: ActivatedRouteSnapshot, - routerStateSnapshot: RouterStateSnapshot) { - return 'login'; - } - route = { data: { - permissions: { - only: [ "canReadAgenda", "CAN_SWIM"], - redirectTo: loginRedirect - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(true); - }) - })); - - it ('it should allow to pass when at least except and only parameters passes the check', fakeAsync(() => { - function loginRedirect(permissonName, activateRouteSnapshot: ActivatedRouteSnapshot, - routerStateSnapshot: RouterStateSnapshot) { - localStorage.setItem('redirectUrl', routerStateSnapshot.url); - return 'login'; - } - route = { data: { - permissions: { - except: ['Dont exist'], - only: [ "CAN_SWIM", "TROLOLO"], - redirectTo: loginRedirect - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(false); - expect(fakeRouter.navigate).toHaveBeenCalledWith(['login']); - }) - })); - - - it ('it should allow to pass when at least except parameters passes the check', fakeAsync(() => { - function loginRedirect(activateRouteSnapshot: ActivatedRouteSnapshot, - routerStateSnapshot: RouterStateSnapshot) { - return 'login'; - } - route = { data: { - permissions: { - except: ['Dont exist', 'Me also doesnt exist'], - redirectTo: loginRedirect - }, - path: 'crisis-center/44' - }}; - permissionGuard.canActivate(route, {} as RouterStateSnapshot).then((data) => { - expect(data).toEqual(true); - }) - })); -}); \ No newline at end of file diff --git a/application/src/styles.css b/src/styles.css similarity index 100% rename from application/src/styles.css rename to src/styles.css diff --git a/src/test.ts b/src/test.ts new file mode 100644 index 0000000..1631789 --- /dev/null +++ b/src/test.ts @@ -0,0 +1,20 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: any; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/src/tsconfig.app.json b/src/tsconfig.app.json new file mode 100644 index 0000000..722c370 --- /dev/null +++ b/src/tsconfig.app.json @@ -0,0 +1,12 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/app", + "module": "es2015", + "types": [] + }, + "exclude": [ + "src/test.ts", + "**/*.spec.ts" + ] +} diff --git a/src/tsconfig.es5.json b/src/tsconfig.es5.json deleted file mode 100644 index 55f76f9..0000000 --- a/src/tsconfig.es5.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "compilerOptions": { - "declaration": true, - "module": "es2015", - "target": "es5", - "baseUrl": ".", - "stripInternal": true, - "strict": true, - "strictPropertyInitialization": false, - "emitDecoratorMetadata": true, - "experimentalDecorators": true, - "moduleResolution": "node", - "outDir": "../build", - "rootDir": ".", - "lib": [ - "es2015", - "es7", - "dom" - ], - "skipLibCheck": true, - "types": [] - }, - "angularCompilerOptions": { - "annotateForClosureCompiler": true, - "strictMetadataEmit": true, - "skipTemplateCodegen": true, - "flatModuleOutFile": "ngx-permissions.js", - "flatModuleId": "ngx-permissions" - }, - "files": [ - "./index.ts" - ] -} diff --git a/src/tsconfig.spec.json b/src/tsconfig.spec.json index 6fb9dfb..8f7cede 100644 --- a/src/tsconfig.spec.json +++ b/src/tsconfig.spec.json @@ -1,29 +1,19 @@ { - "extends": "./tsconfig.es5.json", - + "extends": "../tsconfig.json", "compilerOptions": { - "emitDecoratorMetadata": true, - "rootDir": "./src", - "moduleResolution": "node", - "experimentalDecorators": true, "outDir": "../out-tsc/spec", "module": "commonjs", - "target": "es6", - "baseUrl": "./src", "types": [ - "jest", "jasmine", "node" - ], - "lib": [ - "es6", - "es7", - "dom" - ], - "skipLibCheck": true, + ] }, "files": [ - "**/*.spec.ts" + "test.ts", + "polyfills.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" ] } - diff --git a/src/tslint.json b/src/tslint.json new file mode 100644 index 0000000..52e2c1a --- /dev/null +++ b/src/tslint.json @@ -0,0 +1,17 @@ +{ + "extends": "../tslint.json", + "rules": { + "directive-selector": [ + true, + "attribute", + "app", + "camelCase" + ], + "component-selector": [ + true, + "element", + "app", + "kebab-case" + ] + } +} diff --git a/tools/gulp/inline-resources.js b/tools/gulp/inline-resources.js deleted file mode 100644 index 9601ead..0000000 --- a/tools/gulp/inline-resources.js +++ /dev/null @@ -1,156 +0,0 @@ -/* eslint-disable */ -// https://github.com/filipesilva/angular-quickstart-lib/blob/master/inline-resources.js -'use strict'; - -const fs = require('fs'); -const path = require('path'); -const glob = require('glob'); -const sass = require('node-sass'); -const tildeImporter = require('node-sass-tilde-importer'); - -/** - * Simple Promiseify function that takes a Node API and return a version that supports promises. - * We use promises instead of synchronized functions to make the process less I/O bound and - * faster. It also simplifies the code. - */ -function promiseify(fn) { - return function () { - const args = [].slice.call(arguments, 0); - return new Promise((resolve, reject) => { - fn.apply(this, args.concat([function (err, value) { - if (err) { - reject(err); - } else { - resolve(value); - } - }])); - }); - }; -} - -const readFile = promiseify(fs.readFile); -const writeFile = promiseify(fs.writeFile); - -/** - * Inline resources in a tsc/ngc compilation. - * @param projectPath {string} Path to the project. - */ -function inlineResources(projectPath) { - - // Match only TypeScript files in projectPath. - const files = glob.sync('**/*.ts', {cwd: projectPath}); - - // For each file, inline the templates and styles under it and write the new file. - return Promise.all(files.map(filePath => { - const fullFilePath = path.join(projectPath, filePath); - return readFile(fullFilePath, 'utf-8') - .then(content => inlineResourcesFromString(content, url => { - // Resolve the template url. - return path.join(path.dirname(fullFilePath), url); - })) - .then(content => writeFile(fullFilePath, content)) - .catch(err => { - console.error('An error occured: ', err); - }); - })); -} - -/** - * Inline resources from a string content. - * @param content {string} The source file's content. - * @param urlResolver {Function} A resolver that takes a URL and return a path. - * @returns {string} The content with resources inlined. - */ -function inlineResourcesFromString(content, urlResolver) { - // Curry through the inlining functions. - return [ - inlineTemplate, - inlineStyle, - removeModuleId - ].reduce((content, fn) => fn(content, urlResolver), content); -} - -/** - * Inline the templates for a source file. Simply search for instances of `templateUrl: ...` and - * replace with `template: ...` (with the content of the file included). - * @param content {string} The source file's content. - * @param urlResolver {Function} A resolver that takes a URL and return a path. - * @return {string} The content with all templates inlined. - */ -function inlineTemplate(content, urlResolver) { - return content.replace(/templateUrl:\s*'([^']+?\.html)'/g, function (m, templateUrl) { - const templateFile = urlResolver(templateUrl); - const templateContent = fs.readFileSync(templateFile, 'utf-8'); - const shortenedTemplate = templateContent - .replace(/([\n\r]\s*)+/gm, ' ') - .replace(/"/g, '\\"'); - return `template: "${shortenedTemplate}"`; - }); -} - - -/** - * Inline the styles for a source file. Simply search for instances of `styleUrls: [...]` and - * replace with `styles: [...]` (with the content of the file included). - * @param urlResolver {Function} A resolver that takes a URL and return a path. - * @param content {string} The source file's content. - * @return {string} The content with all styles inlined. - */ -function inlineStyle(content, urlResolver) { - return content.replace(/styleUrls\s*:\s*(\[[\s\S]*?\])/gm, function (m, styleUrls) { - const urls = eval(styleUrls); - return 'styles: [' - + urls.map(styleUrl => { - const styleFile = urlResolver(styleUrl); - const originContent = fs.readFileSync(styleFile, 'utf-8'); - const styleContent = styleFile.endsWith('.scss') ? buildSass(originContent, styleFile) : originContent; - const shortenedStyle = styleContent - .replace(/([\n\r]\s*)+/gm, ' ') - .replace(/"/g, '\\"'); - return `"${shortenedStyle}"`; - }) - .join(',\n') - + ']'; - }); -} - -/** - * build sass content to css - * @param content {string} the css content - * @param sourceFile {string} the scss file sourceFile - * @return {string} the generated css, empty string if error occured - */ -function buildSass(content, sourceFile) { - try { - const result = sass.renderSync({ - data: content, - file: sourceFile, - importer: tildeImporter - }); - return result.css.toString() - } catch (e) { - console.error('\x1b[41m'); - console.error('at ' + sourceFile + ':' + e.line + ":" + e.column); - console.error(e.formatted); - console.error('\x1b[0m'); - return ""; - } -} - -/** - * Remove every mention of `moduleId: module.id`. - * @param content {string} The source file's content. - * @returns {string} The content with all moduleId: mentions removed. - */ -function removeModuleId(content) { - return content.replace(/\s*moduleId:\s*module\.id\s*,?\s*/gm, ''); -} - -module.exports = inlineResources; -module.exports.inlineResourcesFromString = inlineResourcesFromString; - -// Run inlineResources if module is being called directly from the CLI with arguments. -if (require.main === module && process.argv.length > 2) { - console.log('Inlining resources from project:', process.argv[2]); - return inlineResources(process.argv[2]); -} diff --git a/tsconfig.json b/tsconfig.json index 3b17074..bdb14b1 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,16 +1,25 @@ { + "compileOnSave": false, "compilerOptions": { - "baseUrl": "./src", - "experimentalDecorators": true, + "baseUrl": "./", + "outDir": "./dist/out-tsc", + "sourceMap": true, + "declaration": false, "moduleResolution": "node", - "rootDir": "./src", - "strict": true, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "target": "es5", + "typeRoots": [ + "node_modules/@types" + ], "lib": [ - "es2015", - "dom", - "es7" + "es2017", + "dom" ], - "skipLibCheck": true, - "types": [] + "paths": { + "ngx-permissions": [ + "dist/ngx-permissions" + ] + } } -} +} \ No newline at end of file diff --git a/tslint.json b/tslint.json index f341e78..42bcb51 100644 --- a/tslint.json +++ b/tslint.json @@ -3,18 +3,29 @@ "node_modules/codelyzer" ], "rules": { + "arrow-return-shorthand": true, + "callable-types": true, "class-name": true, "comment-format": [ true, "check-space" ], "curly": true, + "deprecation": { + "severity": "warn" + }, "eofline": true, "forin": true, + "import-blacklist": [ + true, + "rxjs/Rx" + ], + "import-spacing": true, "indent": [ true, "spaces" ], + "interface-over-type-literal": false, "label-position": true, "max-line-length": [ true, @@ -23,8 +34,14 @@ "member-access": false, "member-ordering": [ true, - "static-before-instance", - "variables-before-functions" + { + "order": [ + "static-field", + "instance-field", + "static-method", + "instance-method" + ] + } ], "no-arg": true, "no-bitwise": true, @@ -38,16 +55,23 @@ ], "no-construct": true, "no-debugger": true, - "no-duplicate-variable": true, + "no-duplicate-super": true, "no-empty": false, + "no-empty-interface": true, "no-eval": true, - "no-inferrable-types": true, + "no-inferrable-types": [ + true, + "ignore-params" + ], + "no-misused-new": true, + "no-non-null-assertion": true, "no-shadowed-variable": true, "no-string-literal": false, + "no-string-throw": true, "no-switch-case-fall-through": true, "no-trailing-whitespace": true, + "no-unnecessary-initializer": true, "no-unused-expression": true, - "no-unused-variable": true, "no-use-before-declare": true, "no-var-keyword": true, "object-literal-sort-keys": false, @@ -58,12 +82,14 @@ "check-else", "check-whitespace" ], + "prefer-const": false, "quotemark": [ true, "single" ], "radix": true, "semicolon": [ + true, "always" ], "triple-equals": [ @@ -80,6 +106,7 @@ "variable-declaration": "nospace" } ], + "unified-signatures": true, "variable-name": false, "whitespace": [ true, @@ -89,8 +116,7 @@ "check-separator", "check-type" ], - "directive-selector": [true, "attribute", "", "camelCase"], - "component-selector": [true, "element", "", "kebab-case"], + "no-output-on-prefix": true, "use-input-property-decorator": true, "use-output-property-decorator": true, "use-host-property-decorator": true, @@ -98,7 +124,7 @@ "no-output-rename": true, "use-life-cycle-interface": true, "use-pipe-transform-interface": true, - "component-class-suffix": true, - "directive-class-suffix": true + "component-class-suffix": false, + "directive-class-suffix": false } } diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..c9ff4d6 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,7470 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@angular-devkit/architect@0.6.0": + version "0.6.0" + resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.6.0.tgz#622a933337c946ef85d646545cc4244272ccb402" + dependencies: + "@angular-devkit/core" "0.6.0" + rxjs "^6.0.0" + +"@angular-devkit/build-angular@~0.6.0": + version "0.6.0" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-angular/-/build-angular-0.6.0.tgz#f5757f80fc402458e6b5eae1578bbc2a1af44ebe" + dependencies: + "@angular-devkit/architect" "0.6.0" + "@angular-devkit/build-optimizer" "0.6.0" + "@angular-devkit/core" "0.6.0" + "@ngtools/webpack" "6.0.0" + ajv "~6.4.0" + autoprefixer "^8.1.0" + cache-loader "^1.2.2" + chalk "~2.2.2" + circular-dependency-plugin "^5.0.2" + clean-css "^4.1.11" + copy-webpack-plugin "^4.5.1" + file-loader "^1.1.11" + glob "^7.0.3" + html-webpack-plugin "^3.0.6" + istanbul "^0.4.5" + istanbul-instrumenter-loader "^3.0.1" + karma-source-map-support "^1.2.0" + less "^3.0.2" + less-loader "^4.1.0" + license-webpack-plugin "^1.3.1" + lodash "^4.17.4" + memory-fs "^0.4.1" + mini-css-extract-plugin "~0.4.0" + minimatch "^3.0.4" + node-sass "^4.8.3" + opn "^5.1.0" + parse5 "^4.0.0" + portfinder "^1.0.13" + postcss "^6.0.19" + postcss-import "^11.1.0" + postcss-loader "^2.1.4" + postcss-url "^7.3.1" + raw-loader "^0.5.1" + resolve "^1.5.0" + rxjs "^6.0.0" + sass-loader "^7.0.1" + silent-error "^1.1.0" + source-map-support "^0.5.0" + stats-webpack-plugin "^0.6.2" + style-loader "^0.21.0" + stylus "^0.54.5" + stylus-loader "^3.0.2" + tree-kill "^1.2.0" + uglifyjs-webpack-plugin "^1.2.5" + url-loader "^1.0.1" + webpack "~4.6.0" + webpack-dev-middleware "^3.1.3" + webpack-dev-server "^3.1.4" + webpack-merge "^4.1.2" + webpack-sources "^1.1.0" + webpack-subresource-integrity "^1.1.0-rc.4" + +"@angular-devkit/build-ng-packagr@~0.6.0": + version "0.6.0" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-ng-packagr/-/build-ng-packagr-0.6.0.tgz#8046dfc76d2ce016aa38a8746079effe842fa933" + dependencies: + "@angular-devkit/architect" "0.6.0" + "@angular-devkit/core" "0.6.0" + resolve "^1.5.0" + rxjs "^6.0.0" + +"@angular-devkit/build-optimizer@0.6.0": + version "0.6.0" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-optimizer/-/build-optimizer-0.6.0.tgz#150a76155b473dea17327a176d18245a2da1c13e" + dependencies: + loader-utils "^1.1.0" + source-map "^0.5.6" + typescript "~2.7.2" + webpack-sources "^1.1.0" + +"@angular-devkit/core@0.6.0": + version "0.6.0" + resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-0.6.0.tgz#d1a7275ff0f93de5cf007c4a549d1ebd00776fd0" + dependencies: + ajv "~6.4.0" + chokidar "^2.0.3" + rxjs "^6.0.0" + source-map "^0.5.6" + +"@angular-devkit/schematics@0.6.0": + version "0.6.0" + resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-0.6.0.tgz#0117dc7d5905b053df4f2918e2e073efd1091f5c" + dependencies: + "@angular-devkit/core" "0.6.0" + rxjs "^6.0.0" + +"@angular/animations@>=6.0.0 || <7.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-6.0.0.tgz#cfc825dbfdf33bf3bf75962d1e12495aed5e3c32" + dependencies: + tslib "^1.9.0" + +"@angular/cli@~6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-6.0.0.tgz#346b356775ddf8cdb8a9a5095b0663878eca3486" + dependencies: + "@angular-devkit/architect" "0.6.0" + "@angular-devkit/core" "0.6.0" + "@angular-devkit/schematics" "0.6.0" + "@schematics/angular" "0.6.0" + "@schematics/update" "0.6.0" + opn "~5.1.0" + resolve "^1.1.7" + rxjs "^6.0.0" + semver "^5.1.0" + silent-error "^1.0.0" + symbol-observable "^1.2.0" + yargs-parser "^10.0.0" + +"@angular/common@>=6.0.0 || <7.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@angular/common/-/common-6.0.0.tgz#ca3b6b6b96837fe048861da897c31991aa04954f" + dependencies: + tslib "^1.9.0" + +"@angular/compiler-cli@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-6.0.0.tgz#be50277faaa5ac08f3002c2c8cb8c39d220c76d5" + dependencies: + chokidar "^1.4.2" + minimist "^1.2.0" + reflect-metadata "^0.1.2" + tsickle "^0.27.2" + +"@angular/compiler@>=6.0.0 || <7.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-6.0.0.tgz#9092a0f02f33dd1108276ab93cc48142e36a1e95" + dependencies: + tslib "^1.9.0" + +"@angular/core@>=6.0.0 || <7.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@angular/core/-/core-6.0.0.tgz#785cc8a37b7fb784a6b7dcbd0984abb4f10e5dfe" + dependencies: + tslib "^1.9.0" + +"@angular/forms@>=6.0.0 || <7.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-6.0.0.tgz#436e2df39dc57db124da5a5c02bc63909fdf7046" + dependencies: + tslib "^1.9.0" + +"@angular/http@>=6.0.0 || <7.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@angular/http/-/http-6.0.0.tgz#f409e35cd2f4990b43a37beab915ffdcd9c7c992" + dependencies: + tslib "^1.9.0" + +"@angular/language-service@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@angular/language-service/-/language-service-6.0.0.tgz#85bf577fd7f45eff13128d4f5f0125078d610aec" + +"@angular/platform-browser-dynamic@>=6.0.0 || <7.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-6.0.0.tgz#66a34b65136446cb3ec39362fd6d2dbb5482ba70" + dependencies: + tslib "^1.9.0" + +"@angular/platform-browser@>=6.0.0 || <7.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-6.0.0.tgz#848b687ea46786483fddcdbbbd17b29c7adcc768" + dependencies: + tslib "^1.9.0" + +"@angular/router@>=6.0.0 || <7.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@angular/router/-/router-6.0.0.tgz#09a5c6f6220084c3575df81e8b36cbe9fff10d1f" + dependencies: + tslib "^1.9.0" + +"@compodoc/compodoc@1.0.0-beta.10": + version "1.0.0-beta.10" + resolved "https://registry.yarnpkg.com/@compodoc/compodoc/-/compodoc-1.0.0-beta.10.tgz#3d6329811f13babf4a103e8a56cc59625fd29de0" + dependencies: + "@compodoc/ngd-core" "^2.0.0-alpha.1" + "@compodoc/ngd-transformer" "^2.0.0-alpha.3" + cheerio "^1.0.0-rc.1" + chokidar "^1.7.0" + colors "^1.1.2" + commander "^2.9.0" + fs-extra "^3.0.1" + glob "^7.1.2" + gulp-util "^3.0.8" + handlebars "^4.0.10" + html-entities "^1.2.1" + live-server "^1.2.0" + lodash "^4.17.3" + lunr "^1.0.0" + marked "^0.3.6" + os-name "^2.0.1" + shelljs "^0.7.8" + typescript "2.3.4" + +"@compodoc/ngd-core@^2.0.0-alpha.1", "@compodoc/ngd-core@~2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@compodoc/ngd-core/-/ngd-core-2.0.0.tgz#e31a6cbbdfa8de648b027aa4169468bc496544c9" + dependencies: + ansi-colors "^1.0.1" + fancy-log "^1.3.2" + typescript "^2.4.2" + +"@compodoc/ngd-transformer@^2.0.0-alpha.3": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@compodoc/ngd-transformer/-/ngd-transformer-2.0.0.tgz#89e858dd332198cde262f0cf3648bd0969d0da62" + dependencies: + "@compodoc/ngd-core" "~2.0.0" + dot "^1.1.1" + fs-extra "^4.0.1" + viz.js "^1.8.0" + +"@ngtools/json-schema@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@ngtools/json-schema/-/json-schema-1.1.0.tgz#c3a0c544d62392acc2813a42c8a0dc6f58f86922" + +"@ngtools/webpack@6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-6.0.0.tgz#e160cccd85823e9b01ee7bc5156a02510a323a34" + dependencies: + "@angular-devkit/core" "0.6.0" + tree-kill "^1.0.0" + webpack-sources "^1.1.0" + +"@schematics/angular@0.6.0": + version "0.6.0" + resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-0.6.0.tgz#d7589c50f80ef089f7fba526ed9becefb187b6a2" + dependencies: + "@angular-devkit/core" "0.6.0" + "@angular-devkit/schematics" "0.6.0" + typescript ">=2.6.2 <2.8" + +"@schematics/update@0.6.0": + version "0.6.0" + resolved "https://registry.yarnpkg.com/@schematics/update/-/update-0.6.0.tgz#1a5f75a5a02de85cc4b4bd4fa68dd53ddc95ba30" + dependencies: + "@angular-devkit/core" "0.6.0" + "@angular-devkit/schematics" "0.6.0" + npm-registry-client "^8.5.1" + rxjs "^6.0.0" + semver "^5.3.0" + semver-intersect "^1.1.2" + +"@types/estree@0.0.38": + version "0.0.38" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.38.tgz#c1be40aa933723c608820a99a373a16d215a1ca2" + +"@types/jasmine@*", "@types/jasmine@~2.8.6": + version "2.8.7" + resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.8.7.tgz#3fe583928ae0a22cdd34cedf930eeffeda2602fd" + +"@types/jasminewd2@~2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/jasminewd2/-/jasminewd2-2.0.3.tgz#0d2886b0cbdae4c0eeba55e30792f584bf040a95" + dependencies: + "@types/jasmine" "*" + +"@types/node@*": + version "10.0.4" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.0.4.tgz#130598ee56e9a1210a53f557d64935571f05390d" + +"@types/node@^6.0.46": + version "6.0.108" + resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.108.tgz#852e8496bcfc5e74cae83a5eb3b30e5661e9b7b9" + +"@types/node@~8.9.4": + version "8.9.5" + resolved "https://registry.yarnpkg.com/@types/node/-/node-8.9.5.tgz#162b864bc70be077e6db212b322754917929e976" + +"@types/q@^0.0.32": + version "0.0.32" + resolved "https://registry.yarnpkg.com/@types/q/-/q-0.0.32.tgz#bd284e57c84f1325da702babfc82a5328190c0c5" + +"@types/selenium-webdriver@^2.53.35", "@types/selenium-webdriver@~2.53.39": + version "2.53.43" + resolved "https://registry.yarnpkg.com/@types/selenium-webdriver/-/selenium-webdriver-2.53.43.tgz#2de3d718819bc20165754c4a59afb7e9833f6707" + +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + +abbrev@1.0.x: + version "1.0.9" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" + +accepts@1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca" + dependencies: + mime-types "~2.1.11" + negotiator "0.6.1" + +accepts@~1.3.4, accepts@~1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2" + dependencies: + mime-types "~2.1.18" + negotiator "0.6.1" + +acorn-dynamic-import@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz#901ceee4c7faaef7e07ad2a47e890675da50a278" + dependencies: + acorn "^5.0.0" + +acorn@^5.0.0: + version "5.5.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.5.3.tgz#f473dd47e0277a08e28e9bec5aeeb04751f0b8c9" + +adm-zip@0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.4.tgz#a61ed5ae6905c3aea58b3a657d25033091052736" + +adm-zip@^0.4.7: + version "0.4.9" + resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.9.tgz#1a574627d3aa4ea6b8b4948e066cbd6fed4ae2f6" + +after@0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" + +agent-base@2: + version "2.1.1" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-2.1.1.tgz#d6de10d5af6132d5bd692427d46fc538539094c7" + dependencies: + extend "~3.0.0" + semver "~5.0.1" + +ajv-keywords@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz#e86b819c602cf8821ad637413698f1dec021847a" + +ajv@^4.9.1: + version "4.11.8" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" + dependencies: + co "^4.6.0" + json-stable-stringify "^1.0.1" + +ajv@^5.0.0, ajv@^5.1.0: + version "5.5.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" + dependencies: + co "^4.6.0" + fast-deep-equal "^1.0.0" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.3.0" + +ajv@^6.1.0, ajv@~6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.4.0.tgz#d3aff78e9277549771daf0164cff48482b754fc6" + dependencies: + fast-deep-equal "^1.0.0" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.3.0" + uri-js "^3.0.2" + +align-text@^0.1.1, align-text@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" + dependencies: + kind-of "^3.0.2" + longest "^1.0.1" + repeat-string "^1.5.2" + +amdefine@>=0.0.4: + version "1.0.1" + resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" + +ansi-align@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" + dependencies: + string-width "^2.0.0" + +ansi-colors@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-1.1.0.tgz#6374b4dd5d4718ff3ce27a671a3b1cad077132a9" + dependencies: + ansi-wrap "^0.1.0" + +ansi-gray@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251" + dependencies: + ansi-wrap "0.1.0" + +ansi-html@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + +ansi-styles@^3.1.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + dependencies: + color-convert "^1.9.0" + +ansi-wrap@0.1.0, ansi-wrap@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" + +anymatch@^1.3.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" + dependencies: + micromatch "^2.1.5" + normalize-path "^2.0.0" + +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + +apache-crypt@^1.1.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/apache-crypt/-/apache-crypt-1.2.1.tgz#d6fc72aa6d27d99c95a94fd188d731eefffa663c" + dependencies: + unix-crypt-td-js "^1.0.0" + +apache-md5@^1.0.6: + version "1.1.2" + resolved "https://registry.yarnpkg.com/apache-md5/-/apache-md5-1.1.2.tgz#ee49736b639b4f108b6e9e626c6da99306b41692" + +app-root-path@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/app-root-path/-/app-root-path-2.0.1.tgz#cd62dcf8e4fd5a417efc664d2e5b10653c651b46" + +append-transform@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991" + dependencies: + default-require-extensions "^1.0.0" + +aproba@^1.0.3, aproba@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + +are-we-there-yet@~1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d" + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + dependencies: + sprintf-js "~1.0.2" + +argv@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/argv/-/argv-0.0.2.tgz#ecbd16f8949b157183711b1bda334f37840185ab" + +arr-diff@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" + dependencies: + arr-flatten "^1.0.1" + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + +arr-flatten@^1.0.1, arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + +array-differ@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" + +array-filter@~0.0.0: + version "0.0.1" + resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec" + +array-find-index@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + +array-flatten@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.1.tgz#426bb9da84090c1838d812c8150af20a8331e296" + +array-includes@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d" + dependencies: + define-properties "^1.1.2" + es-abstract "^1.7.0" + +array-map@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662" + +array-reduce@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b" + +array-slice@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5" + +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + dependencies: + array-uniq "^1.0.1" + +array-uniq@^1.0.1, array-uniq@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + +array-unique@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + +arraybuffer.slice@0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz#f33b2159f0532a3f3107a272c0ccfbd1ad2979ca" + +arrify@^1.0.0, arrify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + +asap@~2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + +asn1.js@^4.0.0: + version "4.10.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +asn1@~0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + +assert-plus@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" + +assert@^1.1.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" + dependencies: + util "0.10.3" + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + +async-each@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" + +async-foreach@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542" + +async@1.x, async@^1.4.0, async@^1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + +async@^2.1.4: + version "2.6.0" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4" + dependencies: + lodash "^4.14.0" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + +atob@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.1.tgz#ae2d5a729477f289d60dd7f96a6314a22dd6c22a" + +autoprefixer@^8.0.0, autoprefixer@^8.1.0: + version "8.4.1" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-8.4.1.tgz#c6b30001ea4b3daa6b611e50071f62dd24beb564" + dependencies: + browserslist "^3.2.6" + caniuse-lite "^1.0.30000832" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^6.0.22" + postcss-value-parser "^3.2.3" + +aws-sign2@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + +aws4@^1.2.1, aws4@^1.6.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.7.0.tgz#d4d0e9b9dbfca77bf08eeb0a8a471550fe39e289" + +babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + dependencies: + chalk "^1.1.3" + esutils "^2.0.2" + js-tokens "^3.0.2" + +babel-generator@^6.18.0: + version "6.26.1" + resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" + dependencies: + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + detect-indent "^4.0.0" + jsesc "^1.3.0" + lodash "^4.17.4" + source-map "^0.5.7" + trim-right "^1.0.1" + +babel-messages@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" + dependencies: + babel-runtime "^6.22.0" + +babel-runtime@^6.22.0, babel-runtime@^6.26.0, babel-runtime@^6.9.2: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +babel-template@^6.16.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" + dependencies: + babel-runtime "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + lodash "^4.17.4" + +babel-traverse@^6.18.0, babel-traverse@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" + dependencies: + babel-code-frame "^6.26.0" + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + debug "^2.6.8" + globals "^9.18.0" + invariant "^2.2.2" + lodash "^4.17.4" + +babel-types@^6.18.0, babel-types@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" + dependencies: + babel-runtime "^6.26.0" + esutils "^2.0.2" + lodash "^4.17.4" + to-fast-properties "^1.0.3" + +babylon@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" + +backo2@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + +base64-arraybuffer@0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" + +base64-js@^1.0.2: + version "1.3.0" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3" + +base64id@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6" + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +basic-auth@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.0.tgz#015db3f353e02e56377755f962742e8981e7bbba" + dependencies: + safe-buffer "5.1.1" + +batch@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + +bcrypt-pbkdf@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" + dependencies: + tweetnacl "^0.14.3" + +bcryptjs@^2.3.0: + version "2.4.3" + resolved "https://registry.yarnpkg.com/bcryptjs/-/bcryptjs-2.4.3.tgz#9ab5627b93e60621ff7cdac5da9733027df1d0cb" + +beeper@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/beeper/-/beeper-1.1.1.tgz#e6d5ea8c5dad001304a70b22638447f69cb2f809" + +better-assert@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" + dependencies: + callsite "1.0.0" + +big.js@^3.1.3: + version "3.2.0" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" + +binary-extensions@^1.0.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205" + +blob@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921" + +block-stream@*: + version "0.0.9" + resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" + dependencies: + inherits "~2.0.0" + +blocking-proxy@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/blocking-proxy/-/blocking-proxy-1.0.1.tgz#81d6fd1fe13a4c0d6957df7f91b75e98dac40cb2" + dependencies: + minimist "^1.2.0" + +bluebird@^3.3.0, bluebird@^3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: + version "4.11.8" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" + +body-parser@1.18.2, body-parser@^1.16.1: + version "1.18.2" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.2.tgz#87678a19d84b47d859b83199bd59bce222b10454" + dependencies: + bytes "3.0.0" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.1" + http-errors "~1.6.2" + iconv-lite "0.4.19" + on-finished "~2.3.0" + qs "6.5.1" + raw-body "2.3.2" + type-is "~1.6.15" + +bonjour@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" + dependencies: + array-flatten "^2.1.0" + deep-equal "^1.0.1" + dns-equal "^1.0.0" + dns-txt "^2.0.2" + multicast-dns "^6.0.1" + multicast-dns-service-types "^1.1.0" + +boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + +boom@2.x.x: + version "2.10.1" + resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" + dependencies: + hoek "2.x.x" + +boom@4.x.x: + version "4.3.1" + resolved "https://registry.yarnpkg.com/boom/-/boom-4.3.1.tgz#4f8a3005cb4a7e3889f749030fd25b96e01d2e31" + dependencies: + hoek "4.x.x" + +boom@5.x.x: + version "5.2.0" + resolved "https://registry.yarnpkg.com/boom/-/boom-5.2.0.tgz#5dd9da6ee3a5f302077436290cb717d3f4a54e02" + dependencies: + hoek "4.x.x" + +boxen@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b" + dependencies: + ansi-align "^2.0.0" + camelcase "^4.0.0" + chalk "^2.0.1" + cli-boxes "^1.0.0" + string-width "^2.0.0" + term-size "^1.2.0" + widest-line "^2.0.0" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^0.1.2: + version "0.1.5" + resolved "https://registry.yarnpkg.com/braces/-/braces-0.1.5.tgz#c085711085291d8b75fdd74eab0f8597280711e6" + dependencies: + expand-range "^0.1.0" + +braces@^1.8.2: + version "1.8.5" + resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" + dependencies: + expand-range "^1.8.1" + preserve "^0.2.0" + repeat-element "^1.1.2" + +braces@^2.3.0, braces@^2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +brorand@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.1.tgz#3343124db6d7ad53e26a8826318712bdc8450f9c" + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + +browserify-rsa@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" + dependencies: + bn.js "^4.1.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" + dependencies: + bn.js "^4.1.1" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.2" + elliptic "^6.0.0" + inherits "^2.0.1" + parse-asn1 "^5.0.0" + +browserify-zlib@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + dependencies: + pako "~1.0.5" + +browserslist@^3.0.0, browserslist@^3.2.6: + version "3.2.6" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-3.2.6.tgz#138a44d04a9af64443679191d041f28ce5b965d5" + dependencies: + caniuse-lite "^1.0.30000830" + electron-to-chromium "^1.3.42" + +buffer-crc32@^0.2.5: + version "0.2.13" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + +buffer-from@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.0.0.tgz#4cb8832d23612589b0406e9e2956c17f06fdf531" + +buffer-indexof@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + +buffer@^4.3.0: + version "4.9.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + +builtin-modules@^1.0.0, builtin-modules@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + +builtin-modules@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-2.0.0.tgz#60b7ef5ae6546bd7deefa74b08b62a43a232648e" + +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + +builtins@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + +cacache@^10.0.4: + version "10.0.4" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.4.tgz#6452367999eff9d4188aefd9a14e9d7c6a263460" + dependencies: + bluebird "^3.5.1" + chownr "^1.0.1" + glob "^7.1.2" + graceful-fs "^4.1.11" + lru-cache "^4.1.1" + mississippi "^2.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.2" + ssri "^5.2.4" + unique-filename "^1.1.0" + y18n "^4.0.0" + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +cache-loader@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/cache-loader/-/cache-loader-1.2.2.tgz#6d5c38ded959a09cc5d58190ab5af6f73bd353f5" + dependencies: + loader-utils "^1.1.0" + mkdirp "^0.5.1" + neo-async "^2.5.0" + schema-utils "^0.4.2" + +callsite@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" + +camel-case@3.0.x: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" + dependencies: + no-case "^2.2.0" + upper-case "^1.1.1" + +camelcase-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" + dependencies: + camelcase "^2.0.0" + map-obj "^1.0.0" + +camelcase@^1.0.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" + +camelcase@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + +camelcase@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" + +camelcase@^4.0.0, camelcase@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" + +caniuse-lite@^1.0.30000830, caniuse-lite@^1.0.30000832: + version "1.0.30000835" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000835.tgz#517c4d3807a8527b0cbce1d84c85d4487f877268" + +capture-stack-trace@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d" + +caseless@~0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + +center-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" + dependencies: + align-text "^0.1.3" + lazy-cache "^1.0.3" + +chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.1, chalk@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@~2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.2.2.tgz#4403f5cf18f35c05f51fbdf152bf588f956cf7cb" + dependencies: + ansi-styles "^3.1.0" + escape-string-regexp "^1.0.5" + supports-color "^4.0.0" + +cheerio@^1.0.0-rc.1: + version "1.0.0-rc.2" + resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.2.tgz#4b9f53a81b27e4d5dac31c0ffd0cfa03cc6830db" + dependencies: + css-select "~1.2.0" + dom-serializer "~0.1.0" + entities "~1.1.1" + htmlparser2 "^3.9.1" + lodash "^4.15.0" + parse5 "^3.0.1" + +chokidar@^1.4.1, chokidar@^1.4.2, chokidar@^1.6.0, chokidar@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" + dependencies: + anymatch "^1.3.0" + async-each "^1.0.0" + glob-parent "^2.0.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^2.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + optionalDependencies: + fsevents "^1.0.0" + +chokidar@^2.0.0, chokidar@^2.0.2, chokidar@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.3.tgz#dcbd4f6cbb2a55b4799ba8a840ac527e5f4b1176" + dependencies: + anymatch "^2.0.0" + async-each "^1.0.0" + braces "^2.3.0" + glob-parent "^3.1.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^2.1.1" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + upath "^1.0.0" + optionalDependencies: + fsevents "^1.1.2" + +chownr@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" + +chrome-trace-event@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-0.1.3.tgz#d395af2d31c87b90a716c831fe326f69768ec084" + +ci-info@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.1.3.tgz#710193264bb05c77b8c90d02f5aaf22216a667b2" + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +circular-dependency-plugin@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/circular-dependency-plugin/-/circular-dependency-plugin-5.0.2.tgz#da168c0b37e7b43563fb9f912c1c007c213389ef" + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +clean-css@4.1.x, clean-css@^4.1.11, clean-css@^4.x: + version "4.1.11" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.1.11.tgz#2ecdf145aba38f54740f26cefd0ff3e03e125d6a" + dependencies: + source-map "0.5.x" + +cli-boxes@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" + +cliui@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" + dependencies: + center-align "^0.1.1" + right-align "^0.1.1" + wordwrap "0.0.2" + +cliui@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + +cliui@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" + dependencies: + string-width "^2.1.1" + strip-ansi "^4.0.0" + wrap-ansi "^2.0.0" + +clone-deep@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-2.0.2.tgz#00db3a1e173656730d1188c3d6aced6d7ea97713" + dependencies: + for-own "^1.0.0" + is-plain-object "^2.0.4" + kind-of "^6.0.0" + shallow-clone "^1.0.0" + +clone-stats@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1" + +clone@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + +clone@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.1.tgz#d217d1e961118e3ac9a4b8bba3285553bf647cdb" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + +codecov@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/codecov/-/codecov-2.3.0.tgz#ad25a2c6e0442d13740d9d4ddbb9a3e2714330f4" + dependencies: + argv "0.0.2" + request "2.81.0" + urlgrey "0.4.4" + +codelyzer@~4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/codelyzer/-/codelyzer-4.2.1.tgz#d56eaacefca7e8138aac0a630e484bdb09988544" + dependencies: + app-root-path "^2.0.1" + css-selector-tokenizer "^0.7.0" + cssauron "^1.4.0" + semver-dsl "^1.0.1" + source-map "^0.5.6" + sprintf-js "^1.0.3" + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed" + dependencies: + color-name "^1.1.1" + +color-name@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + +color-support@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + +colors@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" + +colors@^1.1.0, colors@^1.1.2, colors@latest: + version "1.2.4" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.2.4.tgz#e0cb41d3e4b20806b3bfc27f4559f01b94bc2f7c" + +combine-lists@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/combine-lists/-/combine-lists-1.0.1.tgz#458c07e09e0d900fc28b70a3fec2dacd1d2cb7f6" + dependencies: + lodash "^4.5.0" + +combined-stream@1.0.6, combined-stream@^1.0.5, combined-stream@~1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818" + dependencies: + delayed-stream "~1.0.0" + +commander@2.15.x, commander@^2.12.0, commander@^2.12.1, commander@^2.9.0, commander@~2.15.0: + version "2.15.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" + +commander@~2.13.0: + version "2.13.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + +compare-versions@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.1.0.tgz#43310256a5c555aaed4193c04d8f154cf9c6efd5" + +component-bind@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" + +component-emitter@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.1.2.tgz#296594f2753daa63996d2af08d15a95116c9aec3" + +component-emitter@1.2.1, component-emitter@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" + +component-inherit@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" + +compressible@~2.0.13: + version "2.0.13" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.13.tgz#0d1020ab924b2fdb4d6279875c7d6daba6baa7a9" + dependencies: + mime-db ">= 1.33.0 < 2" + +compression@^1.5.2: + version "1.7.2" + resolved "http://registry.npmjs.org/compression/-/compression-1.7.2.tgz#aaffbcd6aaf854b44ebb280353d5ad1651f59a69" + dependencies: + accepts "~1.3.4" + bytes "3.0.0" + compressible "~2.0.13" + debug "2.6.9" + on-headers "~1.0.1" + safe-buffer "5.1.1" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + +concat-stream@^1.5.0, concat-stream@^1.5.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +configstore@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.2.tgz#c6f25defaeef26df12dd33414b001fe81a543f8f" + dependencies: + dot-prop "^4.1.0" + graceful-fs "^4.1.2" + make-dir "^1.0.0" + unique-string "^1.0.0" + write-file-atomic "^2.0.0" + xdg-basedir "^3.0.0" + +connect-history-api-fallback@^1.3.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz#b06873934bc5e344fef611a196a6faae0aee015a" + +connect@3.5.x: + version "3.5.1" + resolved "https://registry.yarnpkg.com/connect/-/connect-3.5.1.tgz#6d30d7a63c7f170857a6b3aa6b363d973dca588e" + dependencies: + debug "~2.2.0" + finalhandler "0.5.1" + parseurl "~1.3.1" + utils-merge "1.0.0" + +connect@^3.6.0: + version "3.6.6" + resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.6.tgz#09eff6c55af7236e137135a72574858b6786f524" + dependencies: + debug "2.6.9" + finalhandler "1.1.0" + parseurl "~1.3.2" + utils-merge "1.0.1" + +console-browserify@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" + dependencies: + date-now "^0.1.4" + +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + +content-disposition@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" + +content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + +convert-source-map@^1.5.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + +cookie@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" + +copy-concurrently@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" + dependencies: + aproba "^1.1.1" + fs-write-stream-atomic "^1.0.8" + iferr "^0.1.5" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.0" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + +copy-webpack-plugin@^4.5.1: + version "4.5.1" + resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-4.5.1.tgz#fc4f68f4add837cc5e13d111b20715793225d29c" + dependencies: + cacache "^10.0.4" + find-cache-dir "^1.0.0" + globby "^7.1.1" + is-glob "^4.0.0" + loader-utils "^1.1.0" + minimatch "^3.0.4" + p-limit "^1.0.0" + serialize-javascript "^1.4.0" + +core-js@>=2.5.4, core-js@^2.2.0, core-js@^2.4.0: + version "2.5.5" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.5.tgz#b14dde936c640c0579a6b50cabcc132dd6127e3b" + +core-js@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.3.0.tgz#fab83fbb0b2d8dc85fa636c4b9d34c75420c6d65" + +core-util-is@1.0.2, core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + +cors@latest: + version "2.8.4" + resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.4.tgz#2bd381f2eb201020105cd50ea59da63090694686" + dependencies: + object-assign "^4" + vary "^1" + +cosmiconfig@^2.1.0, cosmiconfig@^2.1.1: + version "2.2.2" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-2.2.2.tgz#6173cebd56fac042c1f4390edf7af6c07c7cb892" + dependencies: + is-directory "^0.3.1" + js-yaml "^3.4.3" + minimist "^1.2.0" + object-assign "^4.1.0" + os-homedir "^1.0.1" + parse-json "^2.2.0" + require-from-string "^1.1.0" + +cpx@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/cpx/-/cpx-1.5.0.tgz#185be018511d87270dedccc293171e37655ab88f" + dependencies: + babel-runtime "^6.9.2" + chokidar "^1.6.0" + duplexer "^0.1.1" + glob "^7.0.5" + glob2base "^0.0.12" + minimatch "^3.0.2" + mkdirp "^0.5.1" + resolve "^1.1.7" + safe-buffer "^5.0.1" + shell-quote "^1.6.1" + subarg "^1.0.0" + +create-ecdh@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.1.tgz#44223dfed533193ba5ba54e0df5709b89acf1f82" + dependencies: + bn.js "^4.1.0" + elliptic "^6.0.0" + +create-error-class@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" + dependencies: + capture-stack-trace "^1.0.0" + +create-hash@^1.1.0, create-hash@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +cross-spawn@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982" + dependencies: + lru-cache "^4.0.1" + which "^1.2.9" + +cross-spawn@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + +cryptiles@2.x.x: + version "2.0.5" + resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" + dependencies: + boom "2.x.x" + +cryptiles@3.x.x: + version "3.1.2" + resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.2.tgz#a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe" + dependencies: + boom "5.x.x" + +crypto-browserify@^3.11.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + +crypto-random-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" + +css-parse@1.7.x: + version "1.7.0" + resolved "https://registry.yarnpkg.com/css-parse/-/css-parse-1.7.0.tgz#321f6cf73782a6ff751111390fc05e2c657d8c9b" + +css-select@^1.1.0, css-select@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" + dependencies: + boolbase "~1.0.0" + css-what "2.1" + domutils "1.5.1" + nth-check "~1.0.1" + +css-selector-tokenizer@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz#e6988474ae8c953477bf5e7efecfceccd9cf4c86" + dependencies: + cssesc "^0.1.0" + fastparse "^1.1.1" + regexpu-core "^1.0.0" + +css-what@2.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd" + +cssauron@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/cssauron/-/cssauron-1.4.0.tgz#a6602dff7e04a8306dc0db9a551e92e8b5662ad8" + dependencies: + through X.X.X + +cssesc@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4" + +cuint@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/cuint/-/cuint-0.2.2.tgz#408086d409550c2631155619e9fa7bcadc3b991b" + +currently-unhandled@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" + dependencies: + array-find-index "^1.0.1" + +custom-event@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425" + +cyclist@~0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" + +d@1: + version "1.0.0" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" + dependencies: + es5-ext "^0.10.9" + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + dependencies: + assert-plus "^1.0.0" + +date-now@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" + +dateformat@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-2.2.0.tgz#4065e2013cf9fb916ddfd82efb506ad4c6769062" + +debug@*, debug@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + dependencies: + ms "2.0.0" + +debug@2, debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.6, debug@^2.6.8: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + dependencies: + ms "2.0.0" + +debug@2.2.0, debug@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" + dependencies: + ms "0.7.1" + +debug@2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.3.3.tgz#40c453e67e6e13c901ddec317af8986cda9eff8c" + dependencies: + ms "0.7.2" + +decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + +deep-equal@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" + +deep-extend@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.5.1.tgz#b894a9dd90d3023fbf1c55a394fb858eb2066f1f" + +deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + +default-require-extensions@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8" + dependencies: + strip-bom "^2.0.0" + +define-properties@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" + dependencies: + foreach "^2.0.5" + object-keys "^1.0.8" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +del@^2.2.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" + dependencies: + globby "^5.0.0" + is-path-cwd "^1.0.0" + is-path-in-cwd "^1.0.0" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + rimraf "^2.2.8" + +del@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5" + dependencies: + globby "^6.1.0" + is-path-cwd "^1.0.0" + is-path-in-cwd "^1.0.0" + p-map "^1.1.1" + pify "^3.0.0" + rimraf "^2.2.8" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + +depd@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359" + +depd@~1.1.1, depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + +des.js@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + +detect-indent@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" + dependencies: + repeating "^2.0.0" + +detect-libc@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + +detect-node@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.3.tgz#a2033c09cc8e158d37748fbde7507832bd6ce127" + +di@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" + +diff@^3.1.0, diff@^3.2.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" + +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +dir-glob@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034" + dependencies: + arrify "^1.0.1" + path-type "^3.0.0" + +dns-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" + +dns-packet@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a" + dependencies: + ip "^1.1.0" + safe-buffer "^5.0.1" + +dns-txt@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" + dependencies: + buffer-indexof "^1.0.0" + +dom-converter@~0.1: + version "0.1.4" + resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.1.4.tgz#a45ef5727b890c9bffe6d7c876e7b19cb0e17f3b" + dependencies: + utila "~0.3" + +dom-serialize@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b" + dependencies: + custom-event "~1.0.0" + ent "~2.2.0" + extend "^3.0.0" + void-elements "^2.0.0" + +dom-serializer@0, dom-serializer@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82" + dependencies: + domelementtype "~1.1.1" + entities "~1.1.1" + +domain-browser@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" + +domelementtype@1, domelementtype@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2" + +domelementtype@~1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b" + +domhandler@2.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.1.0.tgz#d2646f5e57f6c3bab11cf6cb05d3c0acf7412594" + dependencies: + domelementtype "1" + +domhandler@^2.3.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.1.tgz#892e47000a99be55bbf3774ffea0561d8879c259" + dependencies: + domelementtype "1" + +domutils@1.1: + version "1.1.6" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.1.6.tgz#bddc3de099b9a2efacc51c623f28f416ecc57485" + dependencies: + domelementtype "1" + +domutils@1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" + dependencies: + dom-serializer "0" + domelementtype "1" + +domutils@^1.5.1: + version "1.7.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + dependencies: + dom-serializer "0" + domelementtype "1" + +dot-prop@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" + dependencies: + is-obj "^1.0.0" + +dot@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/dot/-/dot-1.1.2.tgz#c7377019fc4e550798928b2b9afeb66abfa1f2f9" + +duplexer2@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db" + dependencies: + readable-stream "~1.1.9" + +duplexer3@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" + +duplexer@^0.1.1, duplexer@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" + +duplexify@^3.4.2, duplexify@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.6.0.tgz#592903f5d80b38d037220541264d69a198fb3410" + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + +ecc-jsbn@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" + dependencies: + jsbn "~0.1.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + +ejs@^2.5.7: + version "2.6.1" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.6.1.tgz#498ec0d495655abc6f23cd61868d926464071aa0" + +electron-to-chromium@^1.3.42: + version "1.3.45" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.45.tgz#458ac1b1c5c760ce8811a16d2bfbd97ec30bafb8" + +elliptic@^6.0.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df" + dependencies: + bn.js "^4.4.0" + brorand "^1.0.1" + hash.js "^1.0.0" + hmac-drbg "^1.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.0" + +emojis-list@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" + +encodeurl@~1.0.1, encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + +end-of-stream@^1.0.0, end-of-stream@^1.1.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" + dependencies: + once "^1.4.0" + +engine.io-client@1.8.3: + version "1.8.3" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-1.8.3.tgz#1798ed93451246453d4c6f635d7a201fe940d5ab" + dependencies: + component-emitter "1.2.1" + component-inherit "0.0.3" + debug "2.3.3" + engine.io-parser "1.3.2" + has-cors "1.1.0" + indexof "0.0.1" + parsejson "0.0.3" + parseqs "0.0.5" + parseuri "0.0.5" + ws "1.1.2" + xmlhttprequest-ssl "1.5.3" + yeast "0.1.2" + +engine.io-parser@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-1.3.2.tgz#937b079f0007d0893ec56d46cb220b8cb435220a" + dependencies: + after "0.8.2" + arraybuffer.slice "0.0.6" + base64-arraybuffer "0.1.5" + blob "0.0.4" + has-binary "0.1.7" + wtf-8 "1.0.0" + +engine.io@1.8.3: + version "1.8.3" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-1.8.3.tgz#8de7f97895d20d39b85f88eeee777b2bd42b13d4" + dependencies: + accepts "1.3.3" + base64id "1.0.0" + cookie "0.3.1" + debug "2.3.3" + engine.io-parser "1.3.2" + ws "1.1.2" + +enhanced-resolve@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.0.0.tgz#e34a6eaa790f62fccd71d93959f56b2b432db10a" + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.4.0" + tapable "^1.0.0" + +ent@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" + +entities@^1.1.1, entities@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" + +errno@^0.1.1, errno@^0.1.3, errno@~0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" + dependencies: + prr "~1.0.1" + +error-ex@^1.2.0, error-ex@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.5.1, es-abstract@^1.7.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.11.0.tgz#cce87d518f0496893b1a30cd8461835535480681" + dependencies: + es-to-primitive "^1.1.1" + function-bind "^1.1.1" + has "^1.0.1" + is-callable "^1.1.3" + is-regex "^1.0.4" + +es-to-primitive@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d" + dependencies: + is-callable "^1.1.1" + is-date-object "^1.0.1" + is-symbol "^1.0.1" + +es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14: + version "0.10.42" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.42.tgz#8c07dd33af04d5dcd1310b5cef13bea63a89ba8d" + dependencies: + es6-iterator "~2.0.3" + es6-symbol "~3.1.1" + next-tick "1" + +es6-iterator@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +es6-promise@^3.1.2: + version "3.3.1" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613" + +es6-promise@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.0.2.tgz#010d5858423a5f118979665f46486a95c6ee2bb6" + +es6-symbol@^3.1.1, es6-symbol@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" + dependencies: + d "1" + es5-ext "~0.10.14" + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + +escodegen@1.8.x: + version "1.8.1" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018" + dependencies: + esprima "^2.7.1" + estraverse "^1.9.1" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.2.0" + +eslint-scope@^3.7.1: + version "3.7.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +esprima@2.7.x, esprima@^2.7.1: + version "2.7.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" + +esprima@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" + +esrecurse@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" + dependencies: + estraverse "^4.1.0" + +estraverse@^1.9.1: + version "1.9.3" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" + +estraverse@^4.1.0, estraverse@^4.1.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" + +estree-walker@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.3.1.tgz#e6b1a51cf7292524e7237c312e5fe6660c1ce1aa" + +estree-walker@^0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.5.2.tgz#d3850be7529c9580d815600b53126515e146dd39" + +esutils@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + +event-stream@latest: + version "3.3.4" + resolved "http://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571" + dependencies: + duplexer "~0.1.1" + from "~0" + map-stream "~0.1.0" + pause-stream "0.0.11" + split "0.3" + stream-combiner "~0.0.4" + through "~2.3.1" + +eventemitter3@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163" + +events@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" + +eventsource@0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232" + dependencies: + original ">=0.0.5" + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +execa@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + +expand-braces@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/expand-braces/-/expand-braces-0.1.2.tgz#488b1d1d2451cb3d3a6b192cfc030f44c5855fea" + dependencies: + array-slice "^0.2.3" + array-unique "^0.2.1" + braces "^0.1.2" + +expand-brackets@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" + dependencies: + is-posix-bracket "^0.1.0" + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +expand-range@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-0.1.1.tgz#4cb8eda0993ca56fa4f41fc42f3cbb4ccadff044" + dependencies: + is-number "^0.1.1" + repeat-string "^0.2.2" + +expand-range@^1.8.1: + version "1.8.2" + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" + dependencies: + fill-range "^2.1.0" + +express@^4.16.2: + version "4.16.3" + resolved "https://registry.yarnpkg.com/express/-/express-4.16.3.tgz#6af8a502350db3246ecc4becf6b5a34d22f7ed53" + dependencies: + accepts "~1.3.5" + array-flatten "1.1.1" + body-parser "1.18.2" + content-disposition "0.5.2" + content-type "~1.0.4" + cookie "0.3.1" + cookie-signature "1.0.6" + debug "2.6.9" + depd "~1.1.2" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.1.1" + fresh "0.5.2" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "~2.3.0" + parseurl "~1.3.2" + path-to-regexp "0.1.7" + proxy-addr "~2.0.3" + qs "6.5.1" + range-parser "~1.2.0" + safe-buffer "5.1.1" + send "0.16.2" + serve-static "1.13.2" + setprototypeof "1.1.0" + statuses "~1.4.0" + type-is "~1.6.16" + utils-merge "1.0.1" + vary "~1.1.2" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@3, extend@^3.0.0, extend@~3.0.0, extend@~3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" + +extglob@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" + dependencies: + is-extglob "^1.0.0" + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + +fancy-log@^1.1.0, fancy-log@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.2.tgz#f41125e3d84f2e7d89a43d06d958c8f78be16be1" + dependencies: + ansi-gray "^0.1.1" + color-support "^1.1.3" + time-stamp "^1.0.0" + +fast-deep-equal@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" + +fast-json-stable-stringify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" + +fast-levenshtein@~2.0.4: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + +fastparse@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8" + +faye-websocket@0.11.x, faye-websocket@~0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38" + dependencies: + websocket-driver ">=0.5.1" + +faye-websocket@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" + dependencies: + websocket-driver ">=0.5.1" + +file-loader@^1.1.11: + version "1.1.11" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-1.1.11.tgz#6fe886449b0f2a936e43cabaac0cdbfb369506f8" + dependencies: + loader-utils "^1.0.2" + schema-utils "^0.4.5" + +filename-regex@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" + +fileset@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/fileset/-/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0" + dependencies: + glob "^7.0.3" + minimatch "^3.0.3" + +fill-range@^2.1.0: + version "2.2.3" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" + dependencies: + is-number "^2.1.0" + isobject "^2.0.0" + randomatic "^1.1.3" + repeat-element "^1.1.2" + repeat-string "^1.5.2" + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +finalhandler@0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-0.5.1.tgz#2c400d8d4530935bc232549c5fa385ec07de6fcd" + dependencies: + debug "~2.2.0" + escape-html "~1.0.3" + on-finished "~2.3.0" + statuses "~1.3.1" + unpipe "~1.0.0" + +finalhandler@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.0.tgz#ce0b6855b45853e791b2fcc680046d88253dd7f5" + dependencies: + debug "2.6.9" + encodeurl "~1.0.1" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.2" + statuses "~1.3.1" + unpipe "~1.0.0" + +finalhandler@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.1.tgz#eebf4ed840079c83f4249038c9d703008301b105" + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.2" + statuses "~1.4.0" + unpipe "~1.0.0" + +find-cache-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f" + dependencies: + commondir "^1.0.1" + make-dir "^1.0.0" + pkg-dir "^2.0.0" + +find-index@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/find-index/-/find-index-0.1.1.tgz#675d358b2ca3892d795a1ab47232f8b6e2e0dde4" + +find-parent-dir@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/find-parent-dir/-/find-parent-dir-0.3.0.tgz#33c44b429ab2b2f0646299c5f9f718f376ff8d54" + +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +find-up@^2.0.0, find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + dependencies: + locate-path "^2.0.0" + +flush-write-stream@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.3.tgz#c5d586ef38af6097650b49bc41b55fabb19f35bd" + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.4" + +follow-redirects@^1.0.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.4.1.tgz#d8120f4518190f55aac65bb6fc7b85fcd666d6aa" + dependencies: + debug "^3.1.0" + +for-in@^0.1.3: + version "0.1.8" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1" + +for-in@^1.0.1, for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + +for-own@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" + dependencies: + for-in "^1.0.1" + +for-own@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" + dependencies: + for-in "^1.0.1" + +foreach@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + +form-data@~2.1.1: + version "2.1.4" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.5" + mime-types "^2.1.12" + +form-data@~2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.2.tgz#4970498be604c20c005d4f5c23aecd21d6b49099" + dependencies: + asynckit "^0.4.0" + combined-stream "1.0.6" + mime-types "^2.1.12" + +forwarded@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + dependencies: + map-cache "^0.2.2" + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + +from2@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.0" + +from@~0: + version "0.1.7" + resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" + +fs-access@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/fs-access/-/fs-access-1.0.1.tgz#d6a87f262271cefebec30c553407fb995da8777a" + dependencies: + null-check "^1.0.0" + +fs-extra@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-3.0.1.tgz#3794f378c58b342ea7dbbb23095109c4b3b62291" + dependencies: + graceful-fs "^4.1.2" + jsonfile "^3.0.0" + universalify "^0.1.0" + +fs-extra@^4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-6.0.0.tgz#0f0afb290bb3deb87978da816fcd3c7797f3a817" + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-minipass@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" + dependencies: + minipass "^2.2.1" + +fs-write-stream-atomic@^1.0.8: + version "1.0.10" + resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" + dependencies: + graceful-fs "^4.1.2" + iferr "^0.1.5" + imurmurhash "^0.1.4" + readable-stream "1 || 2" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + +fsevents@^1.0.0, fsevents@^1.1.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.3.tgz#08292982e7059f6674c93d8b829c1e8604979ac0" + dependencies: + nan "^2.9.2" + node-pre-gyp "^0.9.0" + +fstream@^1.0.0, fstream@^1.0.2: + version "1.0.11" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" + +function-bind@^1.0.2, function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + +gaze@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.2.tgz#847224677adb8870d679257ed3388fdb61e40105" + dependencies: + globule "^1.0.0" + +generate-function@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74" + +generate-object-property@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" + dependencies: + is-property "^1.0.0" + +get-caller-file@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" + +get-stdin@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" + +get-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + dependencies: + assert-plus "^1.0.0" + +glob-base@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" + dependencies: + glob-parent "^2.0.0" + is-glob "^2.0.0" + +glob-parent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" + dependencies: + is-glob "^2.0.0" + +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob2base@^0.0.12: + version "0.0.12" + resolved "https://registry.yarnpkg.com/glob2base/-/glob2base-0.0.12.tgz#9d419b3e28f12e83a362164a277055922c9c0d56" + dependencies: + find-index "^0.1.1" + +glob@7.0.x: + version "7.0.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.0.6.tgz#211bafaf49e525b8cd93260d14ab136152b3f57a" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.2" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^5.0.15: + version "5.0.15" + resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "2 || 3" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^6.0.4: + version "6.0.4" + resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22" + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "2 || 3" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@^7.1.2, glob@~7.1.1: + version "7.1.2" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-dirs@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" + dependencies: + ini "^1.3.4" + +globals@^9.18.0: + version "9.18.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" + +globby@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" + dependencies: + array-union "^1.0.1" + arrify "^1.0.0" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +globby@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" + dependencies: + array-union "^1.0.1" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +globby@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/globby/-/globby-7.1.1.tgz#fb2ccff9401f8600945dfada97440cca972b8680" + dependencies: + array-union "^1.0.1" + dir-glob "^2.0.0" + glob "^7.1.2" + ignore "^3.3.5" + pify "^3.0.0" + slash "^1.0.0" + +globule@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/globule/-/globule-1.2.0.tgz#1dc49c6822dd9e8a2fa00ba2a295006e8664bd09" + dependencies: + glob "~7.1.1" + lodash "~4.17.4" + minimatch "~3.0.2" + +glogg@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.1.tgz#dcf758e44789cc3f3d32c1f3562a3676e6a34810" + dependencies: + sparkles "^1.0.0" + +got@^6.7.1: + version "6.7.1" + resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" + dependencies: + create-error-class "^3.0.0" + duplexer3 "^0.1.4" + get-stream "^3.0.0" + is-redirect "^1.0.0" + is-retry-allowed "^1.0.0" + is-stream "^1.0.0" + lowercase-keys "^1.0.0" + safe-buffer "^5.0.1" + timed-out "^4.0.0" + unzip-response "^2.0.1" + url-parse-lax "^1.0.0" + +graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6: + version "4.1.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" + +gulp-util@^3.0.8: + version "3.0.8" + resolved "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.8.tgz#0054e1e744502e27c04c187c3ecc505dd54bbb4f" + dependencies: + array-differ "^1.0.0" + array-uniq "^1.0.2" + beeper "^1.0.0" + chalk "^1.0.0" + dateformat "^2.0.0" + fancy-log "^1.1.0" + gulplog "^1.0.0" + has-gulplog "^0.1.0" + lodash._reescape "^3.0.0" + lodash._reevaluate "^3.0.0" + lodash._reinterpolate "^3.0.0" + lodash.template "^3.0.0" + minimist "^1.1.0" + multipipe "^0.1.2" + object-assign "^3.0.0" + replace-ext "0.0.1" + through2 "^2.0.0" + vinyl "^0.5.0" + +gulplog@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gulplog/-/gulplog-1.0.0.tgz#e28c4d45d05ecbbed818363ce8f9c5926229ffe5" + dependencies: + glogg "^1.0.0" + +handle-thing@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4" + +handlebars@^4.0.1, handlebars@^4.0.10, handlebars@^4.0.3: + version "4.0.11" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.11.tgz#630a35dfe0294bc281edae6ffc5d329fc7982dcc" + dependencies: + async "^1.4.0" + optimist "^0.6.1" + source-map "^0.4.4" + optionalDependencies: + uglify-js "^2.6" + +har-schema@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + +har-validator@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d" + dependencies: + chalk "^1.1.1" + commander "^2.9.0" + is-my-json-valid "^2.12.4" + pinkie-promise "^2.0.0" + +har-validator@~4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" + dependencies: + ajv "^4.9.1" + har-schema "^1.0.5" + +har-validator@~5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd" + dependencies: + ajv "^5.1.0" + har-schema "^2.0.0" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + dependencies: + ansi-regex "^2.0.0" + +has-binary@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/has-binary/-/has-binary-0.1.7.tgz#68e61eb16210c9545a0a5cce06a873912fe1e68c" + dependencies: + isarray "0.0.1" + +has-cors@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" + +has-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" + +has-flag@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + +has-gulplog@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/has-gulplog/-/has-gulplog-0.1.0.tgz#6414c82913697da51590397dafb12f22967811ce" + dependencies: + sparkles "^1.0.0" + +has-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" + +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +has@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" + dependencies: + function-bind "^1.0.2" + +hash-base@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846" + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.0" + +hawk@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" + dependencies: + boom "2.x.x" + cryptiles "2.x.x" + hoek "2.x.x" + sntp "1.x.x" + +hawk@~6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/hawk/-/hawk-6.0.2.tgz#af4d914eb065f9b5ce4d9d11c1cb2126eecc3038" + dependencies: + boom "4.x.x" + cryptiles "3.x.x" + hoek "4.x.x" + sntp "2.x.x" + +he@1.1.x: + version "1.1.1" + resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" + +hmac-drbg@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +hoek@2.x.x: + version "2.16.3" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" + +hoek@4.x.x: + version "4.2.1" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.1.tgz#9634502aa12c445dd5a7c5734b572bb8738aacbb" + +hosted-git-info@^2.1.4, hosted-git-info@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.6.0.tgz#23235b29ab230c576aab0d4f13fc046b0b038222" + +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + +html-entities@^1.2.0, html-entities@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" + +html-minifier@^3.2.3: + version "3.5.15" + resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.15.tgz#f869848d4543cbfd84f26d5514a2a87cbf9a05e0" + dependencies: + camel-case "3.0.x" + clean-css "4.1.x" + commander "2.15.x" + he "1.1.x" + param-case "2.1.x" + relateurl "0.2.x" + uglify-js "3.3.x" + +html-webpack-plugin@^3.0.6: + version "3.2.0" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz#b01abbd723acaaa7b37b6af4492ebda03d9dd37b" + dependencies: + html-minifier "^3.2.3" + loader-utils "^0.2.16" + lodash "^4.17.3" + pretty-error "^2.0.2" + tapable "^1.0.0" + toposort "^1.0.0" + util.promisify "1.0.0" + +htmlparser2@^3.9.1: + version "3.9.2" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.9.2.tgz#1bdf87acca0f3f9e53fa4fcceb0f4b4cbb00b338" + dependencies: + domelementtype "^1.3.0" + domhandler "^2.3.0" + domutils "^1.5.1" + entities "^1.1.1" + inherits "^2.0.1" + readable-stream "^2.0.2" + +htmlparser2@~3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.3.0.tgz#cc70d05a59f6542e43f0e685c982e14c924a9efe" + dependencies: + domelementtype "1" + domhandler "2.1" + domutils "1.1" + readable-stream "1.0" + +http-auth@3.1.x: + version "3.1.3" + resolved "https://registry.yarnpkg.com/http-auth/-/http-auth-3.1.3.tgz#945cfadd66521eaf8f7c84913d377d7b15f24e31" + dependencies: + apache-crypt "^1.1.2" + apache-md5 "^1.0.6" + bcryptjs "^2.3.0" + uuid "^3.0.0" + +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + +http-errors@1.6.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736" + dependencies: + depd "1.1.1" + inherits "2.0.3" + setprototypeof "1.0.3" + statuses ">= 1.3.1 < 2" + +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +http-parser-js@>=0.4.0: + version "0.4.12" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.12.tgz#b9cfbf4a2cf26f0fc34b10ca1489a27771e3474f" + +http-proxy-middleware@~0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz#0987e6bb5a5606e5a69168d8f967a87f15dd8aab" + dependencies: + http-proxy "^1.16.2" + is-glob "^4.0.0" + lodash "^4.17.5" + micromatch "^3.1.9" + +http-proxy@^1.13.0, http-proxy@^1.16.2: + version "1.17.0" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a" + dependencies: + eventemitter3 "^3.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +http-signature@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" + dependencies: + assert-plus "^0.2.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + +https-proxy-agent@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-1.0.0.tgz#35f7da6c48ce4ddbfa264891ac593ee5ff8671e6" + dependencies: + agent-base "2" + debug "2" + extend "3" + +iconv-lite@0.4.19: + version "0.4.19" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" + +iconv-lite@^0.4.4: + version "0.4.22" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.22.tgz#c6b16b9d05bc6c307dc9303a820412995d2eea95" + dependencies: + safer-buffer ">= 2.1.2 < 3" + +ieee754@^1.1.4: + version "1.1.11" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.11.tgz#c16384ffe00f5b7835824e67b6f2bd44a5229455" + +iferr@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" + +ignore-walk@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" + dependencies: + minimatch "^3.0.4" + +ignore@^3.3.5: + version "3.3.8" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.8.tgz#3f8e9c35d38708a3a7e0e9abb6c73e7ee7707b2b" + +image-size@~0.5.0: + version "0.5.5" + resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" + +immediate@~3.0.5: + version "3.0.6" + resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" + +import-lazy@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" + +import-local@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-1.0.0.tgz#5e4ffdc03f4fe6c009c6729beb29631c2f8227bc" + dependencies: + pkg-dir "^2.0.0" + resolve-cwd "^2.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + +in-publish@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.0.tgz#e20ff5e3a2afc2690320b6dc552682a9c7fadf51" + +indent-string@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" + dependencies: + repeating "^2.0.0" + +indexof@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + +ini@^1.3.4, ini@~1.3.0: + version "1.3.5" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + +injection-js@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/injection-js/-/injection-js-2.2.1.tgz#a8d6a085b2f0b8d8650f6f4487f6abb8cc0d67ce" + +internal-ip@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-1.2.0.tgz#ae9fbf93b984878785d50a8de1b356956058cf5c" + dependencies: + meow "^3.3.0" + +interpret@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614" + +invariant@^2.2.2: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + dependencies: + loose-envify "^1.0.0" + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + +ip@^1.1.0, ip@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" + +ipaddr.js@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.6.0.tgz#e3fa357b773da619f26e95f049d055c72796f86b" + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + dependencies: + kind-of "^6.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + dependencies: + binary-extensions "^1.0.0" + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + +is-builtin-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" + dependencies: + builtin-modules "^1.0.0" + +is-callable@^1.1.1, is-callable@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2" + +is-ci@^1.0.10: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.1.0.tgz#247e4162e7860cebbdaf30b774d6b0ac7dcfe7a5" + dependencies: + ci-info "^1.0.0" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + dependencies: + kind-of "^6.0.0" + +is-date-object@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + +is-dotfile@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" + +is-equal-shallow@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" + dependencies: + is-primitive "^2.0.0" + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" + +is-extglob@^2.1.0, is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + +is-finite@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + +is-glob@^2.0.0, is-glob@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" + dependencies: + is-extglob "^1.0.0" + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + dependencies: + is-extglob "^2.1.0" + +is-glob@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0" + dependencies: + is-extglob "^2.1.1" + +is-installed-globally@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80" + dependencies: + global-dirs "^0.1.0" + is-path-inside "^1.0.0" + +is-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" + +is-my-ip-valid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz#7b351b8e8edd4d3995d4d066680e664d94696824" + +is-my-json-valid@^2.12.4: + version "2.17.2" + resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.17.2.tgz#6b2103a288e94ef3de5cf15d29dd85fc4b78d65c" + dependencies: + generate-function "^2.0.0" + generate-object-property "^1.1.0" + is-my-ip-valid "^1.0.0" + jsonpointer "^4.0.0" + xtend "^4.0.0" + +is-npm@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" + +is-number@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806" + +is-number@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" + dependencies: + kind-of "^3.0.2" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + dependencies: + kind-of "^3.0.2" + +is-number@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" + +is-obj@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + +is-odd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-2.0.0.tgz#7646624671fd7ea558ccd9a2795182f2958f1b24" + dependencies: + is-number "^4.0.0" + +is-path-cwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" + +is-path-in-cwd@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52" + dependencies: + is-path-inside "^1.0.0" + +is-path-inside@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" + dependencies: + path-is-inside "^1.0.1" + +is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + dependencies: + isobject "^3.0.1" + +is-posix-bracket@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" + +is-primitive@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" + +is-property@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" + +is-redirect@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" + +is-regex@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" + dependencies: + has "^1.0.1" + +is-retry-allowed@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" + +is-stream@^1.0.0, is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + +is-symbol@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + +isbinaryfile@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.2.tgz#4a3e974ec0cba9004d3fc6cde7209ea69368a621" + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + +istanbul-api@^1.1.14: + version "1.3.1" + resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.3.1.tgz#4c3b05d18c0016d1022e079b98dc82c40f488954" + dependencies: + async "^2.1.4" + compare-versions "^3.1.0" + fileset "^2.0.2" + istanbul-lib-coverage "^1.2.0" + istanbul-lib-hook "^1.2.0" + istanbul-lib-instrument "^1.10.1" + istanbul-lib-report "^1.1.4" + istanbul-lib-source-maps "^1.2.4" + istanbul-reports "^1.3.0" + js-yaml "^3.7.0" + mkdirp "^0.5.1" + once "^1.4.0" + +istanbul-instrumenter-loader@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/istanbul-instrumenter-loader/-/istanbul-instrumenter-loader-3.0.1.tgz#9957bd59252b373fae5c52b7b5188e6fde2a0949" + dependencies: + convert-source-map "^1.5.0" + istanbul-lib-instrument "^1.7.3" + loader-utils "^1.1.0" + schema-utils "^0.3.0" + +istanbul-lib-coverage@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz#f7d8f2e42b97e37fe796114cb0f9d68b5e3a4341" + +istanbul-lib-hook@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.2.0.tgz#ae556fd5a41a6e8efa0b1002b1e416dfeaf9816c" + dependencies: + append-transform "^0.4.0" + +istanbul-lib-instrument@^1.10.1, istanbul-lib-instrument@^1.7.3: + version "1.10.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.1.tgz#724b4b6caceba8692d3f1f9d0727e279c401af7b" + dependencies: + babel-generator "^6.18.0" + babel-template "^6.16.0" + babel-traverse "^6.18.0" + babel-types "^6.18.0" + babylon "^6.18.0" + istanbul-lib-coverage "^1.2.0" + semver "^5.3.0" + +istanbul-lib-report@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.4.tgz#e886cdf505c4ebbd8e099e4396a90d0a28e2acb5" + dependencies: + istanbul-lib-coverage "^1.2.0" + mkdirp "^0.5.1" + path-parse "^1.0.5" + supports-color "^3.1.2" + +istanbul-lib-source-maps@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.4.tgz#cc7ccad61629f4efff8e2f78adb8c522c9976ec7" + dependencies: + debug "^3.1.0" + istanbul-lib-coverage "^1.2.0" + mkdirp "^0.5.1" + rimraf "^2.6.1" + source-map "^0.5.3" + +istanbul-reports@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.3.0.tgz#2f322e81e1d9520767597dca3c20a0cce89a3554" + dependencies: + handlebars "^4.0.3" + +istanbul@^0.4.5: + version "0.4.5" + resolved "https://registry.yarnpkg.com/istanbul/-/istanbul-0.4.5.tgz#65c7d73d4c4da84d4f3ac310b918fb0b8033733b" + dependencies: + abbrev "1.0.x" + async "1.x" + escodegen "1.8.x" + esprima "2.7.x" + glob "^5.0.15" + handlebars "^4.0.1" + js-yaml "3.x" + mkdirp "0.5.x" + nopt "3.x" + once "1.x" + resolve "1.1.x" + supports-color "^3.1.0" + which "^1.1.1" + wordwrap "^1.0.0" + +jasmine-core@~2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.8.0.tgz#bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e" + +jasmine-core@~2.99.1: + version "2.99.1" + resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.99.1.tgz#e6400df1e6b56e130b61c4bcd093daa7f6e8ca15" + +jasmine-spec-reporter@~4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/jasmine-spec-reporter/-/jasmine-spec-reporter-4.2.1.tgz#1d632aec0341670ad324f92ba84b4b32b35e9e22" + dependencies: + colors "1.1.2" + +jasmine@2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-2.8.0.tgz#6b089c0a11576b1f16df11b80146d91d4e8b8a3e" + dependencies: + exit "^0.1.2" + glob "^7.0.6" + jasmine-core "~2.8.0" + +jasminewd2@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/jasminewd2/-/jasminewd2-2.2.0.tgz#e37cf0b17f199cce23bea71b2039395246b4ec4e" + +js-base64@^2.1.8: + version "2.4.3" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.3.tgz#2e545ec2b0f2957f41356510205214e98fad6582" + +js-tokens@^3.0.0, js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + +js-yaml@3.x, js-yaml@^3.4.3, js-yaml@^3.7.0: + version "3.11.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.11.0.tgz#597c1a8bd57152f26d622ce4117851a51f5ebaef" + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + +jsesc@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + +json-parse-better-errors@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + +json-schema-traverse@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + +json-stable-stringify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" + dependencies: + jsonify "~0.0.0" + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + +json3@3.3.2, json3@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" + +json5@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + +jsonfile@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-3.0.1.tgz#a5ecc6f65f53f662c4415c7675a0331d0992ec66" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + +jsonpointer@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +jszip@^3.1.3: + version "3.1.5" + resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.1.5.tgz#e3c2a6c6d706ac6e603314036d43cd40beefdf37" + dependencies: + core-js "~2.3.0" + es6-promise "~3.0.2" + lie "~3.1.0" + pako "~1.0.2" + readable-stream "~2.0.6" + +karma-chrome-launcher@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz#cf1b9d07136cc18fe239327d24654c3dbc368acf" + dependencies: + fs-access "^1.0.0" + which "^1.2.1" + +karma-coverage-istanbul-reporter@~1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-1.4.2.tgz#a8d0c8815c7d6f6cea15a394a7c4b39ef151a939" + dependencies: + istanbul-api "^1.1.14" + minimatch "^3.0.4" + +karma-jasmine-html-reporter@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-0.2.2.tgz#48a8e5ef18807617ee2b5e33c1194c35b439524c" + dependencies: + karma-jasmine "^1.0.2" + +karma-jasmine@^1.0.2, karma-jasmine@~1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/karma-jasmine/-/karma-jasmine-1.1.2.tgz#394f2b25ffb4a644b9ada6f22d443e2fd08886c3" + +karma-source-map-support@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/karma-source-map-support/-/karma-source-map-support-1.2.0.tgz#1bf81e7bb4b089627ab352ec4179e117c406a540" + dependencies: + source-map-support "^0.4.1" + +karma@~1.7.1: + version "1.7.1" + resolved "https://registry.yarnpkg.com/karma/-/karma-1.7.1.tgz#85cc08e9e0a22d7ce9cca37c4a1be824f6a2b1ae" + dependencies: + bluebird "^3.3.0" + body-parser "^1.16.1" + chokidar "^1.4.1" + colors "^1.1.0" + combine-lists "^1.0.0" + connect "^3.6.0" + core-js "^2.2.0" + di "^0.0.1" + dom-serialize "^2.2.0" + expand-braces "^0.1.1" + glob "^7.1.1" + graceful-fs "^4.1.2" + http-proxy "^1.13.0" + isbinaryfile "^3.0.0" + lodash "^3.8.0" + log4js "^0.6.31" + mime "^1.3.4" + minimatch "^3.0.2" + optimist "^0.6.1" + qjobs "^1.1.4" + range-parser "^1.2.0" + rimraf "^2.6.0" + safe-buffer "^5.0.1" + socket.io "1.7.3" + source-map "^0.5.3" + tmp "0.0.31" + useragent "^2.1.12" + +killable@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.0.tgz#da8b84bd47de5395878f95d64d02f2449fe05e6b" + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" + +latest-version@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" + dependencies: + package-json "^4.0.0" + +lazy-cache@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + dependencies: + invert-kv "^1.0.0" + +less-loader@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-4.1.0.tgz#2c1352c5b09a4f84101490274fd51674de41363e" + dependencies: + clone "^2.1.1" + loader-utils "^1.1.0" + pify "^3.0.0" + +less@^3.0.0, less@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/less/-/less-3.0.2.tgz#1bcb9813bb6090c884ac142f02c633bd42931844" + optionalDependencies: + errno "^0.1.1" + graceful-fs "^4.1.2" + image-size "~0.5.0" + mime "^1.4.1" + mkdirp "^0.5.0" + promise "^7.1.1" + request "^2.83.0" + source-map "^0.5.3" + +levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +license-webpack-plugin@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/license-webpack-plugin/-/license-webpack-plugin-1.3.1.tgz#688b76472188ef597918b7cae3eec7dc2fa5a0e8" + dependencies: + ejs "^2.5.7" + +lie@~3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e" + dependencies: + immediate "~3.0.5" + +live-server@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/live-server/-/live-server-1.2.0.tgz#4498644bbf81a66f18dd8dffdef61c4c1c374ca3" + dependencies: + chokidar "^1.6.0" + colors latest + connect "3.5.x" + cors latest + event-stream latest + faye-websocket "0.11.x" + http-auth "3.1.x" + morgan "^1.6.1" + object-assign latest + opn latest + proxy-middleware latest + send latest + serve-index "^1.7.2" + +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + +load-json-file@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" + dependencies: + graceful-fs "^4.1.2" + parse-json "^4.0.0" + pify "^3.0.0" + strip-bom "^3.0.0" + +loader-runner@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2" + +loader-utils@^0.2.16: + version "0.2.17" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" + dependencies: + big.js "^3.1.3" + emojis-list "^2.0.0" + json5 "^0.5.0" + object-assign "^4.0.1" + +loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd" + dependencies: + big.js "^3.1.3" + emojis-list "^2.0.0" + json5 "^0.5.0" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +lodash._basecopy@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" + +lodash._basetostring@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz#d1861d877f824a52f669832dcaf3ee15566a07d5" + +lodash._basevalues@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz#5b775762802bde3d3297503e26300820fdf661b7" + +lodash._getnative@^3.0.0: + version "3.9.1" + resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" + +lodash._isiterateecall@^3.0.0: + version "3.0.9" + resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" + +lodash._reescape@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reescape/-/lodash._reescape-3.0.0.tgz#2b1d6f5dfe07c8a355753e5f27fac7f1cde1616a" + +lodash._reevaluate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz#58bc74c40664953ae0b124d806996daca431e2ed" + +lodash._reinterpolate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" + +lodash._root@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692" + +lodash.assign@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" + +lodash.clonedeep@^4.3.2, lodash.clonedeep@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + +lodash.escape@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-3.2.0.tgz#995ee0dc18c1b48cc92effae71a10aab5b487698" + dependencies: + lodash._root "^3.0.0" + +lodash.isarguments@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" + +lodash.isarray@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" + +lodash.keys@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" + dependencies: + lodash._getnative "^3.0.0" + lodash.isarguments "^3.0.0" + lodash.isarray "^3.0.0" + +lodash.mergewith@^4.6.0: + version "4.6.1" + resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz#639057e726c3afbdb3e7d42741caa8d6e4335927" + +lodash.restparam@^3.0.0: + version "3.6.1" + resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" + +lodash.tail@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.tail/-/lodash.tail-4.1.1.tgz#d2333a36d9e7717c8ad2f7cacafec7c32b444664" + +lodash.template@^3.0.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-3.6.2.tgz#f8cdecc6169a255be9098ae8b0c53d378931d14f" + dependencies: + lodash._basecopy "^3.0.0" + lodash._basetostring "^3.0.0" + lodash._basevalues "^3.0.0" + lodash._isiterateecall "^3.0.0" + lodash._reinterpolate "^3.0.0" + lodash.escape "^3.0.0" + lodash.keys "^3.0.0" + lodash.restparam "^3.0.0" + lodash.templatesettings "^3.0.0" + +lodash.templatesettings@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz#fb307844753b66b9f1afa54e262c745307dba8e5" + dependencies: + lodash._reinterpolate "^3.0.0" + lodash.escape "^3.0.0" + +lodash@^3.8.0: + version "3.10.1" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" + +lodash@^4.0.0, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.5.0, lodash@~4.17.4: + version "4.17.10" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" + +log-symbols@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" + dependencies: + chalk "^2.0.1" + +log4js@^0.6.31: + version "0.6.38" + resolved "https://registry.yarnpkg.com/log4js/-/log4js-0.6.38.tgz#2c494116695d6fb25480943d3fc872e662a522fd" + dependencies: + readable-stream "~1.0.2" + semver "~4.3.3" + +loglevel@^1.4.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa" + +loglevelnext@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/loglevelnext/-/loglevelnext-1.0.5.tgz#36fc4f5996d6640f539ff203ba819641680d75a2" + dependencies: + es6-symbol "^3.1.1" + object.assign "^4.1.0" + +longest@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" + +loose-envify@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" + dependencies: + js-tokens "^3.0.0" + +loud-rejection@^1.0.0, loud-rejection@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" + dependencies: + currently-unhandled "^0.4.1" + signal-exit "^3.0.0" + +lower-case@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" + +lowercase-keys@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" + +lru-cache@4.1.x, lru-cache@^4.0.1, lru-cache@^4.1.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.2.tgz#45234b2e6e2f2b33da125624c4664929a0224c3f" + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +lunr@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lunr/-/lunr-1.0.0.tgz#5c9276c92c91ac35a9241b5018d46723d92e2f5f" + +macos-release@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-1.1.0.tgz#831945e29365b470aa8724b0ab36c8f8959d10fb" + +magic-string@^0.22.4: + version "0.22.5" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.22.5.tgz#8e9cf5afddf44385c1da5bc2a6a0dbd10b03657e" + dependencies: + vlq "^0.2.2" + +make-dir@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.2.0.tgz#6d6a49eead4aae296c53bbf3a1a008bd6c89469b" + dependencies: + pify "^3.0.0" + +make-error@^1.1.1: + version "1.3.4" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.4.tgz#19978ed575f9e9545d2ff8c13e33b5d18a67d535" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + +map-obj@^1.0.0, map-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + +map-stream@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194" + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + dependencies: + object-visit "^1.0.0" + +marked@^0.3.6: + version "0.3.19" + resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.19.tgz#5d47f709c4c9fc3c216b6d46127280f40b39d790" + +md5.js@^1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.4.tgz#e9bdbde94a20a5ac18b04340fc5764d5b09d901d" + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + +mem@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" + dependencies: + mimic-fn "^1.0.0" + +memory-fs@^0.4.0, memory-fs@^0.4.1, memory-fs@~0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +meow@^3.3.0, meow@^3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" + dependencies: + camelcase-keys "^2.0.0" + decamelize "^1.1.2" + loud-rejection "^1.0.0" + map-obj "^1.0.1" + minimist "^1.1.3" + normalize-package-data "^2.3.4" + object-assign "^4.0.1" + read-pkg-up "^1.0.1" + redent "^1.0.0" + trim-newlines "^1.0.0" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + +micromatch@^2.1.5, micromatch@^2.3.11: + version "2.3.11" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" + dependencies: + arr-diff "^2.0.0" + array-unique "^0.2.1" + braces "^1.8.2" + expand-brackets "^0.1.4" + extglob "^0.3.1" + filename-regex "^2.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.1" + kind-of "^3.0.2" + normalize-path "^2.0.1" + object.omit "^2.0.0" + parse-glob "^3.0.4" + regex-cache "^0.4.2" + +micromatch@^3.1.4, micromatch@^3.1.8, micromatch@^3.1.9: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +"mime-db@>= 1.33.0 < 2", mime-db@~1.33.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" + +mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.17, mime-types@~2.1.18, mime-types@~2.1.7: + version "2.1.18" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8" + dependencies: + mime-db "~1.33.0" + +mime@1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" + +mime@^1.3.4, mime@^1.4.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + +mime@^2.0.3, mime@^2.1.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.3.1.tgz#b1621c54d63b97c47d3cfe7f7215f7d64517c369" + +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + +mini-css-extract-plugin@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.0.tgz#ff3bf08bee96e618e177c16ca6131bfecef707f9" + dependencies: + loader-utils "^1.1.0" + webpack-sources "^1.1.0" + +minimalistic-assert@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + +minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + +"minimatch@2 || 3", minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4, minimatch@~3.0.2: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + dependencies: + brace-expansion "^1.1.7" + +minimist@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + +minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + +minimist@~0.0.1: + version "0.0.10" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" + +minipass@^2.2.1, minipass@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.2.4.tgz#03c824d84551ec38a8d1bb5bc350a5a30a354a40" + dependencies: + safe-buffer "^5.1.1" + yallist "^3.0.0" + +minizlib@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.1.0.tgz#11e13658ce46bc3a70a267aac58359d1e0c29ceb" + dependencies: + minipass "^2.2.1" + +mississippi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-2.0.0.tgz#3442a508fafc28500486feea99409676e4ee5a6f" + dependencies: + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^2.0.1" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" + +mixin-deep@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mixin-object@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/mixin-object/-/mixin-object-2.0.1.tgz#4fb949441dab182540f1fe035ba60e1947a5e57e" + dependencies: + for-in "^0.1.3" + is-extendable "^0.1.1" + +mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + dependencies: + minimist "0.0.8" + +morgan@^1.6.1: + version "1.9.0" + resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.9.0.tgz#d01fa6c65859b76fcf31b3cb53a3821a311d8051" + dependencies: + basic-auth "~2.0.0" + debug "2.6.9" + depd "~1.1.1" + on-finished "~2.3.0" + on-headers "~1.0.1" + +move-concurrently@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" + dependencies: + aproba "^1.1.1" + copy-concurrently "^1.0.0" + fs-write-stream-atomic "^1.0.8" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.3" + +ms@0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" + +ms@0.7.2: + version "0.7.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + +multicast-dns-service-types@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" + +multicast-dns@^6.0.1: + version "6.2.3" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" + dependencies: + dns-packet "^1.3.1" + thunky "^1.0.2" + +multipipe@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/multipipe/-/multipipe-0.1.2.tgz#2a8f2ddf70eed564dff2d57f1e1a137d9f05078b" + dependencies: + duplexer2 "0.0.2" + +nan@^2.10.0, nan@^2.3.2, nan@^2.9.2: + version "2.10.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f" + +nanomatch@^1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.9.tgz#879f7150cb2dab7a471259066c104eee6e0fa7c2" + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-odd "^2.0.0" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +needle@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.1.tgz#b5e325bd3aae8c2678902fa296f729455d1d3a7d" + dependencies: + debug "^2.1.2" + iconv-lite "^0.4.4" + sax "^1.2.4" + +negotiator@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" + +neo-async@^2.5.0: + version "2.5.1" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.5.1.tgz#acb909e327b1e87ec9ef15f41b8a269512ad41ee" + +next-tick@1: + version "1.0.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" + +ng-packagr@^3.0.0-rc.2: + version "3.0.0-rc.3" + resolved "https://registry.yarnpkg.com/ng-packagr/-/ng-packagr-3.0.0-rc.3.tgz#5d1846a3f2a0977654b0d6564a0a0ad0b4f667a5" + dependencies: + "@ngtools/json-schema" "^1.1.0" + autoprefixer "^8.0.0" + browserslist "^3.0.0" + chalk "^2.3.1" + commander "^2.12.0" + cpx "^1.5.0" + fs-extra "^6.0.0" + glob "^7.1.2" + injection-js "^2.2.1" + less "^3.0.0" + node-sass "^4.5.3" + node-sass-tilde-importer "^1.0.0" + postcss "^6.0.2" + postcss-clean "^1.1.0" + postcss-url "^7.3.0" + read-pkg-up "^3.0.0" + rimraf "^2.6.1" + rollup "^0.58.0" + rollup-plugin-commonjs "^9.1.3" + rollup-plugin-node-resolve "^3.0.0" + rxjs "^6.0.0" + sorcery "^0.10.0" + strip-bom "^3.0.0" + stylus "^0.54.5" + uglify-js "^3.0.7" + update-notifier "^2.3.0" + +no-case@^2.2.0: + version "2.3.2" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" + dependencies: + lower-case "^1.1.1" + +node-forge@0.7.5: + version "0.7.5" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.5.tgz#6c152c345ce11c52f465c2abd957e8639cd674df" + +node-gyp@^3.3.1: + version "3.6.2" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.6.2.tgz#9bfbe54562286284838e750eac05295853fa1c60" + dependencies: + fstream "^1.0.0" + glob "^7.0.3" + graceful-fs "^4.1.2" + minimatch "^3.0.2" + mkdirp "^0.5.0" + nopt "2 || 3" + npmlog "0 || 1 || 2 || 3 || 4" + osenv "0" + request "2" + rimraf "2" + semver "~5.3.0" + tar "^2.0.0" + which "1" + +node-libs-browser@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.1.0.tgz#5f94263d404f6e44767d726901fff05478d600df" + dependencies: + assert "^1.1.1" + browserify-zlib "^0.2.0" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^1.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.0" + process "^0.11.10" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.3.3" + stream-browserify "^2.0.1" + stream-http "^2.7.2" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.10.3" + vm-browserify "0.0.4" + +node-pre-gyp@^0.9.0: + version "0.9.1" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.9.1.tgz#f11c07516dd92f87199dbc7e1838eab7cd56c9e0" + dependencies: + detect-libc "^1.0.2" + mkdirp "^0.5.1" + needle "^2.2.0" + nopt "^4.0.1" + npm-packlist "^1.1.6" + npmlog "^4.0.2" + rc "^1.1.7" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^4" + +node-sass-tilde-importer@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/node-sass-tilde-importer/-/node-sass-tilde-importer-1.0.2.tgz#1a15105c153f648323b4347693fdb0f331bad1ce" + dependencies: + find-parent-dir "^0.3.0" + +node-sass@4.7.2: + version "4.7.2" + resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.7.2.tgz#9366778ba1469eb01438a9e8592f4262bcb6794e" + dependencies: + async-foreach "^0.1.3" + chalk "^1.1.1" + cross-spawn "^3.0.0" + gaze "^1.0.0" + get-stdin "^4.0.1" + glob "^7.0.3" + in-publish "^2.0.0" + lodash.assign "^4.2.0" + lodash.clonedeep "^4.3.2" + lodash.mergewith "^4.6.0" + meow "^3.7.0" + mkdirp "^0.5.1" + nan "^2.3.2" + node-gyp "^3.3.1" + npmlog "^4.0.0" + request "~2.79.0" + sass-graph "^2.2.4" + stdout-stream "^1.4.0" + "true-case-path" "^1.0.2" + +node-sass@^4.5.3, node-sass@^4.8.3: + version "4.9.0" + resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.9.0.tgz#d1b8aa855d98ed684d6848db929a20771cc2ae52" + dependencies: + async-foreach "^0.1.3" + chalk "^1.1.1" + cross-spawn "^3.0.0" + gaze "^1.0.0" + get-stdin "^4.0.1" + glob "^7.0.3" + in-publish "^2.0.0" + lodash.assign "^4.2.0" + lodash.clonedeep "^4.3.2" + lodash.mergewith "^4.6.0" + meow "^3.7.0" + mkdirp "^0.5.1" + nan "^2.10.0" + node-gyp "^3.3.1" + npmlog "^4.0.0" + request "~2.79.0" + sass-graph "^2.2.4" + stdout-stream "^1.4.0" + "true-case-path" "^1.0.2" + +"nopt@2 || 3", nopt@3.x: + version "3.0.6" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" + dependencies: + abbrev "1" + +nopt@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" + dependencies: + abbrev "1" + osenv "^0.1.4" + +normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, "normalize-package-data@~1.0.1 || ^2.0.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" + dependencies: + hosted-git-info "^2.1.4" + is-builtin-module "^1.0.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.0.0, normalize-path@^2.0.1, normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + dependencies: + remove-trailing-separator "^1.0.1" + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + +npm-bundled@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.3.tgz#7e71703d973af3370a9591bafe3a63aca0be2308" + +"npm-package-arg@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-6.1.0.tgz#15ae1e2758a5027efb4c250554b85a737db7fcc1" + dependencies: + hosted-git-info "^2.6.0" + osenv "^0.1.5" + semver "^5.5.0" + validate-npm-package-name "^3.0.0" + +npm-packlist@^1.1.6: + version "1.1.10" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.10.tgz#1039db9e985727e464df066f4cf0ab6ef85c398a" + dependencies: + ignore-walk "^3.0.1" + npm-bundled "^1.0.1" + +npm-registry-client@^8.5.1: + version "8.5.1" + resolved "https://registry.yarnpkg.com/npm-registry-client/-/npm-registry-client-8.5.1.tgz#8115809c0a4b40938b8a109b8ea74d26c6f5d7f1" + dependencies: + concat-stream "^1.5.2" + graceful-fs "^4.1.6" + normalize-package-data "~1.0.1 || ^2.0.0" + npm-package-arg "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0" + once "^1.3.3" + request "^2.74.0" + retry "^0.10.0" + safe-buffer "^5.1.1" + semver "2 >=2.2.1 || 3.x || 4 || 5" + slide "^1.1.3" + ssri "^5.2.4" + optionalDependencies: + npmlog "2 || ^3.1.0 || ^4.0.0" + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + dependencies: + path-key "^2.0.0" + +"npmlog@0 || 1 || 2 || 3 || 4", "npmlog@2 || ^3.1.0 || ^4.0.0", npmlog@^4.0.0, npmlog@^4.0.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + +nth-check@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4" + dependencies: + boolbase "~1.0.0" + +null-check@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/null-check/-/null-check-1.0.0.tgz#977dffd7176012b9ec30d2a39db5cf72a0439edd" + +num2fraction@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + +oauth-sign@~0.8.1, oauth-sign@~0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" + +object-assign@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0" + +object-assign@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2" + +object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@latest: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + +object-component@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-keys@^1.0.11, object-keys@^1.0.8: + version "1.0.11" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + dependencies: + isobject "^3.0.0" + +object.assign@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + dependencies: + define-properties "^1.1.2" + function-bind "^1.1.1" + has-symbols "^1.0.0" + object-keys "^1.0.11" + +object.getownpropertydescriptors@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" + dependencies: + define-properties "^1.1.2" + es-abstract "^1.5.1" + +object.omit@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" + dependencies: + for-own "^0.1.4" + is-extendable "^0.1.1" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + dependencies: + isobject "^3.0.1" + +obuf@^1.0.0, obuf@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7" + +once@1.x, once@^1.3.0, once@^1.3.1, once@^1.3.3, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + dependencies: + wrappy "1" + +opn@^5.1.0, opn@latest: + version "5.3.0" + resolved "https://registry.yarnpkg.com/opn/-/opn-5.3.0.tgz#64871565c863875f052cfdf53d3e3cb5adb53b1c" + dependencies: + is-wsl "^1.1.0" + +opn@~5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/opn/-/opn-5.1.0.tgz#72ce2306a17dbea58ff1041853352b4a8fc77519" + dependencies: + is-wsl "^1.1.0" + +optimist@^0.6.1, optimist@~0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" + dependencies: + minimist "~0.0.1" + wordwrap "~0.0.2" + +optionator@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.4" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + wordwrap "~1.0.0" + +options@>=0.0.5: + version "0.0.6" + resolved "https://registry.yarnpkg.com/options/-/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f" + +original@>=0.0.5: + version "1.0.0" + resolved "https://registry.yarnpkg.com/original/-/original-1.0.0.tgz#9147f93fa1696d04be61e01bd50baeaca656bd3b" + dependencies: + url-parse "1.0.x" + +os-browserify@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + +os-homedir@^1.0.0, os-homedir@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + +os-locale@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + dependencies: + lcid "^1.0.0" + +os-locale@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" + dependencies: + execa "^0.7.0" + lcid "^1.0.0" + mem "^1.1.0" + +os-name@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/os-name/-/os-name-2.0.1.tgz#b9a386361c17ae3a21736ef0599405c9a8c5dc5e" + dependencies: + macos-release "^1.0.0" + win-release "^1.0.0" + +os-tmpdir@^1.0.0, os-tmpdir@~1.0.1, os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + +osenv@0, osenv@^0.1.4, osenv@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + +p-limit@^1.0.0, p-limit@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.2.0.tgz#0e92b6bedcb59f022c13d0f1949dc82d15909f1c" + dependencies: + p-try "^1.0.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + dependencies: + p-limit "^1.1.0" + +p-map@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + +package-json@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" + dependencies: + got "^6.7.1" + registry-auth-token "^3.0.1" + registry-url "^3.0.3" + semver "^5.1.0" + +pako@~1.0.2, pako@~1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz#0101211baa70c4bca4a0f63f2206e97b7dfaf258" + +parallel-transform@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06" + dependencies: + cyclist "~0.2.2" + inherits "^2.0.3" + readable-stream "^2.1.5" + +param-case@2.1.x: + version "2.1.1" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" + dependencies: + no-case "^2.2.0" + +parse-asn1@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.1.tgz#f6bf293818332bd0dab54efb16087724745e6ca8" + dependencies: + asn1.js "^4.0.0" + browserify-aes "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + +parse-glob@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" + dependencies: + glob-base "^0.3.0" + is-dotfile "^1.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.0" + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + dependencies: + error-ex "^1.2.0" + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parse5@^3.0.1: + version "3.0.3" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-3.0.3.tgz#042f792ffdd36851551cf4e9e066b3874ab45b5c" + dependencies: + "@types/node" "*" + +parse5@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" + +parsejson@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/parsejson/-/parsejson-0.0.3.tgz#ab7e3759f209ece99437973f7d0f1f64ae0e64ab" + dependencies: + better-assert "~1.0.0" + +parseqs@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" + dependencies: + better-assert "~1.0.0" + +parseuri@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a" + dependencies: + better-assert "~1.0.0" + +parseurl@~1.3.1, parseurl@~1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + +path-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + dependencies: + pinkie-promise "^2.0.0" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + +path-is-inside@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + +path-key@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + +path-parse@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + dependencies: + pify "^3.0.0" + +pause-stream@0.0.11: + version "0.0.11" + resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" + dependencies: + through "~2.3" + +pbkdf2@^3.0.3: + version "3.0.16" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.16.tgz#7404208ec6b01b62d85bf83853a8064f8d9c2a5c" + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +performance-now@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + +pify@^2.0.0, pify@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + +pkg-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + dependencies: + find-up "^2.1.0" + +portfinder@^1.0.13, portfinder@^1.0.9: + version "1.0.13" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.13.tgz#bb32ecd87c27104ae6ee44b5a3ccbf0ebb1aede9" + dependencies: + async "^1.5.2" + debug "^2.2.0" + mkdirp "0.5.x" + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + +postcss-clean@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/postcss-clean/-/postcss-clean-1.1.0.tgz#c2d61d5d8caf19a585adba16897726c2674c4207" + dependencies: + clean-css "^4.x" + postcss "^6.x" + +postcss-import@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-11.1.0.tgz#55c9362c9192994ec68865d224419df1db2981f0" + dependencies: + postcss "^6.0.1" + postcss-value-parser "^3.2.3" + read-cache "^1.0.0" + resolve "^1.1.7" + +postcss-load-config@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-1.2.0.tgz#539e9afc9ddc8620121ebf9d8c3673e0ce50d28a" + dependencies: + cosmiconfig "^2.1.0" + object-assign "^4.1.0" + postcss-load-options "^1.2.0" + postcss-load-plugins "^2.3.0" + +postcss-load-options@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/postcss-load-options/-/postcss-load-options-1.2.0.tgz#b098b1559ddac2df04bc0bb375f99a5cfe2b6d8c" + dependencies: + cosmiconfig "^2.1.0" + object-assign "^4.1.0" + +postcss-load-plugins@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz#745768116599aca2f009fad426b00175049d8d92" + dependencies: + cosmiconfig "^2.1.1" + object-assign "^4.1.0" + +postcss-loader@^2.1.4: + version "2.1.5" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-2.1.5.tgz#3c6336ee641c8f95138172533ae461a83595e788" + dependencies: + loader-utils "^1.1.0" + postcss "^6.0.0" + postcss-load-config "^1.2.0" + schema-utils "^0.4.0" + +postcss-url@^7.3.0, postcss-url@^7.3.1: + version "7.3.2" + resolved "https://registry.yarnpkg.com/postcss-url/-/postcss-url-7.3.2.tgz#5fea273807fb84b38c461c3c9a9e8abd235f7120" + dependencies: + mime "^1.4.1" + minimatch "^3.0.4" + mkdirp "^0.5.0" + postcss "^6.0.1" + xxhashjs "^0.2.1" + +postcss-value-parser@^3.2.3: + version "3.3.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15" + +postcss@^6.0.0, postcss@^6.0.1, postcss@^6.0.19, postcss@^6.0.2, postcss@^6.0.22, postcss@^6.x: + version "6.0.22" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.22.tgz#e23b78314905c3b90cbd61702121e7a78848f2a3" + dependencies: + chalk "^2.4.1" + source-map "^0.6.1" + supports-color "^5.4.0" + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + +prepend-http@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + +preserve@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" + +pretty-error@^2.0.2: + version "2.1.1" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3" + dependencies: + renderkid "^2.0.1" + utila "~0.4" + +process-nextick-args@~1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" + +process-nextick-args@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + +promise@^7.1.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + dependencies: + asap "~2.0.3" + +protractor@~5.3.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/protractor/-/protractor-5.3.1.tgz#b8b8ac4ad2278bb7a461b99a34d79532095f14b8" + dependencies: + "@types/node" "^6.0.46" + "@types/q" "^0.0.32" + "@types/selenium-webdriver" "~2.53.39" + blocking-proxy "^1.0.0" + chalk "^1.1.3" + glob "^7.0.3" + jasmine "2.8.0" + jasminewd2 "^2.1.0" + optimist "~0.6.0" + q "1.4.1" + saucelabs "~1.3.0" + selenium-webdriver "3.6.0" + source-map-support "~0.4.0" + webdriver-js-extender "^1.0.0" + webdriver-manager "^12.0.6" + +proxy-addr@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.3.tgz#355f262505a621646b3130a728eb647e22055341" + dependencies: + forwarded "~0.1.2" + ipaddr.js "1.6.0" + +proxy-middleware@latest: + version "0.15.0" + resolved "https://registry.yarnpkg.com/proxy-middleware/-/proxy-middleware-0.15.0.tgz#a3fdf1befb730f951965872ac2f6074c61477a56" + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + +public-encrypt@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.2.tgz#46eb9107206bf73489f8b85b69d91334c6610994" + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + +pump@^2.0.0, pump@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pumpify@^1.3.3: + version "1.5.0" + resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.0.tgz#30c905a26c88fa0074927af07256672b474b1c15" + dependencies: + duplexify "^3.6.0" + inherits "^2.0.3" + pump "^2.0.0" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + +punycode@^1.2.4, punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + +punycode@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d" + +q@1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e" + +q@^1.4.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + +qjobs@^1.1.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.2.0.tgz#c45e9c61800bd087ef88d7e256423bdd49e5d071" + +qs@6.5.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" + +qs@~6.3.0: + version "6.3.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.2.tgz#e75bd5f6e268122a2a0e0bda630b2550c166502c" + +qs@~6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" + +qs@~6.5.1: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + +querystring-es3@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + +querystringify@0.0.x: + version "0.0.4" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-0.0.4.tgz#0cf7f84f9463ff0ae51c4c4b142d95be37724d9c" + +querystringify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.0.0.tgz#fa3ed6e68eb15159457c89b37bc6472833195755" + +randomatic@^1.1.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c" + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.6.tgz#d302c522948588848a8d300c932b44c24231da80" + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +range-parser@^1.0.3, range-parser@^1.2.0, range-parser@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" + +raw-body@2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.2.tgz#bcd60c77d3eb93cde0050295c3f379389bc88f89" + dependencies: + bytes "3.0.0" + http-errors "1.6.2" + iconv-lite "0.4.19" + unpipe "1.0.0" + +raw-loader@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-0.5.1.tgz#0c3d0beaed8a01c966d9787bf778281252a979aa" + +rc@^1.0.1, rc@^1.1.6, rc@^1.1.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.7.tgz#8a10ca30d588d00464360372b890d06dacd02297" + dependencies: + deep-extend "^0.5.1" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +read-cache@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" + dependencies: + pify "^2.3.0" + +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" + dependencies: + find-up "^2.0.0" + read-pkg "^3.0.0" + +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + +read-pkg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" + dependencies: + load-json-file "^4.0.0" + normalize-package-data "^2.3.2" + path-type "^3.0.0" + +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.3: + version "2.3.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@1.0, readable-stream@~1.0.2: + version "1.0.34" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@~1.1.9: + version "1.1.14" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + string_decoder "~0.10.x" + util-deprecate "~1.0.1" + +readdirp@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" + dependencies: + graceful-fs "^4.1.2" + minimatch "^3.0.2" + readable-stream "^2.0.2" + set-immediate-shim "^1.0.1" + +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + dependencies: + resolve "^1.1.6" + +redent@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" + dependencies: + indent-string "^2.1.0" + strip-indent "^1.0.1" + +reflect-metadata@^0.1.2: + version "0.1.12" + resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.12.tgz#311bf0c6b63cd782f228a81abe146a2bfa9c56f2" + +regenerate@^1.2.1: + version "1.3.3" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.3.tgz#0c336d3980553d755c39b586ae3b20aa49c82b7f" + +regenerator-runtime@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + +regex-cache@^0.4.2: + version "0.4.4" + resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" + dependencies: + is-equal-shallow "^0.1.3" + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +regexpu-core@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b" + dependencies: + regenerate "^1.2.1" + regjsgen "^0.2.0" + regjsparser "^0.1.4" + +registry-auth-token@^3.0.1: + version "3.3.2" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.3.2.tgz#851fd49038eecb586911115af845260eec983f20" + dependencies: + rc "^1.1.6" + safe-buffer "^5.0.1" + +registry-url@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" + dependencies: + rc "^1.0.1" + +regjsgen@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" + +regjsparser@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" + dependencies: + jsesc "~0.5.0" + +relateurl@0.2.x: + version "0.2.7" + resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + +renderkid@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.1.tgz#898cabfc8bede4b7b91135a3ffd323e58c0db319" + dependencies: + css-select "^1.1.0" + dom-converter "~0.1" + htmlparser2 "~3.3.0" + strip-ansi "^3.0.0" + utila "~0.3" + +repeat-element@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" + +repeat-string@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-0.2.2.tgz#c7a8d3236068362059a7e4651fc6884e8b1fb4ae" + +repeat-string@^1.5.2, repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + dependencies: + is-finite "^1.0.0" + +replace-ext@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924" + +request@2, request@^2.74.0, request@^2.78.0, request@^2.83.0: + version "2.85.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.85.0.tgz#5a03615a47c61420b3eb99b7dba204f83603e1fa" + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.6.0" + caseless "~0.12.0" + combined-stream "~1.0.5" + extend "~3.0.1" + forever-agent "~0.6.1" + form-data "~2.3.1" + har-validator "~5.0.3" + hawk "~6.0.2" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.17" + oauth-sign "~0.8.2" + performance-now "^2.1.0" + qs "~6.5.1" + safe-buffer "^5.1.1" + stringstream "~0.0.5" + tough-cookie "~2.3.3" + tunnel-agent "^0.6.0" + uuid "^3.1.0" + +request@2.81.0: + version "2.81.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" + dependencies: + aws-sign2 "~0.6.0" + aws4 "^1.2.1" + caseless "~0.12.0" + combined-stream "~1.0.5" + extend "~3.0.0" + forever-agent "~0.6.1" + form-data "~2.1.1" + har-validator "~4.2.1" + hawk "~3.1.3" + http-signature "~1.1.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.7" + oauth-sign "~0.8.1" + performance-now "^0.2.0" + qs "~6.4.0" + safe-buffer "^5.0.1" + stringstream "~0.0.4" + tough-cookie "~2.3.0" + tunnel-agent "^0.6.0" + uuid "^3.0.0" + +request@~2.79.0: + version "2.79.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de" + dependencies: + aws-sign2 "~0.6.0" + aws4 "^1.2.1" + caseless "~0.11.0" + combined-stream "~1.0.5" + extend "~3.0.0" + forever-agent "~0.6.1" + form-data "~2.1.1" + har-validator "~2.0.6" + hawk "~3.1.3" + http-signature "~1.1.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.7" + oauth-sign "~0.8.1" + qs "~6.3.0" + stringstream "~0.0.4" + tough-cookie "~2.3.0" + tunnel-agent "~0.4.1" + uuid "^3.0.0" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + +require-from-string@^1.1.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-1.2.1.tgz#529c9ccef27380adfec9a2f965b649bbee636418" + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + +requires-port@1.0.x, requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + +resolve-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" + dependencies: + resolve-from "^3.0.0" + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + +resolve@1.1.x: + version "1.1.7" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" + +resolve@^1.1.6, resolve@^1.1.7, resolve@^1.3.2, resolve@^1.5.0: + version "1.7.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.7.1.tgz#aadd656374fd298aee895bc026b8297418677fd3" + dependencies: + path-parse "^1.0.5" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + +retry@^0.10.0: + version "0.10.1" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4" + +right-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" + dependencies: + align-text "^0.1.1" + +rimraf@2, rimraf@^2.2.8, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.0, rimraf@^2.6.1, rimraf@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" + dependencies: + glob "^7.0.5" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +rollup-plugin-commonjs@^9.1.3: + version "9.1.3" + resolved "https://registry.yarnpkg.com/rollup-plugin-commonjs/-/rollup-plugin-commonjs-9.1.3.tgz#37bfbf341292ea14f512438a56df8f9ca3ba4d67" + dependencies: + estree-walker "^0.5.1" + magic-string "^0.22.4" + resolve "^1.5.0" + rollup-pluginutils "^2.0.1" + +rollup-plugin-node-resolve@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-3.3.0.tgz#c26d110a36812cbefa7ce117cadcd3439aa1c713" + dependencies: + builtin-modules "^2.0.0" + is-module "^1.0.0" + resolve "^1.1.6" + +rollup-pluginutils@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.0.1.tgz#7ec95b3573f6543a46a6461bd9a7c544525d0fc0" + dependencies: + estree-walker "^0.3.0" + micromatch "^2.3.11" + +rollup@^0.58.0: + version "0.58.2" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-0.58.2.tgz#2feddea8c0c022f3e74b35c48e3c21b3433803ce" + dependencies: + "@types/estree" "0.0.38" + "@types/node" "*" + +run-queue@^1.0.0, run-queue@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" + dependencies: + aproba "^1.1.1" + +"rxjs@>=6.0.0 || <7.0.0", rxjs@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.1.0.tgz#833447de4e4f6427b9cec3e5eb9f56415cd28315" + dependencies: + tslib "^1.9.0" + +safe-buffer@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" + +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + +sander@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/sander/-/sander-0.5.1.tgz#741e245e231f07cafb6fdf0f133adfa216a502ad" + dependencies: + es6-promise "^3.1.2" + graceful-fs "^4.1.3" + mkdirp "^0.5.1" + rimraf "^2.5.2" + +sass-graph@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.4.tgz#13fbd63cd1caf0908b9fd93476ad43a51d1e0b49" + dependencies: + glob "^7.0.0" + lodash "^4.0.0" + scss-tokenizer "^0.2.3" + yargs "^7.0.0" + +sass-loader@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-7.0.1.tgz#fd937259ccba3a9cfe0d5f8a98746d48adfcc261" + dependencies: + clone-deep "^2.0.1" + loader-utils "^1.0.1" + lodash.tail "^4.1.1" + neo-async "^2.5.0" + pify "^3.0.0" + +saucelabs@~1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/saucelabs/-/saucelabs-1.3.0.tgz#d240e8009df7fa87306ec4578a69ba3b5c424fee" + dependencies: + https-proxy-agent "^1.0.0" + +sax@0.5.x: + version "0.5.8" + resolved "https://registry.yarnpkg.com/sax/-/sax-0.5.8.tgz#d472db228eb331c2506b0e8c15524adb939d12c1" + +sax@0.6.x: + version "0.6.1" + resolved "https://registry.yarnpkg.com/sax/-/sax-0.6.1.tgz#563b19c7c1de892e09bfc4f2fc30e3c27f0952b9" + +sax@>=0.6.0, sax@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + +schema-utils@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.3.0.tgz#f5877222ce3e931edae039f17eb3716e7137f8cf" + dependencies: + ajv "^5.0.0" + +schema-utils@^0.4.0, schema-utils@^0.4.2, schema-utils@^0.4.3, schema-utils@^0.4.4, schema-utils@^0.4.5: + version "0.4.5" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.5.tgz#21836f0608aac17b78f9e3e24daff14a5ca13a3e" + dependencies: + ajv "^6.1.0" + ajv-keywords "^3.1.0" + +scss-tokenizer@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz#8eb06db9a9723333824d3f5530641149847ce5d1" + dependencies: + js-base64 "^2.1.8" + source-map "^0.4.2" + +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + +selenium-webdriver@3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/selenium-webdriver/-/selenium-webdriver-3.6.0.tgz#2ba87a1662c020b8988c981ae62cb2a01298eafc" + dependencies: + jszip "^3.1.3" + rimraf "^2.5.4" + tmp "0.0.30" + xml2js "^0.4.17" + +selenium-webdriver@^2.53.2: + version "2.53.3" + resolved "https://registry.yarnpkg.com/selenium-webdriver/-/selenium-webdriver-2.53.3.tgz#d29ff5a957dff1a1b49dc457756e4e4bfbdce085" + dependencies: + adm-zip "0.4.4" + rimraf "^2.2.8" + tmp "0.0.24" + ws "^1.0.1" + xml2js "0.4.4" + +selfsigned@^1.9.1: + version "1.10.3" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.3.tgz#d628ecf9e3735f84e8bafba936b3cf85bea43823" + dependencies: + node-forge "0.7.5" + +semver-diff@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" + dependencies: + semver "^5.0.3" + +semver-dsl@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/semver-dsl/-/semver-dsl-1.0.1.tgz#d3678de5555e8a61f629eed025366ae5f27340a0" + dependencies: + semver "^5.3.0" + +semver-intersect@^1.1.2: + version "1.3.1" + resolved "https://registry.yarnpkg.com/semver-intersect/-/semver-intersect-1.3.1.tgz#8fa84a9e1028bd239e4530d1a3e181e698d884ba" + dependencies: + semver "^5.0.0" + +"semver@2 >=2.2.1 || 3.x || 4 || 5", "semver@2 || 3 || 4 || 5", semver@^5.0.0, semver@^5.0.1, semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" + +semver@~4.3.3: + version "4.3.6" + resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" + +semver@~5.0.1: + version "5.0.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.0.3.tgz#77466de589cd5d3c95f138aa78bc569a3cb5d27a" + +semver@~5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" + +send@0.16.2, send@latest: + version "0.16.2" + resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1" + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.6.2" + mime "1.4.1" + ms "2.0.0" + on-finished "~2.3.0" + range-parser "~1.2.0" + statuses "~1.4.0" + +serialize-javascript@^1.4.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.5.0.tgz#1aa336162c88a890ddad5384baebc93a655161fe" + +serve-index@^1.7.2: + version "1.9.1" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + dependencies: + accepts "~1.3.4" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" + +serve-static@1.13.2: + version "1.13.2" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1" + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.2" + send "0.16.2" + +set-blocking@^2.0.0, set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + +set-immediate-shim@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" + +set-value@^0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.1" + to-object-path "^0.3.0" + +set-value@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setimmediate@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + +setprototypeof@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04" + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shallow-clone@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-1.0.0.tgz#4480cd06e882ef68b2ad88a3ea54832e2c48b571" + dependencies: + is-extendable "^0.1.1" + kind-of "^5.0.0" + mixin-object "^2.0.1" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + +shell-quote@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" + dependencies: + array-filter "~0.0.0" + array-map "~0.0.0" + array-reduce "~0.0.0" + jsonify "~0.0.0" + +shelljs@^0.7.8: + version "0.7.8" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.8.tgz#decbcf874b0d1e5fb72e14b164a9683048e9acb3" + dependencies: + glob "^7.0.0" + interpret "^1.0.0" + rechoir "^0.6.2" + +signal-exit@^3.0.0, signal-exit@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + +silent-error@^1.0.0, silent-error@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/silent-error/-/silent-error-1.1.0.tgz#2209706f1c850a9f1d10d0d840918b46f26e1bc9" + dependencies: + debug "^2.2.0" + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + +slide@^1.1.3: + version "1.1.6" + resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +sntp@1.x.x: + version "1.0.9" + resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" + dependencies: + hoek "2.x.x" + +sntp@2.x.x: + version "2.1.0" + resolved "https://registry.yarnpkg.com/sntp/-/sntp-2.1.0.tgz#2c6cec14fedc2222739caf9b5c3d85d1cc5a2cc8" + dependencies: + hoek "4.x.x" + +socket.io-adapter@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz#cb6d4bb8bec81e1078b99677f9ced0046066bb8b" + dependencies: + debug "2.3.3" + socket.io-parser "2.3.1" + +socket.io-client@1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-1.7.3.tgz#b30e86aa10d5ef3546601c09cde4765e381da377" + dependencies: + backo2 "1.0.2" + component-bind "1.0.0" + component-emitter "1.2.1" + debug "2.3.3" + engine.io-client "1.8.3" + has-binary "0.1.7" + indexof "0.0.1" + object-component "0.0.3" + parseuri "0.0.5" + socket.io-parser "2.3.1" + to-array "0.1.4" + +socket.io-parser@2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-2.3.1.tgz#dd532025103ce429697326befd64005fcfe5b4a0" + dependencies: + component-emitter "1.1.2" + debug "2.2.0" + isarray "0.0.1" + json3 "3.3.2" + +socket.io@1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-1.7.3.tgz#b8af9caba00949e568e369f1327ea9be9ea2461b" + dependencies: + debug "2.3.3" + engine.io "1.8.3" + has-binary "0.1.7" + object-assign "4.1.0" + socket.io-adapter "0.5.0" + socket.io-client "1.7.3" + socket.io-parser "2.3.1" + +sockjs-client@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.4.tgz#5babe386b775e4cf14e7520911452654016c8b12" + dependencies: + debug "^2.6.6" + eventsource "0.1.6" + faye-websocket "~0.11.0" + inherits "^2.0.1" + json3 "^3.3.2" + url-parse "^1.1.8" + +sockjs@0.3.19: + version "0.3.19" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.19.tgz#d976bbe800af7bd20ae08598d582393508993c0d" + dependencies: + faye-websocket "^0.10.0" + uuid "^3.0.1" + +sorcery@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/sorcery/-/sorcery-0.10.0.tgz#8ae90ad7d7cb05fc59f1ab0c637845d5c15a52b7" + dependencies: + buffer-crc32 "^0.2.5" + minimist "^1.2.0" + sander "^0.5.0" + sourcemap-codec "^1.3.0" + +source-list-map@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz#aaa47403f7b245a92fbc97ea08f250d6087ed085" + +source-list-map@~0.1.7: + version "0.1.8" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106" + +source-map-resolve@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.1.tgz#7ad0f593f2281598e854df80f19aae4b92d7a11a" + dependencies: + atob "^2.0.0" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-support@^0.4.1, source-map-support@~0.4.0: + version "0.4.18" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" + dependencies: + source-map "^0.5.6" + +source-map-support@^0.5.0, source-map-support@^0.5.3: + version "0.5.5" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.5.tgz#0d4af9e00493e855402e8ec36ebed2d266fceb90" + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-url@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + +source-map@0.1.x: + version "0.1.43" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346" + dependencies: + amdefine ">=0.0.4" + +source-map@0.5.x, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.1: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + +source-map@^0.4.2, source-map@^0.4.4, source-map@~0.4.1: + version "0.4.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" + dependencies: + amdefine ">=0.0.4" + +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + +source-map@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d" + dependencies: + amdefine ">=0.0.4" + +sourcemap-codec@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.1.tgz#c8fd92d91889e902a07aee392bdd2c5863958ba2" + +sparkles@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.0.tgz#1acbbfb592436d10bbe8f785b7cc6f82815012c3" + +spdx-correct@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.0.tgz#05a5b4d7153a195bc92c3c425b69f3b2a9524c82" + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz#2c7ae61056c714a5b9b9b2b2af7d311ef5c78fe9" + +spdx-expression-parse@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz#7a7cd28470cc6d3a1cfe6d66886f6bc430d3ac87" + +spdy-transport@^2.0.18: + version "2.1.0" + resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-2.1.0.tgz#4bbb15aaffed0beefdd56ad61dbdc8ba3e2cb7a1" + dependencies: + debug "^2.6.8" + detect-node "^2.0.3" + hpack.js "^2.1.6" + obuf "^1.1.1" + readable-stream "^2.2.9" + safe-buffer "^5.0.1" + wbuf "^1.7.2" + +spdy@^3.4.1: + version "3.4.7" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-3.4.7.tgz#42ff41ece5cc0f99a3a6c28aabb73f5c3b03acbc" + dependencies: + debug "^2.6.8" + handle-thing "^1.2.5" + http-deceiver "^1.2.7" + safe-buffer "^5.0.1" + select-hose "^2.0.0" + spdy-transport "^2.0.18" + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + dependencies: + extend-shallow "^3.0.0" + +split@0.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f" + dependencies: + through "2" + +sprintf-js@^1.0.3: + version "1.1.1" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.1.tgz#36be78320afe5801f6cea3ee78b6e5aab940ea0c" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + +sshpk@^1.7.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.14.1.tgz#130f5975eddad963f1d56f92b9ac6c51fa9f83eb" + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + dashdash "^1.12.0" + getpass "^0.1.1" + optionalDependencies: + bcrypt-pbkdf "^1.0.0" + ecc-jsbn "~0.1.1" + jsbn "~0.1.0" + tweetnacl "~0.14.0" + +ssri@^5.2.4: + version "5.3.0" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-5.3.0.tgz#ba3872c9c6d33a0704a7d71ff045e5ec48999d06" + dependencies: + safe-buffer "^5.1.1" + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +stats-webpack-plugin@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/stats-webpack-plugin/-/stats-webpack-plugin-0.6.2.tgz#2c5949b531e07f87a88e6ea4dcfac53aa8c75a2b" + dependencies: + lodash "^4.17.4" + +"statuses@>= 1.3.1 < 2", "statuses@>= 1.4.0 < 2": + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + +statuses@~1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" + +statuses@~1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" + +stdout-stream@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.0.tgz#a2c7c8587e54d9427ea9edb3ac3f2cd522df378b" + dependencies: + readable-stream "^2.0.1" + +stream-browserify@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + +stream-combiner@~0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz#4d5e433c185261dde623ca3f44c586bcf5c4ad14" + dependencies: + duplexer "~0.1.1" + +stream-each@^1.1.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.2.tgz#8e8c463f91da8991778765873fe4d960d8f616bd" + dependencies: + end-of-stream "^1.1.0" + stream-shift "^1.0.0" + +stream-http@^2.7.2: + version "2.8.1" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.1.tgz#d0441be1a457a73a733a8a7b53570bebd9ef66a4" + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.3.3" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + +stream-shift@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" + +string-width@^1.0.1, string-width@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +string-width@^2.0.0, string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string_decoder@^1.0.0, string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + dependencies: + safe-buffer "~5.1.0" + +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + +stringstream@~0.0.4, stringstream@~0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + dependencies: + ansi-regex "^3.0.0" + +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + dependencies: + is-utf8 "^0.2.0" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + +strip-indent@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" + dependencies: + get-stdin "^4.0.1" + +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + +style-loader@^0.21.0: + version "0.21.0" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.21.0.tgz#68c52e5eb2afc9ca92b6274be277ee59aea3a852" + dependencies: + loader-utils "^1.1.0" + schema-utils "^0.4.5" + +stylus-loader@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/stylus-loader/-/stylus-loader-3.0.2.tgz#27a706420b05a38e038e7cacb153578d450513c6" + dependencies: + loader-utils "^1.0.2" + lodash.clonedeep "^4.5.0" + when "~3.6.x" + +stylus@^0.54.5: + version "0.54.5" + resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.54.5.tgz#42b9560931ca7090ce8515a798ba9e6aa3d6dc79" + dependencies: + css-parse "1.7.x" + debug "*" + glob "7.0.x" + mkdirp "0.5.x" + sax "0.5.x" + source-map "0.1.x" + +subarg@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2" + dependencies: + minimist "^1.1.0" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + +supports-color@^3.1.0, supports-color@^3.1.2: + version "3.2.3" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" + dependencies: + has-flag "^1.0.0" + +supports-color@^4.0.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b" + dependencies: + has-flag "^2.0.0" + +supports-color@^5.1.0, supports-color@^5.3.0, supports-color@^5.4.0: + version "5.4.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" + dependencies: + has-flag "^3.0.0" + +symbol-observable@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" + +tapable@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.0.0.tgz#cbb639d9002eed9c6b5975eb20598d7936f1f9f2" + +tar@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" + dependencies: + block-stream "*" + fstream "^1.0.2" + inherits "2" + +tar@^4: + version "4.4.2" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.2.tgz#60685211ba46b38847b1ae7ee1a24d744a2cd462" + dependencies: + chownr "^1.0.1" + fs-minipass "^1.2.5" + minipass "^2.2.4" + minizlib "^1.1.0" + mkdirp "^0.5.0" + safe-buffer "^5.1.2" + yallist "^3.0.2" + +term-size@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" + dependencies: + execa "^0.7.0" + +through2@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" + dependencies: + readable-stream "^2.1.5" + xtend "~4.0.1" + +through@2, through@X.X.X, through@~2.3, through@~2.3.1: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + +thunky@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.0.2.tgz#a862e018e3fb1ea2ec3fce5d55605cf57f247371" + +time-stamp@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" + +timed-out@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" + +timers-browserify@^2.0.4: + version "2.0.10" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.10.tgz#1d28e3d2aadf1d5a5996c4e9f95601cd053480ae" + dependencies: + setimmediate "^1.0.4" + +tmp@0.0.24: + version "0.0.24" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.24.tgz#d6a5e198d14a9835cc6f2d7c3d9e302428c8cf12" + +tmp@0.0.30: + version "0.0.30" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.30.tgz#72419d4a8be7d6ce75148fd8b324e593a711c2ed" + dependencies: + os-tmpdir "~1.0.1" + +tmp@0.0.31: + version "0.0.31" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7" + dependencies: + os-tmpdir "~1.0.1" + +tmp@0.0.x: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + dependencies: + os-tmpdir "~1.0.2" + +to-array@0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" + +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + +to-fast-properties@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +toposort@^1.0.0: + version "1.0.7" + resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029" + +tough-cookie@~2.3.0, tough-cookie@~2.3.3: + version "2.3.4" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" + dependencies: + punycode "^1.4.1" + +tree-kill@^1.0.0, tree-kill@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.0.tgz#5846786237b4239014f05db156b643212d4c6f36" + +trim-newlines@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" + +trim-right@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" + +"true-case-path@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-1.0.2.tgz#7ec91130924766c7f573be3020c34f8fdfd00d62" + dependencies: + glob "^6.0.4" + +ts-node@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-5.0.1.tgz#78e5d1cb3f704de1b641e43b76be2d4094f06f81" + dependencies: + arrify "^1.0.0" + chalk "^2.3.0" + diff "^3.1.0" + make-error "^1.1.1" + minimist "^1.2.0" + mkdirp "^0.5.1" + source-map-support "^0.5.3" + yn "^2.0.0" + +tsickle@>=0.25.5, tsickle@^0.27.2: + version "0.27.5" + resolved "https://registry.yarnpkg.com/tsickle/-/tsickle-0.27.5.tgz#41e1a41a5acf971cbb2b0558a9590779234d591f" + dependencies: + minimist "^1.2.0" + mkdirp "^0.5.1" + source-map "^0.6.0" + source-map-support "^0.5.0" + +tslib@^1.7.1, tslib@^1.8.0, tslib@^1.8.1, tslib@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.0.tgz#e37a86fda8cbbaf23a057f473c9f4dc64e5fc2e8" + +tslint@~5.9.1: + version "5.9.1" + resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.9.1.tgz#1255f87a3ff57eb0b0e1f0e610a8b4748046c9ae" + dependencies: + babel-code-frame "^6.22.0" + builtin-modules "^1.1.1" + chalk "^2.3.0" + commander "^2.12.1" + diff "^3.2.0" + glob "^7.1.1" + js-yaml "^3.7.0" + minimatch "^3.0.4" + resolve "^1.3.2" + semver "^5.3.0" + tslib "^1.8.0" + tsutils "^2.12.1" + +tsutils@^2.12.1: + version "2.26.2" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.26.2.tgz#a9f9f63434a456a5e0c95a45d9a59181cb32d3bf" + dependencies: + tslib "^1.8.1" + +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + dependencies: + safe-buffer "^5.0.1" + +tunnel-agent@~0.4.1: + version "0.4.3" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + dependencies: + prelude-ls "~1.1.2" + +type-is@~1.6.15, type-is@~1.6.16: + version "1.6.16" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194" + dependencies: + media-typer "0.3.0" + mime-types "~2.1.18" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + +typescript@2.3.4: + version "2.3.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.3.4.tgz#3d38321828231e434f287514959c37a82b629f42" + +"typescript@>=2.6.2 <2.8", typescript@~2.7.2: + version "2.7.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.7.2.tgz#2d615a1ef4aee4f574425cdff7026edf81919836" + +typescript@^2.4.2: + version "2.8.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.8.3.tgz#5d817f9b6f31bb871835f4edf0089f21abe6c170" + +uglify-es@^3.3.4: + version "3.3.9" + resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677" + dependencies: + commander "~2.13.0" + source-map "~0.6.1" + +uglify-js@3.3.x, uglify-js@^3.0.7: + version "3.3.23" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.3.23.tgz#48ea43e638364d18be292a6fdc2b5b7c35f239ab" + dependencies: + commander "~2.15.0" + source-map "~0.6.1" + +uglify-js@^2.6: + version "2.8.29" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" + dependencies: + source-map "~0.5.1" + yargs "~3.10.0" + optionalDependencies: + uglify-to-browserify "~1.0.0" + +uglify-to-browserify@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" + +uglifyjs-webpack-plugin@^1.2.4, uglifyjs-webpack-plugin@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.5.tgz#2ef8387c8f1a903ec5e44fa36f9f3cbdcea67641" + dependencies: + cacache "^10.0.4" + find-cache-dir "^1.0.0" + schema-utils "^0.4.5" + serialize-javascript "^1.4.0" + source-map "^0.6.1" + uglify-es "^3.3.4" + webpack-sources "^1.1.0" + worker-farm "^1.5.2" + +ultron@1.0.x: + version "1.0.2" + resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa" + +union-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^0.4.3" + +unique-filename@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.0.tgz#d05f2fe4032560871f30e93cbe735eea201514f3" + dependencies: + unique-slug "^2.0.0" + +unique-slug@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.0.tgz#db6676e7c7cc0629878ff196097c78855ae9f4ab" + dependencies: + imurmurhash "^0.1.4" + +unique-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" + dependencies: + crypto-random-string "^1.0.0" + +universalify@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.1.tgz#fa71badd4437af4c148841e3b3b165f9e9e590b7" + +unix-crypt-td-js@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unix-crypt-td-js/-/unix-crypt-td-js-1.0.0.tgz#1c0824150481bc7a01d49e98f1ec668d82412f3b" + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +unzip-response@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" + +upath@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.0.5.tgz#02cab9ecebe95bbec6d5fc2566325725ab6d1a73" + +update-notifier@^2.3.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.5.0.tgz#d0744593e13f161e406acb1d9408b72cad08aff6" + dependencies: + boxen "^1.2.1" + chalk "^2.0.1" + configstore "^3.0.0" + import-lazy "^2.1.0" + is-ci "^1.0.10" + is-installed-globally "^0.1.0" + is-npm "^1.0.0" + latest-version "^3.0.0" + semver-diff "^2.0.0" + xdg-basedir "^3.0.0" + +upper-case@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" + +uri-js@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-3.0.2.tgz#f90b858507f81dea4dcfbb3c4c3dbfa2b557faaa" + dependencies: + punycode "^2.1.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + +url-join@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.0.tgz#4d3340e807d3773bda9991f8305acdcc2a665d2a" + +url-loader@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-1.0.1.tgz#61bc53f1f184d7343da2728a1289ef8722ea45ee" + dependencies: + loader-utils "^1.1.0" + mime "^2.0.3" + schema-utils "^0.4.3" + +url-parse-lax@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" + dependencies: + prepend-http "^1.0.1" + +url-parse@1.0.x: + version "1.0.5" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.0.5.tgz#0854860422afdcfefeb6c965c662d4800169927b" + dependencies: + querystringify "0.0.x" + requires-port "1.0.x" + +url-parse@^1.1.8: + version "1.4.0" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.0.tgz#6bfdaad60098c7fe06f623e42b22de62de0d3d75" + dependencies: + querystringify "^2.0.0" + requires-port "^1.0.0" + +url@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +urlgrey@0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/urlgrey/-/urlgrey-0.4.4.tgz#892fe95960805e85519f1cd4389f2cb4cbb7652f" + +use@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.0.tgz#14716bf03fdfefd03040aef58d8b4b85f3a7c544" + dependencies: + kind-of "^6.0.2" + +useragent@^2.1.12: + version "2.3.0" + resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.3.0.tgz#217f943ad540cb2128658ab23fc960f6a88c9972" + dependencies: + lru-cache "4.1.x" + tmp "0.0.x" + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + +util.promisify@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" + dependencies: + define-properties "^1.1.2" + object.getownpropertydescriptors "^2.0.3" + +util@0.10.3, util@^0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + dependencies: + inherits "2.0.1" + +utila@~0.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.3.3.tgz#d7e8e7d7e309107092b05f8d9688824d633a4226" + +utila@~0.4: + version "0.4.0" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + +utils-merge@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8" + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + +uuid@^3.0.0, uuid@^3.0.1, uuid@^3.1.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14" + +validate-npm-package-license@^3.0.1: + version "3.0.3" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz#81643bcbef1bdfecd4623793dc4648948ba98338" + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +validate-npm-package-name@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" + dependencies: + builtins "^1.0.3" + +vary@^1, vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +vinyl@^0.5.0: + version "0.5.3" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.5.3.tgz#b0455b38fc5e0cf30d4325132e461970c2091cde" + dependencies: + clone "^1.0.0" + clone-stats "^0.0.1" + replace-ext "0.0.1" + +viz.js@^1.8.0: + version "1.8.2" + resolved "https://registry.yarnpkg.com/viz.js/-/viz.js-1.8.2.tgz#d9cc04cd99f98ec986bf9054db76a6cbcdc5d97a" + +vlq@^0.2.2: + version "0.2.3" + resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26" + +vm-browserify@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" + dependencies: + indexof "0.0.1" + +void-elements@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" + +watchpack@^1.5.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00" + dependencies: + chokidar "^2.0.2" + graceful-fs "^4.1.2" + neo-async "^2.5.0" + +wbuf@^1.1.0, wbuf@^1.7.2: + version "1.7.3" + resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + dependencies: + minimalistic-assert "^1.0.0" + +webdriver-js-extender@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/webdriver-js-extender/-/webdriver-js-extender-1.0.0.tgz#81c533a9e33d5bfb597b4e63e2cdb25b54777515" + dependencies: + "@types/selenium-webdriver" "^2.53.35" + selenium-webdriver "^2.53.2" + +webdriver-manager@^12.0.6: + version "12.0.6" + resolved "https://registry.yarnpkg.com/webdriver-manager/-/webdriver-manager-12.0.6.tgz#3df1a481977010b4cbf8c9d85c7a577828c0e70b" + dependencies: + adm-zip "^0.4.7" + chalk "^1.1.1" + del "^2.2.0" + glob "^7.0.3" + ini "^1.3.4" + minimist "^1.2.0" + q "^1.4.1" + request "^2.78.0" + rimraf "^2.5.2" + semver "^5.3.0" + xml2js "^0.4.17" + +webpack-core@^0.6.8: + version "0.6.9" + resolved "https://registry.yarnpkg.com/webpack-core/-/webpack-core-0.6.9.tgz#fc571588c8558da77be9efb6debdc5a3b172bdc2" + dependencies: + source-list-map "~0.1.7" + source-map "~0.4.1" + +webpack-dev-middleware@3.1.3, webpack-dev-middleware@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.1.3.tgz#8b32aa43da9ae79368c1bf1183f2b6cf5e1f39ed" + dependencies: + loud-rejection "^1.6.0" + memory-fs "~0.4.1" + mime "^2.1.0" + path-is-absolute "^1.0.0" + range-parser "^1.0.3" + url-join "^4.0.0" + webpack-log "^1.0.1" + +webpack-dev-server@^3.1.4: + version "3.1.4" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.1.4.tgz#9a08d13c4addd1e3b6d8ace116e86715094ad5b4" + dependencies: + ansi-html "0.0.7" + array-includes "^3.0.3" + bonjour "^3.5.0" + chokidar "^2.0.0" + compression "^1.5.2" + connect-history-api-fallback "^1.3.0" + debug "^3.1.0" + del "^3.0.0" + express "^4.16.2" + html-entities "^1.2.0" + http-proxy-middleware "~0.18.0" + import-local "^1.0.0" + internal-ip "1.2.0" + ip "^1.1.5" + killable "^1.0.0" + loglevel "^1.4.1" + opn "^5.1.0" + portfinder "^1.0.9" + selfsigned "^1.9.1" + serve-index "^1.7.2" + sockjs "0.3.19" + sockjs-client "1.1.4" + spdy "^3.4.1" + strip-ansi "^3.0.0" + supports-color "^5.1.0" + webpack-dev-middleware "3.1.3" + webpack-log "^1.1.2" + yargs "11.0.0" + +webpack-log@^1.0.1, webpack-log@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-1.2.0.tgz#a4b34cda6b22b518dbb0ab32e567962d5c72a43d" + dependencies: + chalk "^2.1.0" + log-symbols "^2.1.0" + loglevelnext "^1.0.1" + uuid "^3.1.0" + +webpack-merge@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.1.2.tgz#5d372dddd3e1e5f8874f5bf5a8e929db09feb216" + dependencies: + lodash "^4.17.5" + +webpack-sources@^1.0.1, webpack-sources@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.1.0.tgz#a101ebae59d6507354d71d8013950a3a8b7a5a54" + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + +webpack-subresource-integrity@^1.1.0-rc.4: + version "1.1.0-rc.4" + resolved "https://registry.yarnpkg.com/webpack-subresource-integrity/-/webpack-subresource-integrity-1.1.0-rc.4.tgz#c5c4e3d690f9d2f64a9550e07a8767f9796aa5d8" + dependencies: + webpack-core "^0.6.8" + +webpack@~4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.6.0.tgz#363eafa733710eb0ed28c512b2b9b9f5fb01e69b" + dependencies: + acorn "^5.0.0" + acorn-dynamic-import "^3.0.0" + ajv "^6.1.0" + ajv-keywords "^3.1.0" + chrome-trace-event "^0.1.1" + enhanced-resolve "^4.0.0" + eslint-scope "^3.7.1" + loader-runner "^2.3.0" + loader-utils "^1.1.0" + memory-fs "~0.4.1" + micromatch "^3.1.8" + mkdirp "~0.5.0" + neo-async "^2.5.0" + node-libs-browser "^2.0.0" + schema-utils "^0.4.4" + tapable "^1.0.0" + uglifyjs-webpack-plugin "^1.2.4" + watchpack "^1.5.0" + webpack-sources "^1.0.1" + +websocket-driver@>=0.5.1: + version "0.7.0" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.0.tgz#0caf9d2d755d93aee049d4bdd0d3fe2cca2a24eb" + dependencies: + http-parser-js ">=0.4.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29" + +when@~3.6.x: + version "3.6.4" + resolved "https://registry.yarnpkg.com/when/-/when-3.6.4.tgz#473b517ec159e2b85005497a13983f095412e34e" + +which-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + +which@1, which@^1.1.1, which@^1.2.1, which@^1.2.9: + version "1.3.0" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" + dependencies: + isexe "^2.0.0" + +wide-align@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" + dependencies: + string-width "^1.0.2" + +widest-line@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.0.tgz#0142a4e8a243f8882c0233aa0e0281aa76152273" + dependencies: + string-width "^2.1.1" + +win-release@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/win-release/-/win-release-1.1.1.tgz#5fa55e02be7ca934edfc12665632e849b72e5209" + dependencies: + semver "^5.0.1" + +window-size@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" + +wordwrap@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" + +wordwrap@^1.0.0, wordwrap@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + +wordwrap@~0.0.2: + version "0.0.3" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" + +worker-farm@^1.5.2: + version "1.6.0" + resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.6.0.tgz#aecc405976fab5a95526180846f0dba288f3a4a0" + dependencies: + errno "~0.1.7" + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + +write-file-atomic@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab" + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + +ws@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.2.tgz#8a244fa052401e08c9886cf44a85189e1fd4067f" + dependencies: + options ">=0.0.5" + ultron "1.0.x" + +ws@^1.0.1: + version "1.1.5" + resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.5.tgz#cbd9e6e75e09fc5d2c90015f21f0c40875e0dd51" + dependencies: + options ">=0.0.5" + ultron "1.0.x" + +wtf-8@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wtf-8/-/wtf-8-1.0.0.tgz#392d8ba2d0f1c34d1ee2d630f15d0efb68e1048a" + +xdg-basedir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" + +xml2js@0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.4.tgz#3111010003008ae19240eba17497b57c729c555d" + dependencies: + sax "0.6.x" + xmlbuilder ">=1.0.0" + +xml2js@^0.4.17: + version "0.4.19" + resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7" + dependencies: + sax ">=0.6.0" + xmlbuilder "~9.0.1" + +xmlbuilder@>=1.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-10.0.0.tgz#c64e52f8ae097fe5fd46d1c38adaade071ee1b55" + +xmlbuilder@~9.0.1: + version "9.0.7" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" + +xmlhttprequest-ssl@1.5.3: + version "1.5.3" + resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz#185a888c04eca46c3e4070d99f7b49de3528992d" + +xtend@^4.0.0, xtend@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" + +xxhashjs@^0.2.1: + version "0.2.2" + resolved "https://registry.yarnpkg.com/xxhashjs/-/xxhashjs-0.2.2.tgz#8a6251567621a1c46a5ae204da0249c7f8caa9d8" + dependencies: + cuint "^0.2.2" + +y18n@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + +y18n@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + +yallist@^3.0.0, yallist@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9" + +yargs-parser@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.0.0.tgz#c737c93de2567657750cb1f2c00be639fd19c994" + dependencies: + camelcase "^4.1.0" + +yargs-parser@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" + dependencies: + camelcase "^3.0.0" + +yargs-parser@^9.0.2: + version "9.0.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077" + dependencies: + camelcase "^4.1.0" + +yargs@11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.0.0.tgz#c052931006c5eee74610e5fc0354bedfd08a201b" + dependencies: + cliui "^4.0.0" + decamelize "^1.1.1" + find-up "^2.1.0" + get-caller-file "^1.0.1" + os-locale "^2.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1" + yargs-parser "^9.0.2" + +yargs@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8" + dependencies: + camelcase "^3.0.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^1.4.0" + read-pkg-up "^1.0.1" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^1.0.2" + which-module "^1.0.0" + y18n "^3.2.1" + yargs-parser "^5.0.0" + +yargs@~3.10.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" + dependencies: + camelcase "^1.0.2" + cliui "^2.1.0" + decamelize "^1.0.0" + window-size "0.1.0" + +yeast@0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" + +yn@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/yn/-/yn-2.0.0.tgz#e5adabc8acf408f6385fc76495684c88e6af689a" + +zone.js@^0.8.26: + version "0.8.26" + resolved "https://registry.yarnpkg.com/zone.js/-/zone.js-0.8.26.tgz#7bdd72f7668c5a7ad6b118148b4ea39c59d08d2d"