From 7ed0603ccd1023f7068d0678e181173e40ad4f1f Mon Sep 17 00:00:00 2001 From: Osama Najjar Date: Mon, 28 Jan 2019 13:29:49 +0100 Subject: [PATCH 01/32] init widget with depencies & widget modeler conf --- to_be_removed/Cropper/.gitignore | 7 + to_be_removed/Cropper/README.md | 2 + to_be_removed/Cropper/conf/paths.js | 12 + to_be_removed/Cropper/conf/postcss.config.js | 16 + to_be_removed/Cropper/conf/webpack.config.js | 126 + to_be_removed/Cropper/conf/widget.config.json | 5 + to_be_removed/Cropper/package-lock.json | 8524 +++++++++++++++++ to_be_removed/Cropper/package.json | 52 + to_be_removed/Cropper/src/Counter.js | 44 + to_be_removed/Cropper/src/index.js | 29 + to_be_removed/Cropper/src/package.ejs | 12 + to_be_removed/Cropper/src/style/_app.scss | 57 + to_be_removed/Cropper/src/style/style.scss | 1 + to_be_removed/Cropper/src/widget.config.ejs | 53 + 14 files changed, 8940 insertions(+) create mode 100644 to_be_removed/Cropper/.gitignore create mode 100644 to_be_removed/Cropper/README.md create mode 100644 to_be_removed/Cropper/conf/paths.js create mode 100644 to_be_removed/Cropper/conf/postcss.config.js create mode 100644 to_be_removed/Cropper/conf/webpack.config.js create mode 100644 to_be_removed/Cropper/conf/widget.config.json create mode 100644 to_be_removed/Cropper/package-lock.json create mode 100644 to_be_removed/Cropper/package.json create mode 100644 to_be_removed/Cropper/src/Counter.js create mode 100644 to_be_removed/Cropper/src/index.js create mode 100644 to_be_removed/Cropper/src/package.ejs create mode 100644 to_be_removed/Cropper/src/style/_app.scss create mode 100644 to_be_removed/Cropper/src/style/style.scss create mode 100644 to_be_removed/Cropper/src/widget.config.ejs diff --git a/to_be_removed/Cropper/.gitignore b/to_be_removed/Cropper/.gitignore new file mode 100644 index 0000000..8627120 --- /dev/null +++ b/to_be_removed/Cropper/.gitignore @@ -0,0 +1,7 @@ +node_modules/ +build/ +dist/ + +test/* +!test/widgets +!test/TestHyperMxWidget.mpr diff --git a/to_be_removed/Cropper/README.md b/to_be_removed/Cropper/README.md new file mode 100644 index 0000000..7768eb4 --- /dev/null +++ b/to_be_removed/Cropper/README.md @@ -0,0 +1,2 @@ +# Cropper +Image Cropping Widget diff --git a/to_be_removed/Cropper/conf/paths.js b/to_be_removed/Cropper/conf/paths.js new file mode 100644 index 0000000..dbc18df --- /dev/null +++ b/to_be_removed/Cropper/conf/paths.js @@ -0,0 +1,12 @@ +const path = require('path'); + +module.exports = { + srcDir: path.join(__dirname, '..', 'src'), + srcEntry: './src/index.js', + confDir: __dirname, + distDir: path.join(__dirname, '..', 'dist'), + buildDir: path.join(__dirname, '..', 'build'), + mxProjectRootDir: false, // + widgetPackageXML: path.join(__dirname, '..', 'src', 'package.ejs'), + widgetConfigXML: path.join(__dirname, '..', 'src', 'widget.config.ejs') +}; diff --git a/to_be_removed/Cropper/conf/postcss.config.js b/to_be_removed/Cropper/conf/postcss.config.js new file mode 100644 index 0000000..055300e --- /dev/null +++ b/to_be_removed/Cropper/conf/postcss.config.js @@ -0,0 +1,16 @@ +module.exports = { + plugins: [ + require('autoprefixer'), + require('postcss-clean'), + require('cssnano')({ + preset: [ + 'default', + { + discardComments: { + removeAll: true + } + } + ] + }) + ] +}; diff --git a/to_be_removed/Cropper/conf/webpack.config.js b/to_be_removed/Cropper/conf/webpack.config.js new file mode 100644 index 0000000..8ff90b9 --- /dev/null +++ b/to_be_removed/Cropper/conf/webpack.config.js @@ -0,0 +1,126 @@ +const paths = require('./paths'); +const widgetConf = require('./widget.config.json'); +const XMLPlugin = require('xml-webpack-plugin'); +const ArchivePlugin = require('webpack-archive-plugin'); +const MiniCssExtractPlugin = require('mini-css-extract-plugin'); +const UglifyJsPlugin = require('uglifyjs-webpack-plugin'); +const fs = require('fs-extra'); + +const MODES = { + DEV: 'development', + PROD: 'production' +}; +const isProd = process.env.MODE === MODES.PROD; +const isDev = process.env.MODE === MODES.DEV; + +const widgetDir = `${widgetConf.name}/widget`; +const widgetUIDir = `${widgetDir}/ui`; + +const widgetXMLFiles = [ + { + template: paths.widgetPackageXML, + filename: `package.xml`, + data: { + NAME: widgetConf.name + } + }, + { + template: paths.widgetConfigXML, + filename: `${widgetConf.name}/${widgetConf.name}.xml`, + data: { + NAME: widgetConf.name, + FRIENDLY_NAME: widgetConf.friendlyName, + WIDGET_DESC: widgetConf.description + } + } +]; + +module.exports = { + mode: isDev ? MODES.DEV : MODES.PROD, + target: 'web', + devtool: isDev ? 'eval-source-map' : false, + watch: isDev, + entry: paths.srcEntry, + output: { + path: isDev ? paths.buildDir : paths.distDir, + filename: `${widgetDir}/${widgetConf.name}.js`, + libraryTarget: 'amd' + }, + optimization: { + minimizer: [ + new UglifyJsPlugin({ + test: /\.js(\?.*)?$/i + }) + ] + }, + module: { + rules: [ + { + test: /\.js$/, + exclude: /node_modules/, + use: { + loader: 'babel-loader', + options: { + presets: [ '@babel/preset-env' ], + plugins: [ 'add-module-exports' ] + } + } + }, + { + test: /\.(sa|sc|c)ss$/, + use: [ + MiniCssExtractPlugin.loader, + 'css-loader', + { loader: 'postcss-loader', options: { config: { path: paths.confDir } } }, + 'sass-loader' + ] + }, + { + test: /\.(gif|png|jpe?g|svg)$/i, + use: [ + { + loader: 'file-loader', + options: { + name: `[name].[ext]`, + outputPath: `${widgetUIDir}/images` + } + } + ] + } + ] + }, + externals: [ + { MxWidgetBase: 'mxui/widget/_WidgetBase' }, + { dojoBaseDeclare: 'dojo/_base/declare' }, + /mx|mxui|mendix|dijit|dojo|require/ + ], + plugins: _getPlugins() +}; + +function _getPlugins() { + //ensure distDir fir Archive Plugin + fs.ensureDirSync(paths.distDir); + const plugins = [ + new MiniCssExtractPlugin({ + filename: `${widgetUIDir}/${widgetConf.name}.css` + }), + new XMLPlugin({ + files: widgetXMLFiles + }), + new ArchivePlugin({ + output: `${paths.distDir}/${widgetConf.name}`, + format: 'zip', + ext: 'mpk' + }) + ]; + if (paths.mxProjectRootDir) { + plugins.push( + new ArchivePlugin({ + output: `${paths.mxProjectRootDir}/widgets/${widgetConf.name}`, + format: 'zip', + ext: 'mpk' + }) + ); + } + return plugins; +} diff --git a/to_be_removed/Cropper/conf/widget.config.json b/to_be_removed/Cropper/conf/widget.config.json new file mode 100644 index 0000000..2b2ce6a --- /dev/null +++ b/to_be_removed/Cropper/conf/widget.config.json @@ -0,0 +1,5 @@ +{ + "name": "Image Cropper", + "friendlyName": "Cropper", + "description": "Image cropper." +} \ No newline at end of file diff --git a/to_be_removed/Cropper/package-lock.json b/to_be_removed/Cropper/package-lock.json new file mode 100644 index 0000000..c046b22 --- /dev/null +++ b/to_be_removed/Cropper/package-lock.json @@ -0,0 +1,8524 @@ +{ + "name": "cropper", + "version": "1.2.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", + "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "dev": true, + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "@babel/core": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.2.2.tgz", + "integrity": "sha512-59vB0RWt09cAct5EIe58+NzGP4TFSD3Bz//2/ELy3ZeTeKF6VTD1AXlH8BGGbCX0PuobZBsIzO7IAI9PH67eKw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.2.2", + "@babel/helpers": "^7.2.0", + "@babel/parser": "^7.2.2", + "@babel/template": "^7.2.2", + "@babel/traverse": "^7.2.2", + "@babel/types": "^7.2.2", + "convert-source-map": "^1.1.0", + "debug": "^4.1.0", + "json5": "^2.1.0", + "lodash": "^4.17.10", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + } + }, + "@babel/generator": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.3.0.tgz", + "integrity": "sha512-dZTwMvTgWfhmibq4V9X+LMf6Bgl7zAodRn9PvcPdhlzFMbvUutx74dbEv7Atz3ToeEpevYEJtAwfxq/bDCzHWg==", + "dev": true, + "requires": { + "@babel/types": "^7.3.0", + "jsesc": "^2.5.1", + "lodash": "^4.17.10", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz", + "integrity": "sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz", + "integrity": "sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-call-delegate": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.1.0.tgz", + "integrity": "sha512-YEtYZrw3GUK6emQHKthltKNZwszBcHK58Ygcis+gVUrF4/FmTVr5CCqQNSfmvg2y+YDEANyYoaLz/SHsnusCwQ==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.0.0", + "@babel/traverse": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-define-map": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.1.0.tgz", + "integrity": "sha512-yPPcW8dc3gZLN+U1mhYV91QU3n5uTbx7DUdf8NnPbjS0RMwBuHi9Xt2MUgppmNz7CJxTBWsGczTiEp1CSOTPRg==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.1.0", + "@babel/types": "^7.0.0", + "lodash": "^4.17.10" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz", + "integrity": "sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA==", + "dev": true, + "requires": { + "@babel/traverse": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-function-name": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", + "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/template": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", + "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0.tgz", + "integrity": "sha512-Ggv5sldXUeSKsuzLkddtyhyHe2YantsxWKNi7A+7LeD12ExRDWTRk29JCXpaHPAbMaIPZSil7n+lq78WY2VY7w==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz", + "integrity": "sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-module-imports": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz", + "integrity": "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-module-transforms": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.2.2.tgz", + "integrity": "sha512-YRD7I6Wsv+IHuTPkAmAS4HhY0dkPobgLftHp0cRGZSdrRvmZY8rFvae/GVu3bD00qscuvK3WPHB3YdNpBXUqrA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-simple-access": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.0.0", + "@babel/template": "^7.2.2", + "@babel/types": "^7.2.2", + "lodash": "^4.17.10" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz", + "integrity": "sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz", + "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==", + "dev": true + }, + "@babel/helper-regex": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.0.0.tgz", + "integrity": "sha512-TR0/N0NDCcUIUEbqV6dCO+LptmmSQFQ7q70lfcEB4URsjD0E1HzicrwUH+ap6BAQ2jhCX9Q4UqZy4wilujWlkg==", + "dev": true, + "requires": { + "lodash": "^4.17.10" + } + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz", + "integrity": "sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-wrap-function": "^7.1.0", + "@babel/template": "^7.1.0", + "@babel/traverse": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-replace-supers": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.2.3.tgz", + "integrity": "sha512-GyieIznGUfPXPWu0yLS6U55Mz67AZD9cUk0BfirOWlPrXlBcan9Gz+vHGz+cPfuoweZSnPzPIm67VtQM0OWZbA==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.0.0", + "@babel/helper-optimise-call-expression": "^7.0.0", + "@babel/traverse": "^7.2.3", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-simple-access": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz", + "integrity": "sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w==", + "dev": true, + "requires": { + "@babel/template": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz", + "integrity": "sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-wrap-function": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz", + "integrity": "sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.1.0", + "@babel/template": "^7.1.0", + "@babel/traverse": "^7.1.0", + "@babel/types": "^7.2.0" + } + }, + "@babel/helpers": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.3.1.tgz", + "integrity": "sha512-Q82R3jKsVpUV99mgX50gOPCWwco9Ec5Iln/8Vyu4osNIOQgSrd9RFrQeUvmvddFNoLwMyOUWU+5ckioEKpDoGA==", + "dev": true, + "requires": { + "@babel/template": "^7.1.2", + "@babel/traverse": "^7.1.5", + "@babel/types": "^7.3.0" + } + }, + "@babel/highlight": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", + "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.3.1.tgz", + "integrity": "sha512-ATz6yX/L8LEnC3dtLQnIx4ydcPxhLcoy9Vl6re00zb2w5lG6itY6Vhnr1KFRPq/FHNsgl/gh2mjNN20f9iJTTA==", + "dev": true + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz", + "integrity": "sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-remap-async-to-generator": "^7.1.0", + "@babel/plugin-syntax-async-generators": "^7.2.0" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz", + "integrity": "sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-json-strings": "^7.2.0" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.3.1.tgz", + "integrity": "sha512-Nmmv1+3LqxJu/V5jU9vJmxR/KIRWFk2qLHmbB56yRRRFhlaSuOVXscX3gUmhaKgUhzA3otOHVubbIEVYsZ0eZg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-object-rest-spread": "^7.2.0" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz", + "integrity": "sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.2.0" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.2.0.tgz", + "integrity": "sha512-LvRVYb7kikuOtIoUeWTkOxQEV1kYvL5B6U3iWEGCzPNRus1MzJweFqORTj+0jkxozkTSYNJozPOddxmqdqsRpw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.0.0", + "regexpu-core": "^4.2.0" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz", + "integrity": "sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz", + "integrity": "sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz", + "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz", + "integrity": "sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz", + "integrity": "sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.2.0.tgz", + "integrity": "sha512-CEHzg4g5UraReozI9D4fblBYABs7IM6UerAVG7EJVrTLC5keh00aEuLUT+O40+mJCEzaXkYfTCUKIyeDfMOFFQ==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-remap-async-to-generator": "^7.1.0" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz", + "integrity": "sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.2.0.tgz", + "integrity": "sha512-vDTgf19ZEV6mx35yiPJe4fS02mPQUUcBNwWQSZFXSzTSbsJFQvHt7DqyS3LK8oOWALFOsJ+8bbqBgkirZteD5Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "lodash": "^4.17.10" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.2.2.tgz", + "integrity": "sha512-gEZvgTy1VtcDOaQty1l10T3jQmJKlNVxLDCs+3rCVPr6nMkODLELxViq5X9l+rfxbie3XrfrMCYYY6eX3aOcOQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-define-map": "^7.1.0", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-optimise-call-expression": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-replace-supers": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.0.0", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz", + "integrity": "sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.2.0.tgz", + "integrity": "sha512-coVO2Ayv7g0qdDbrNiadE4bU7lvCd9H539m2gMknyVjjMdwF/iCOM7R+E8PkntoqLkltO0rk+3axhpp/0v68VQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.2.0.tgz", + "integrity": "sha512-sKxnyHfizweTgKZf7XsXu/CNupKhzijptfTM+bozonIuyVrLWVUvYjE2bhuSBML8VQeMxq4Mm63Q9qvcvUcciQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.0.0", + "regexpu-core": "^4.1.3" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.2.0.tgz", + "integrity": "sha512-q+yuxW4DsTjNceUiTzK0L+AfQ0zD9rWaTLiUqHA8p0gxx7lu1EylenfzjeIWNkPy6e/0VG/Wjw9uf9LueQwLOw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz", + "integrity": "sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.2.0.tgz", + "integrity": "sha512-Kz7Mt0SsV2tQk6jG5bBv5phVbkd0gd27SgYD4hH1aLMJRchM0dzHaXvrWhVZ+WxAlDoAKZ7Uy3jVTW2mKXQ1WQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.2.0.tgz", + "integrity": "sha512-kWgksow9lHdvBC2Z4mxTsvc7YdY7w/V6B2vy9cTIPtLEE9NhwoWivaxdNM/S37elu5bqlLP/qOY906LukO9lkQ==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz", + "integrity": "sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz", + "integrity": "sha512-mK2A8ucqz1qhrdqjS9VMIDfIvvT2thrEsIQzbaTdc5QFzhDjQv2CkJJ5f6BXIkgbmaoax3zBr2RyvV/8zeoUZw==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.2.0.tgz", + "integrity": "sha512-V6y0uaUQrQPXUrmj+hgnks8va2L0zcZymeU7TtWEgdRLNkceafKXEduv7QzgQAE4lT+suwooG9dC7LFhdRAbVQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-simple-access": "^7.1.0" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.2.0.tgz", + "integrity": "sha512-aYJwpAhoK9a+1+O625WIjvMY11wkB/ok0WClVwmeo3mCjcNRjt+/8gHWrB5i+00mUju0gWsBkQnPpdvQ7PImmQ==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz", + "integrity": "sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.3.0.tgz", + "integrity": "sha512-NxIoNVhk9ZxS+9lSoAQ/LM0V2UEvARLttEHUrRDGKFaAxOYQcrkN/nLRE+BbbicCAvZPl7wMP0X60HsHE5DtQw==", + "dev": true, + "requires": { + "regexp-tree": "^0.1.0" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0.tgz", + "integrity": "sha512-yin069FYjah+LbqfGeTfzIBODex/e++Yfa0rH0fpfam9uTbuEeEOx5GLGr210ggOV77mVRNoeqSYqeuaqSzVSw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz", + "integrity": "sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-replace-supers": "^7.1.0" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.2.0.tgz", + "integrity": "sha512-kB9+hhUidIgUoBQ0MsxMewhzr8i60nMa2KgeJKQWYrqQpqcBYtnpR+JgkadZVZoaEZ/eKu9mclFaVwhRpLNSzA==", + "dev": true, + "requires": { + "@babel/helper-call-delegate": "^7.1.0", + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0.tgz", + "integrity": "sha512-sj2qzsEx8KDVv1QuJc/dEfilkg3RRPvPYx/VnKLtItVQRWt1Wqf5eVCOLZm29CiGFfYYsA3VPjfizTCV0S0Dlw==", + "dev": true, + "requires": { + "regenerator-transform": "^0.13.3" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz", + "integrity": "sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz", + "integrity": "sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz", + "integrity": "sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.0.0" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.2.0.tgz", + "integrity": "sha512-FkPix00J9A/XWXv4VoKJBMeSkyY9x/TqIh76wzcdfl57RJJcf8CehQ08uwfhCDNtRQYtHQKBTwKZDEyjE13Lwg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz", + "integrity": "sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.2.0.tgz", + "integrity": "sha512-m48Y0lMhrbXEJnVUaYly29jRXbQ3ksxPrS1Tg8t+MHqzXhtBYAvI51euOBaoAlZLPHsieY9XPVMf80a5x0cPcA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.0.0", + "regexpu-core": "^4.1.3" + } + }, + "@babel/preset-env": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.3.1.tgz", + "integrity": "sha512-FHKrD6Dxf30e8xgHQO0zJZpUPfVZg+Xwgz5/RdSWCbza9QLNk4Qbp40ctRoqDxml3O8RMzB1DU55SXeDG6PqHQ==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-async-generator-functions": "^7.2.0", + "@babel/plugin-proposal-json-strings": "^7.2.0", + "@babel/plugin-proposal-object-rest-spread": "^7.3.1", + "@babel/plugin-proposal-optional-catch-binding": "^7.2.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.2.0", + "@babel/plugin-syntax-async-generators": "^7.2.0", + "@babel/plugin-syntax-json-strings": "^7.2.0", + "@babel/plugin-syntax-object-rest-spread": "^7.2.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.2.0", + "@babel/plugin-transform-arrow-functions": "^7.2.0", + "@babel/plugin-transform-async-to-generator": "^7.2.0", + "@babel/plugin-transform-block-scoped-functions": "^7.2.0", + "@babel/plugin-transform-block-scoping": "^7.2.0", + "@babel/plugin-transform-classes": "^7.2.0", + "@babel/plugin-transform-computed-properties": "^7.2.0", + "@babel/plugin-transform-destructuring": "^7.2.0", + "@babel/plugin-transform-dotall-regex": "^7.2.0", + "@babel/plugin-transform-duplicate-keys": "^7.2.0", + "@babel/plugin-transform-exponentiation-operator": "^7.2.0", + "@babel/plugin-transform-for-of": "^7.2.0", + "@babel/plugin-transform-function-name": "^7.2.0", + "@babel/plugin-transform-literals": "^7.2.0", + "@babel/plugin-transform-modules-amd": "^7.2.0", + "@babel/plugin-transform-modules-commonjs": "^7.2.0", + "@babel/plugin-transform-modules-systemjs": "^7.2.0", + "@babel/plugin-transform-modules-umd": "^7.2.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.3.0", + "@babel/plugin-transform-new-target": "^7.0.0", + "@babel/plugin-transform-object-super": "^7.2.0", + "@babel/plugin-transform-parameters": "^7.2.0", + "@babel/plugin-transform-regenerator": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.2.0", + "@babel/plugin-transform-spread": "^7.2.0", + "@babel/plugin-transform-sticky-regex": "^7.2.0", + "@babel/plugin-transform-template-literals": "^7.2.0", + "@babel/plugin-transform-typeof-symbol": "^7.2.0", + "@babel/plugin-transform-unicode-regex": "^7.2.0", + "browserslist": "^4.3.4", + "invariant": "^2.2.2", + "js-levenshtein": "^1.1.3", + "semver": "^5.3.0" + } + }, + "@babel/template": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.2.2.tgz", + "integrity": "sha512-zRL0IMM02AUDwghf5LMSSDEz7sBCO2YnNmpg3uWTZj/v1rcG2BmQUvaGU8GhU8BvfMh1k2KIAYZ7Ji9KXPUg7g==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.2.2", + "@babel/types": "^7.2.2" + } + }, + "@babel/traverse": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.2.3.tgz", + "integrity": "sha512-Z31oUD/fJvEWVR0lNZtfgvVt512ForCTNKYcJBGbPb1QZfve4WGH8Wsy7+Mev33/45fhP/hwQtvgusNdcCMgSw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.2.2", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.0.0", + "@babel/parser": "^7.2.3", + "@babel/types": "^7.2.2", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.10" + } + }, + "@babel/types": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.3.0.tgz", + "integrity": "sha512-QkFPw68QqWU1/RVPyBe8SO7lXbPfjtqAxRYQKpFpaB8yMq7X2qAqfwK5LKoQufEkSmO5NQ70O6Kc3Afk03RwXw==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.10", + "to-fast-properties": "^2.0.0" + } + }, + "@types/q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.1.tgz", + "integrity": "sha512-eqz8c/0kwNi/OEHQfvIuJVLTst3in0e7uTKeuY+WL/zfKn0xVujOTp42bS/vUUokhK5P2BppLd9JXMOMHcgbjA==", + "dev": true + }, + "@webassemblyjs/ast": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.7.11.tgz", + "integrity": "sha512-ZEzy4vjvTzScC+SH8RBssQUawpaInUdMTYwYYLh54/s8TuT0gBLuyUnppKsVyZEi876VmmStKsUs28UxPgdvrA==", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.7.11", + "@webassemblyjs/helper-wasm-bytecode": "1.7.11", + "@webassemblyjs/wast-parser": "1.7.11" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.11.tgz", + "integrity": "sha512-zY8dSNyYcgzNRNT666/zOoAyImshm3ycKdoLsyDw/Bwo6+/uktb7p4xyApuef1dwEBo/U/SYQzbGBvV+nru2Xg==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.11.tgz", + "integrity": "sha512-7r1qXLmiglC+wPNkGuXCvkmalyEstKVwcueZRP2GNC2PAvxbLYwLLPr14rcdJaE4UtHxQKfFkuDFuv91ipqvXg==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.11.tgz", + "integrity": "sha512-MynuervdylPPh3ix+mKZloTcL06P8tenNH3sx6s0qE8SLR6DdwnfgA7Hc9NSYeob2jrW5Vql6GVlsQzKQCa13w==", + "dev": true + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.11.tgz", + "integrity": "sha512-T8ESC9KMXFTXA5urJcyor5cn6qWeZ4/zLPyWeEXZ03hj/x9weSokGNkVCdnhSabKGYWxElSdgJ+sFa9G/RdHNw==", + "dev": true, + "requires": { + "@webassemblyjs/wast-printer": "1.7.11" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.11.tgz", + "integrity": "sha512-nsAQWNP1+8Z6tkzdYlXT0kxfa2Z1tRTARd8wYnc/e3Zv3VydVVnaeePgqUzFrpkGUyhUUxOl5ML7f1NuT+gC0A==", + "dev": true + }, + "@webassemblyjs/helper-module-context": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.11.tgz", + "integrity": "sha512-JxfD5DX8Ygq4PvXDucq0M+sbUFA7BJAv/GGl9ITovqE+idGX+J3QSzJYz+LwQmL7fC3Rs+utvWoJxDb6pmC0qg==", + "dev": true + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.11.tgz", + "integrity": "sha512-cMXeVS9rhoXsI9LLL4tJxBgVD/KMOKXuFqYb5oCJ/opScWpkCMEz9EJtkonaNcnLv2R3K5jIeS4TRj/drde1JQ==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.11.tgz", + "integrity": "sha512-8ZRY5iZbZdtNFE5UFunB8mmBEAbSI3guwbrsCl4fWdfRiAcvqQpeqd5KHhSWLL5wuxo53zcaGZDBU64qgn4I4Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-buffer": "1.7.11", + "@webassemblyjs/helper-wasm-bytecode": "1.7.11", + "@webassemblyjs/wasm-gen": "1.7.11" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.7.11.tgz", + "integrity": "sha512-Mmqx/cS68K1tSrvRLtaV/Lp3NZWzXtOHUW2IvDvl2sihAwJh4ACE0eL6A8FvMyDG9abes3saB6dMimLOs+HMoQ==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.7.11.tgz", + "integrity": "sha512-vuGmgZjjp3zjcerQg+JA+tGOncOnJLWVkt8Aze5eWQLwTQGNgVLcyOTqgSCxWTR4J42ijHbBxnuRaL1Rv7XMdw==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.1" + } + }, + "@webassemblyjs/utf8": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.7.11.tgz", + "integrity": "sha512-C6GFkc7aErQIAH+BMrIdVSmW+6HSe20wg57HEC1uqJP8E/xpMjXqQUxkQw07MhNDSDcGpxI9G5JSNOQCqJk4sA==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.11.tgz", + "integrity": "sha512-FUd97guNGsCZQgeTPKdgxJhBXkUbMTY6hFPf2Y4OedXd48H97J+sOY2Ltaq6WGVpIH8o/TGOVNiVz/SbpEMJGg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-buffer": "1.7.11", + "@webassemblyjs/helper-wasm-bytecode": "1.7.11", + "@webassemblyjs/helper-wasm-section": "1.7.11", + "@webassemblyjs/wasm-gen": "1.7.11", + "@webassemblyjs/wasm-opt": "1.7.11", + "@webassemblyjs/wasm-parser": "1.7.11", + "@webassemblyjs/wast-printer": "1.7.11" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.11.tgz", + "integrity": "sha512-U/KDYp7fgAZX5KPfq4NOupK/BmhDc5Kjy2GIqstMhvvdJRcER/kUsMThpWeRP8BMn4LXaKhSTggIJPOeYHwISA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-wasm-bytecode": "1.7.11", + "@webassemblyjs/ieee754": "1.7.11", + "@webassemblyjs/leb128": "1.7.11", + "@webassemblyjs/utf8": "1.7.11" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.11.tgz", + "integrity": "sha512-XynkOwQyiRidh0GLua7SkeHvAPXQV/RxsUeERILmAInZegApOUAIJfRuPYe2F7RcjOC9tW3Cb9juPvAC/sCqvg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-buffer": "1.7.11", + "@webassemblyjs/wasm-gen": "1.7.11", + "@webassemblyjs/wasm-parser": "1.7.11" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.11.tgz", + "integrity": "sha512-6lmXRTrrZjYD8Ng8xRyvyXQJYUQKYSXhJqXOBLw24rdiXsHAOlvw5PhesjdcaMadU/pyPQOJ5dHreMjBxwnQKg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-api-error": "1.7.11", + "@webassemblyjs/helper-wasm-bytecode": "1.7.11", + "@webassemblyjs/ieee754": "1.7.11", + "@webassemblyjs/leb128": "1.7.11", + "@webassemblyjs/utf8": "1.7.11" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.7.11.tgz", + "integrity": "sha512-lEyVCg2np15tS+dm7+JJTNhNWq9yTZvi3qEhAIIOaofcYlUp0UR5/tVqOwa/gXYr3gjwSZqw+/lS9dscyLelbQ==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/floating-point-hex-parser": "1.7.11", + "@webassemblyjs/helper-api-error": "1.7.11", + "@webassemblyjs/helper-code-frame": "1.7.11", + "@webassemblyjs/helper-fsm": "1.7.11", + "@xtuc/long": "4.2.1" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.7.11.tgz", + "integrity": "sha512-m5vkAsuJ32QpkdkDOUPGSltrg8Cuk3KBx4YrmAGQwCZPRdUHXxG4phIOuuycLemHFr74sWL9Wthqss4fzdzSwg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/wast-parser": "1.7.11", + "@xtuc/long": "4.2.1" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.1.tgz", + "integrity": "sha512-FZdkNBDqBRHKQ2MEbSC17xnPFOhZxeJ2YGSfr2BKf3sujG49Qe3bB+rGCwQfIaA7WHnGeGkSijX4FuBCdrzW/g==", + "dev": true + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "acorn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.5.tgz", + "integrity": "sha512-i33Zgp3XWtmZBMNvCr4azvOFeWVw1Rk6p3hfi3LUDvIFraOMywb1kAtrbi+med14m4Xfpqm3zRZMT+c0FNE7kg==", + "dev": true + }, + "acorn-dynamic-import": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz", + "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==", + "dev": true + }, + "ajv": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.7.0.tgz", + "integrity": "sha512-RZXPviBTtfmtka9n9sy1N5M5b82CbxWIR6HIis4s3WQTXDJamc/0gpCWNGz6EWdWp4DOfjzJfhz/AS9zVPjjWg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "dev": true + }, + "ajv-keywords": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.3.0.tgz", + "integrity": "sha512-CMzN9S62ZOO4sA/mJZIO4S++ZM7KFWzH3PPWkveLhy4OZ9i1/VatgwWMD46w/XbGCBy7Ye0gCk+Za6mmyfKK7g==", + "dev": true + }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", + "dev": true + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "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.0" + } + }, + "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.4", + "normalize-path": "^2.1.1" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "archiver": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-1.3.0.tgz", + "integrity": "sha1-TyGU1tj5nfP1MeaIHxTxXVX6ryI=", + "dev": true, + "requires": { + "archiver-utils": "^1.3.0", + "async": "^2.0.0", + "buffer-crc32": "^0.2.1", + "glob": "^7.0.0", + "lodash": "^4.8.0", + "readable-stream": "^2.0.0", + "tar-stream": "^1.5.0", + "walkdir": "^0.0.11", + "zip-stream": "^1.1.0" + } + }, + "archiver-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-1.3.0.tgz", + "integrity": "sha1-5QtMCccL89aA4y/xt5lOn52JUXQ=", + "dev": true, + "requires": { + "glob": "^7.0.0", + "graceful-fs": "^4.1.0", + "lazystream": "^1.0.0", + "lodash": "^4.8.0", + "normalize-path": "^2.0.0", + "readable-stream": "^2.0.0" + } + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "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 + }, + "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==", + "dev": true + }, + "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-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "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.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "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" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "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" + } + } + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "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.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", + "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", + "dev": true, + "requires": { + "lodash": "^4.17.10" + } + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "dev": true + }, + "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.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "autoprefixer": { + "version": "9.4.6", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.4.6.tgz", + "integrity": "sha512-Yp51mevbOEdxDUy5WjiKtpQaecqYq9OqZSL04rSoCiry7Tc5I9FEyo3bfxiTJc1DfHeKwSFCUYbBAiOQ2VGfiw==", + "dev": true, + "requires": { + "browserslist": "^4.4.1", + "caniuse-lite": "^1.0.30000929", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.13", + "postcss-value-parser": "^3.3.1" + } + }, + "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 + }, + "aws4": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "dev": true + }, + "babel": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel/-/babel-6.23.0.tgz", + "integrity": "sha1-0NHn2APpdHZb7qMjLU4VPA77kPQ=", + "dev": true + }, + "babel-loader": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.5.tgz", + "integrity": "sha512-NTnHnVRd2JnRqPC0vW+iOQWU5pchDbYXsG2E6DMXEpMfUcQKclF9gmf3G3ZMhzG7IG9ji4coL0cm+FxeWxDpnw==", + "dev": true, + "requires": { + "find-cache-dir": "^2.0.0", + "loader-utils": "^1.0.2", + "mkdirp": "^0.5.1", + "util.promisify": "^1.0.0" + } + }, + "babel-plugin-add-module-exports": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-1.0.0.tgz", + "integrity": "sha512-m0sMxPL4FaN2K69GQgaRJa4Ny15qKSdoknIcpN+gz+NaJlAW9pge/povs13tPYsKDboflrEQC+/3kfIsONBTaw==", + "dev": true, + "requires": { + "chokidar": "^2.0.4" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "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.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.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.0" + } + }, + "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.0" + } + }, + "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.0" + } + }, + "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" + } + } + } + }, + "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 + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "binary-extensions": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz", + "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==", + "dev": true + }, + "bl": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", + "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", + "dev": true, + "requires": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } + }, + "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.0" + } + }, + "bluebird": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz", + "integrity": "sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==", + "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 + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "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.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.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.0" + } + } + } + }, + "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.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.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.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "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.1.0", + "randombytes": "^2.0.1" + } + }, + "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.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": { + "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.5" + } + }, + "browserslist": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.4.1.tgz", + "integrity": "sha512-pEBxEXg7JwaakBXjATYw/D1YZh4QUSCX/Mnd/wnqSRPPSi1U39iDhDoKGoBUcraKdxDlrYqJxSI5nNvD+dWP2A==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30000929", + "electron-to-chromium": "^1.3.103", + "node-releases": "^1.1.3" + } + }, + "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.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dev": true, + "requires": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "dev": true + }, + "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-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", + "dev": true + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "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 + }, + "cacache": { + "version": "11.3.2", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.2.tgz", + "integrity": "sha512-E0zP4EPGDOaT2chM08Als91eYnf8Z+eH1awwwVsngUmgppfM5jjJ8l3z5vO5p5w/I3LsiXawb1sW0VY65pQABg==", + "dev": true, + "requires": { + "bluebird": "^3.5.3", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.3", + "graceful-fs": "^4.1.15", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.2", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.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": "3.0.3", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", + "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", + "dev": true + } + } + }, + "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" + } + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "dev": true, + "requires": { + "callsites": "^2.0.0" + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "dev": true, + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "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 + }, + "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.0.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + } + } + }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "caniuse-lite": { + "version": "1.0.30000932", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000932.tgz", + "integrity": "sha512-4bghJFItvzz8m0T3lLZbacmEY9X1Z2AtIzTr7s7byqZIOumASfr4ynDx7rtm0J85nDmx8vsgR6vnaSoeU8Oh0A==", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chokidar": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", + "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.0", + "braces": "^2.3.0", + "fsevents": "^1.2.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "lodash.debounce": "^4.0.8", + "normalize-path": "^2.1.1", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0", + "upath": "^1.0.5" + } + }, + "chownr": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", + "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz", + "integrity": "sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "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.1", + "safe-buffer": "^5.0.1" + } + }, + "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.0", + "static-extend": "^0.1.1" + }, + "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.0" + } + } + } + }, + "clean-css": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", + "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", + "dev": true, + "requires": { + "source-map": "~0.6.0" + }, + "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 + } + } + }, + "cli-table3": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.5.1.tgz", + "integrity": "sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==", + "dev": true, + "requires": { + "colors": "^1.1.2", + "object-assign": "^4.1.0", + "string-width": "^2.1.1" + } + }, + "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.0.0" + } + }, + "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.0", + "shallow-clone": "^1.0.0" + } + }, + "coa": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "dev": true, + "requires": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + } + }, + "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 + }, + "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.0" + } + }, + "color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/color/-/color-3.1.0.tgz", + "integrity": "sha512-CwyopLkuRYO5ei2EpzpIh6LqJMt6Mt+jZhO5VI5f/wJLZriXQE32/SSqzmrh+QB+AZT81Cj8yv+7zwToW8ahZg==", + "dev": true, + "requires": { + "color-convert": "^1.9.1", + "color-string": "^1.5.2" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "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 + }, + "color-string": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", + "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", + "dev": true, + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "colors": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz", + "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==", + "dev": true + }, + "combined-stream": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", + "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "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 + }, + "compress-commons": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-1.2.2.tgz", + "integrity": "sha1-UkqfEJA/OoEzibAiXSfEi7dRiQ8=", + "dev": true, + "requires": { + "buffer-crc32": "^0.2.1", + "crc32-stream": "^2.0.0", + "normalize-path": "^2.0.0", + "readable-stream": "^2.0.0" + } + }, + "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.2.2", + "typedarray": "^0.0.6" + } + }, + "concurrently": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-4.1.0.tgz", + "integrity": "sha512-pwzXCE7qtOB346LyO9eFWpkFJVO3JQZ/qU/feGeaAHiX1M3Rw3zgXKc5cZ8vSH5DGygkjzLFDzA/pwoQDkRNGg==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "date-fns": "^1.23.0", + "lodash": "^4.17.10", + "read-pkg": "^4.0.1", + "rxjs": "^6.3.3", + "spawn-command": "^0.0.2-1", + "supports-color": "^4.5.0", + "tree-kill": "^1.1.0", + "yargs": "^12.0.1" + }, + "dependencies": { + "camelcase": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", + "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==", + "dev": true + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.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" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, + "requires": { + "invert-kv": "^2.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "mem": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.0.0.tgz", + "integrity": "sha512-WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA==", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^1.0.0", + "p-is-promise": "^1.1.0" + } + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "p-limit": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz", + "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "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" + } + }, + "yargs": { + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.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 || ^4.0.0", + "yargs-parser": "^11.1.1" + } + }, + "yargs-parser": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "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 + }, + "convert-source-map": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", + "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "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.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": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "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=", + "dev": true + }, + "cosmiconfig": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.0.7.tgz", + "integrity": "sha512-PcLqxTKiDmNT6pSpy4N6KtuPwb53W+2tzNvwOZw0WH9N6O0vLIBq0x8aj8Oj75ere4YcGi48bDFCL+3fRJdlNA==", + "dev": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.9.0", + "parse-json": "^4.0.0" + } + }, + "crc": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", + "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", + "dev": true, + "requires": { + "buffer": "^5.1.0" + }, + "dependencies": { + "buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", + "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" + } + } + } + }, + "crc32-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-2.0.0.tgz", + "integrity": "sha1-483TtN8xaN10494/u8t7KX/pCPQ=", + "dev": true, + "requires": { + "crc": "^3.4.4", + "readable-stream": "^2.0.0" + } + }, + "create-ecdh": { + "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.1.0", + "elliptic": "^6.0.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.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "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.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-env": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-5.2.0.tgz", + "integrity": "sha512-jtdNFfFW1hB7sMhr/H6rW1Z45LFqyI431m3qU6bFXcQ3Eh7LtBuG3h74o7ohHZ3crrRkkqHlo4jYHFPcjroANg==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.5", + "is-windows": "^1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + } + } + }, + "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.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "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.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" + } + }, + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", + "dev": true + }, + "css-declaration-sorter": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", + "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", + "dev": true, + "requires": { + "postcss": "^7.0.1", + "timsort": "^0.3.0" + } + }, + "css-loader": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-2.1.0.tgz", + "integrity": "sha512-MoOu+CStsGrSt5K2OeZ89q3Snf+IkxRfAIt9aAKg4piioTrhtP1iEFPu+OVn3Ohz24FO6L+rw9UJxBILiSBw5Q==", + "dev": true, + "requires": { + "icss-utils": "^4.0.0", + "loader-utils": "^1.2.1", + "lodash": "^4.17.11", + "postcss": "^7.0.6", + "postcss-modules-extract-imports": "^2.0.0", + "postcss-modules-local-by-default": "^2.0.3", + "postcss-modules-scope": "^2.0.0", + "postcss-modules-values": "^2.0.0", + "postcss-value-parser": "^3.3.0", + "schema-utils": "^1.0.0" + } + }, + "css-select": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.0.2.tgz", + "integrity": "sha512-dSpYaDVoWaELjvZ3mS6IKZM/y2PMPa/XYoEfYNZePL4U/XgyxZNroHEHReDx/d+VgXh9VbCTtFqLkFbmeqeaRQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^2.1.2", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", + "dev": true + }, + "css-selector-tokenizer": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz", + "integrity": "sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA==", + "dev": true, + "requires": { + "cssesc": "^0.1.0", + "fastparse": "^1.1.1", + "regexpu-core": "^1.0.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + }, + "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.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" + } + }, + "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" + } + } + } + }, + "css-tree": { + "version": "1.0.0-alpha.28", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.28.tgz", + "integrity": "sha512-joNNW1gCp3qFFzj4St6zk+Wh/NBv0vM5YbEreZk0SD4S23S+1xBKb6cLDg2uj4P4k/GUMlIm6cKIDqIG+vdt0w==", + "dev": true, + "requires": { + "mdn-data": "~1.1.0", + "source-map": "^0.5.3" + } + }, + "css-unit-converter": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.1.tgz", + "integrity": "sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY=", + "dev": true + }, + "css-url-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/css-url-regex/-/css-url-regex-1.1.0.tgz", + "integrity": "sha1-g4NCMMyfdMRX3lnuvRVD/uuDt+w=", + "dev": true + }, + "css-what": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.2.tgz", + "integrity": "sha512-wan8dMWQ0GUeF7DGEPVjhHemVW/vy6xUYmFzRY8RYqgA0JtXC9rJmbScBjqSu6dg9q0lwPQy6ZAmJVr3PPTvqQ==", + "dev": true + }, + "cssesc": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", + "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", + "dev": true + }, + "cssnano": { + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.8.tgz", + "integrity": "sha512-5GIY0VzAHORpbKiL3rMXp4w4M1Ki+XlXgEXyuWXVd3h6hlASb+9Vo76dNP56/elLMVBBsUfusCo1q56uW0UWig==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.6", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "cssnano-preset-default": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.6.tgz", + "integrity": "sha512-UPboYbFaJFtDUhJ4fqctThWbbyF4q01/7UhsZbLzp35l+nUxtzh1SifoVlEfyLM3n3Z0htd8B1YlCxy9i+bQvg==", + "dev": true, + "requires": { + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.0", + "postcss-colormin": "^4.0.2", + "postcss-convert-values": "^4.0.1", + "postcss-discard-comments": "^4.0.1", + "postcss-discard-duplicates": "^4.0.2", + "postcss-discard-empty": "^4.0.1", + "postcss-discard-overridden": "^4.0.1", + "postcss-merge-longhand": "^4.0.10", + "postcss-merge-rules": "^4.0.2", + "postcss-minify-font-values": "^4.0.2", + "postcss-minify-gradients": "^4.0.1", + "postcss-minify-params": "^4.0.1", + "postcss-minify-selectors": "^4.0.1", + "postcss-normalize-charset": "^4.0.1", + "postcss-normalize-display-values": "^4.0.1", + "postcss-normalize-positions": "^4.0.1", + "postcss-normalize-repeat-style": "^4.0.1", + "postcss-normalize-string": "^4.0.1", + "postcss-normalize-timing-functions": "^4.0.1", + "postcss-normalize-unicode": "^4.0.1", + "postcss-normalize-url": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.1", + "postcss-ordered-values": "^4.1.1", + "postcss-reduce-initial": "^4.0.2", + "postcss-reduce-transforms": "^4.0.1", + "postcss-svgo": "^4.0.1", + "postcss-unique-selectors": "^4.0.1" + } + }, + "cssnano-util-get-arguments": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", + "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", + "dev": true + }, + "cssnano-util-get-match": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", + "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", + "dev": true + }, + "cssnano-util-raw-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", + "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "cssnano-util-same-parent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", + "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", + "dev": true + }, + "csso": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/csso/-/csso-3.5.1.tgz", + "integrity": "sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg==", + "dev": true, + "requires": { + "css-tree": "1.0.0-alpha.29" + }, + "dependencies": { + "css-tree": { + "version": "1.0.0-alpha.29", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.29.tgz", + "integrity": "sha512-sRNb1XydwkW9IOci6iB2xmy8IGCj6r/fr+JWitvJ2JxQRPzN3T4AGGVWCMlVmVwM1gtgALJRmGIlWv5ppnGGkg==", + "dev": true, + "requires": { + "mdn-data": "~1.1.0", + "source-map": "^0.5.3" + } + } + } + }, + "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.1" + } + }, + "cyclist": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", + "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", + "dev": true + }, + "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" + } + }, + "date-fns": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", + "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==", + "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": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "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 + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "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.0" + } + }, + "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.0" + } + }, + "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" + } + } + } + }, + "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 + }, + "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.1", + "minimalistic-assert": "^1.0.0" + } + }, + "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 + }, + "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.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "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.1", + "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.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "dot-prop": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", + "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", + "dev": true, + "requires": { + "is-obj": "^1.0.0" + } + }, + "duplexify": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.1.tgz", + "integrity": "sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "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.108", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.108.tgz", + "integrity": "sha512-/QI4hMpAh48a1Sea6PALGv+kuVne9A2EWGd8HrWHMdYhIzGtbhVVHh6heL5fAzGaDnZuPyrlWJRl8WPm4RyiQQ==", + "dev": true + }, + "elliptic": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", + "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", + "dev": true, + "requires": { + "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": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "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" + } + }, + "enhanced-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", + "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "tapable": "^1.0.0" + } + }, + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "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.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", + "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.0", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "is-callable": "^1.1.4", + "is-regex": "^1.0.4", + "object-keys": "^1.0.12" + } + }, + "es-to-primitive": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", + "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "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 + }, + "eslint-scope": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz", + "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "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.1.0" + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "events": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz", + "integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==", + "dev": true + }, + "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.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" + } + }, + "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.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" + }, + "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.0" + } + }, + "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.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "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": "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.0", + "snapdragon": "^0.8.1", + "to-regex": "^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.0" + } + }, + "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.0" + } + }, + "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.0" + } + }, + "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.0" + } + }, + "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" + } + } + } + }, + "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": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "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 + }, + "fastparse": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", + "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", + "dev": true + }, + "figgy-pudding": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", + "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==", + "dev": true + }, + "file-loader": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-3.0.1.tgz", + "integrity": "sha512-4sNIOXgtH/9WZq4NvlfU3Opn5ynUsqBwSLyM+I7UOwdGigTBYfVVQEwe/msZNX/j4pCJTIM14Fsw66Svo1oVrw==", + "dev": true, + "requires": { + "loader-utils": "^1.0.2", + "schema-utils": "^1.0.0" + } + }, + "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.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.0" + } + } + } + }, + "find-cache-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.0.0.tgz", + "integrity": "sha512-LDUY6V1Xs5eFskUVYtIwatojt6+9xC9Chnlk/jYOOvn3FAFfSaWddxahDGyNHh0b2dMXa6YW2m0tk8TdVaXHlA==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^1.0.0", + "pkg-dir": "^3.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" + } + }, + "findup-sync": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", + "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", + "dev": true, + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^3.1.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + }, + "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.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.1", + "readable-stream": "^2.0.4" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "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.1" + } + }, + "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.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "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" + } + }, + "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.1", + "readable-stream": "^2.0.0" + } + }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.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.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "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.2.7", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.7.tgz", + "integrity": "sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.9.2", + "node-pre-gyp": "^0.10.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "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" + } + }, + "glob": { + "version": "7.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "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" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true, + "optional": true + }, + "minipass": { + "version": "2.3.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.2.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.10.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "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, + "dev": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "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" + } + }, + "rimraf": { + "version": "2.6.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "yallist": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "optional": 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.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "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.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" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "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.0" + } + }, + "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.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "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.0.0" + } + } + } + }, + "gaze": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "dev": true, + "requires": { + "globule": "^1.0.0" + } + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "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" + } + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "requires": { + "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" + } + }, + "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.0" + }, + "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.0" + } + } + } + }, + "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.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-modules-path": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/global-modules-path/-/global-modules-path-2.3.1.tgz", + "integrity": "sha512-y+shkf4InI7mPRHSo2b/k6ix6+NLDtyccYv86whhxrSGX9wjPX1VMITmrDbE1eh7zkzhiWtW2sHklJYoQ62Cxg==", + "dev": true + }, + "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.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + }, + "globals": { + "version": "11.10.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.10.0.tgz", + "integrity": "sha512-0GZF1RiPKU97IHUO5TORo9w1PwrH/NBPl+fS7oMLdaTRiYmYbwK4NWoZWrAdd0/abG9R2BU+OiwyQpTpE6pdfQ==", + "dev": true + }, + "globule": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz", + "integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==", + "dev": true, + "requires": { + "glob": "~7.1.1", + "lodash": "~4.17.10", + "minimatch": "~3.0.2" + } + }, + "graceful-fs": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "dev": true + }, + "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.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "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.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + } + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "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.0" + } + }, + "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": { + "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.5" + } + } + } + }, + "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.1", + "safe-buffer": "^5.0.1" + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hex-color-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", + "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", + "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.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "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.7.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", + "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", + "dev": true + }, + "hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", + "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", + "dev": true + }, + "hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", + "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", + "dev": true + }, + "html-comment-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", + "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==", + "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.2.2", + "sshpk": "^1.7.0" + } + }, + "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 + }, + "icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", + "dev": true + }, + "icss-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.0.0.tgz", + "integrity": "sha512-bA/xGiwWM17qjllIs9X/y0EjsB7e0AV08F3OL8UPsoNkNRibIuu8f1eKTnQ8QO1DteKKTxTUAn+IEWUToIwGOA==", + "dev": true, + "requires": { + "postcss": "^7.0.5" + } + }, + "ieee754": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", + "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==", + "dev": true + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", + "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", + "dev": true, + "requires": { + "import-from": "^2.1.0" + } + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "import-from": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", + "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "requires": { + "pkg-dir": "^3.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.0" + } + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, + "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.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "interpret": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", + "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", + "dev": true + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "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 + }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", + "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.0.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.5" + } + } + } + }, + "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=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.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==", + "dev": true + }, + "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.0.0" + } + }, + "is-callable": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", + "dev": true + }, + "is-color-stop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", + "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", + "dev": true, + "requires": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" + } + }, + "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.0.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.5" + } + } + } + }, + "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.0.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-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "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.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 + }, + "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-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.0.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.5" + } + } + } + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + }, + "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-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-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true + }, + "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-svg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", + "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", + "dev": true, + "requires": { + "html-comment-regex": "^1.1.0" + } + }, + "is-symbol": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", + "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "dev": true, + "requires": { + "has-symbols": "^1.0.0" + } + }, + "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 + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "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 + }, + "jquery": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.3.1.tgz", + "integrity": "sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg==" + }, + "jquery-jcrop": { + "version": "0.9.13", + "resolved": "https://registry.npmjs.org/jquery-jcrop/-/jquery-jcrop-0.9.13.tgz", + "integrity": "sha1-zajJVX//xWVAAIzHtikaDsQHG/U=" + }, + "js-base64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.1.tgz", + "integrity": "sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw==", + "dev": true + }, + "js-levenshtein": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", + "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.1.tgz", + "integrity": "sha512-um46hB9wNOKlwkHgiuyEVAybXBjwFUV0Z/RaHJblRd9DXltue9FTYvzCr9ErQrK9Adz5MU4gHWVaNUfdmrC8qA==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "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": { + "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.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "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 + }, + "json5": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", + "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "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" + } + }, + "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 + }, + "lazystream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", + "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", + "dev": true, + "requires": { + "readable-stream": "^2.0.5" + } + }, + "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" + } + }, + "lightercollective": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/lightercollective/-/lightercollective-0.1.0.tgz", + "integrity": "sha512-J9tg5uraYoQKaWbmrzDDexbG6hHnMcWS1qLYgJSWE+mpA3U5OCSeMUhb+K55otgZJ34oFdR0ECvdIb3xuO5JOQ==", + "dev": true + }, + "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.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "dependencies": { + "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.2.0" + } + }, + "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.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "dev": true + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + } + } + }, + "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.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "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.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "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 + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "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.0" + } + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "requires": { + "p-defer": "^1.0.0" + } + }, + "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.0" + } + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mdn-data": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-1.1.4.tgz", + "integrity": "sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA==", + "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.0.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.3", + "readable-stream": "^2.0.1" + } + }, + "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.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" + } + }, + "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.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": { + "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.0.0", + "brorand": "^1.0.1" + } + }, + "mime-db": { + "version": "1.37.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", + "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==", + "dev": true + }, + "mime-types": { + "version": "2.1.21", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", + "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", + "dev": true, + "requires": { + "mime-db": "~1.37.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.5.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.5.0.tgz", + "integrity": "sha512-IuaLjruM0vMKhUUT51fQdQzBYTX49dLj8w68ALEAe2A4iYNpIC4eMac67mt3NzycvjOlf07/kYxJDc0RTl1Wqw==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "schema-utils": "^1.0.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==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, + "requires": { + "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": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "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.3", + "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" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "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.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": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "nan": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz", + "integrity": "sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==", + "dev": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "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-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" + } + }, + "neo-async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz", + "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node-gyp": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", + "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", + "dev": true, + "requires": { + "fstream": "^1.0.0", + "glob": "^7.0.3", + "graceful-fs": "^4.1.2", + "mkdirp": "^0.5.0", + "nopt": "2 || 3", + "npmlog": "0 || 1 || 2 || 3 || 4", + "osenv": "0", + "request": "^2.87.0", + "rimraf": "2", + "semver": "~5.3.0", + "tar": "^2.0.0", + "which": "1" + }, + "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.2.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.0.tgz", + "integrity": "sha512-5MQunG/oyOaBdttrL40dA7bUfPORLRWMUJLQtMg7nluxUvk5XwnLdL9twQHFAjRx/y7mIMkLKT9++qPbbk6BZA==", + "dev": true, + "requires": { + "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": "^3.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.11.0", + "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-releases": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.5.tgz", + "integrity": "sha512-6C2K0x1QlYTz9wCueMN/DVZFcBVg/qsj2k9iV5gV/+OvG4KNrl7Nu7TWbWFQ3/Z2V10qVFQWtj5Xa+VBodcI6g==", + "dev": true, + "requires": { + "semver": "^5.3.0" + } + }, + "node-sass": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.11.0.tgz", + "integrity": "sha512-bHUdHTphgQJZaF1LASx0kAviPH7sGlcyNhWade4eVIpFp6tsn7SV8xNMTbsQFpEV9VXpnwTTnNYlfsZXgGgmkA==", + "dev": true, + "requires": { + "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.8.0", + "npmlog": "^4.0.0", + "request": "^2.88.0", + "sass-graph": "^2.2.4", + "stdout-stream": "^1.4.0", + "true-case-path": "^1.0.2" + }, + "dependencies": { + "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": "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.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "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.0.1", + "which": "^1.2.9" + } + }, + "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.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 + } + } + }, + "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" + } + }, + "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.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "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=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "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 + }, + "normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", + "dev": true + }, + "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.0" + } + }, + "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.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dev": true, + "requires": { + "boolbase": "~1.0.0" + } + }, + "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.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "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-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.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "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.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.5" + } + } + } + }, + "object-keys": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", + "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==", + "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.0" + } + }, + "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.5.1" + } + }, + "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" + } + }, + "object.values": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.0.tgz", + "integrity": "sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.12.0", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "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": "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" + } + }, + "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.0", + "os-tmpdir": "^1.0.0" + } + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true + }, + "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-is-promise": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", + "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=", + "dev": true + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "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.1.0" + } + }, + "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.8", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.8.tgz", + "integrity": "sha512-6i0HVbUfcKaTv+EG8ZTr75az7GFXcLYk9UyLEg7Notv/Ma+z/UG3TCoz6GiNeOrn1E/e63I0X/Hpw18jHOTUnA==", + "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.1.5" + } + }, + "parse-asn1": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.3.tgz", + "integrity": "sha512-VrPoetlz7B/FqjBLD2f5wBVZvsZVLnRUrxVLfRYhGXCODa/NWE4p3Wp+6+aV3ZPL3KM7/OZmxDIwwijD7yuucg==", + "dev": true, + "requires": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "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.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 + }, + "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=", + "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.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "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=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^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 + } + } + }, + "pbkdf2": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", + "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "dev": true, + "requires": { + "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": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "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.0" + } + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz", + "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "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": "7.0.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.14.tgz", + "integrity": "sha512-NsbD6XUUMZvBxtQAJuWDJeeC4QFsmWsfozWxCJPWf3M55K9iu2iMDaKqyoOdTJ1R4usBXuxlVFAIo8rZPQD4Bg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "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 + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-calc": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.1.tgz", + "integrity": "sha512-oXqx0m6tb4N3JGdmeMSc/i91KppbYsFZKdH0xMOqK8V1rJlzrKlTdokz8ozUXLVejydRN6u2IddxpcijRj2FqQ==", + "dev": true, + "requires": { + "css-unit-converter": "^1.1.1", + "postcss": "^7.0.5", + "postcss-selector-parser": "^5.0.0-rc.4", + "postcss-value-parser": "^3.3.1" + } + }, + "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.x", + "postcss": "^6.x" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "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-colormin": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.2.tgz", + "integrity": "sha512-1QJc2coIehnVFsz0otges8kQLsryi4lo19WD+U5xCWvXd0uw/Z+KKYnbiNDCnO9GP+PvErPHCG0jNvWTngk9Rw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "color": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-convert-values": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", + "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-discard-comments": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.1.tgz", + "integrity": "sha512-Ay+rZu1Sz6g8IdzRjUgG2NafSNpp2MSMOQUb+9kkzzzP+kh07fP0yNbhtFejURnyVXSX3FYy2nVNW1QTnNjgBQ==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-duplicates": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", + "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-empty": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", + "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-overridden": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", + "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-load-config": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.0.0.tgz", + "integrity": "sha512-V5JBLzw406BB8UIfsAWSK2KSwIJ5yoEIVFb4gVkXci0QdKgA24jLmHZ/ghe/GgX0lJ0/D1uUK1ejhzEY94MChQ==", + "dev": true, + "requires": { + "cosmiconfig": "^4.0.0", + "import-cwd": "^2.0.0" + }, + "dependencies": { + "cosmiconfig": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-4.0.0.tgz", + "integrity": "sha512-6e5vDdrXZD+t5v0L8CrurPeybg4Fmf+FCSYxXKYVAqLUtyCSbuyqE059d0kDthTNRzKVjL7QMgNpEUlsoYH3iQ==", + "dev": true, + "requires": { + "is-directory": "^0.3.1", + "js-yaml": "^3.9.0", + "parse-json": "^4.0.0", + "require-from-string": "^2.0.1" + } + } + } + }, + "postcss-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz", + "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "postcss": "^7.0.0", + "postcss-load-config": "^2.0.0", + "schema-utils": "^1.0.0" + } + }, + "postcss-merge-longhand": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.10.tgz", + "integrity": "sha512-hME10s6CSjm9nlVIcO1ukR7Jr5RisTaaC1y83jWCivpuBtPohA3pZE7cGTIVSYjXvLnXozHTiVOkG4dnnl756g==", + "dev": true, + "requires": { + "css-color-names": "0.0.4", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" + } + }, + "postcss-merge-rules": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.2.tgz", + "integrity": "sha512-UiuXwCCJtQy9tAIxsnurfF0mrNHKc4NnNx6NxqmzNNjXpQwLSukUxELHTRF0Rg1pAmcoKLih8PwvZbiordchag==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "cssnano-util-same-parent": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0", + "vendors": "^1.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", + "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", + "dev": true, + "requires": { + "dot-prop": "^4.1.1", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-minify-font-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", + "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-minify-gradients": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.1.tgz", + "integrity": "sha512-pySEW3E6Ly5mHm18rekbWiAjVi/Wj8KKt2vwSfVFAWdW6wOIekgqxKxLU7vJfb107o3FDNPkaYFCxGAJBFyogA==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "is-color-stop": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-minify-params": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.1.tgz", + "integrity": "sha512-h4W0FEMEzBLxpxIVelRtMheskOKKp52ND6rJv+nBS33G1twu2tCyurYj/YtgU76+UDCvWeNs0hs8HFAWE2OUFg==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "browserslist": "^4.0.0", + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "uniqs": "^2.0.0" + } + }, + "postcss-minify-selectors": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.1.tgz", + "integrity": "sha512-8+plQkomve3G+CodLCgbhAKrb5lekAnLYuL1d7Nz+/7RANpBEVdgBkPNwljfSKvZ9xkkZTZITd04KP+zeJTJqg==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", + "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", + "dev": true, + "requires": { + "dot-prop": "^4.1.1", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-modules-extract-imports": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", + "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==", + "dev": true, + "requires": { + "postcss": "^7.0.5" + } + }, + "postcss-modules-local-by-default": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-2.0.4.tgz", + "integrity": "sha512-WvuSaTKXUqYJbnT7R3YrsNrHv/C5vRfr5VglS4bFOk0MYT4CLBfc/xgExA+x2RftlYgiBDvWmVs191Xv8S8gZQ==", + "dev": true, + "requires": { + "css-selector-tokenizer": "^0.7.0", + "postcss": "^7.0.6", + "postcss-value-parser": "^3.3.1" + } + }, + "postcss-modules-scope": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.0.1.tgz", + "integrity": "sha512-7+6k9c3/AuZ5c596LJx9n923A/j3nF3ormewYBF1RrIQvjvjXe1xE8V8A1KFyFwXbvnshT6FBZFX0k/F1igneg==", + "dev": true, + "requires": { + "css-selector-tokenizer": "^0.7.0", + "postcss": "^7.0.6" + } + }, + "postcss-modules-values": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-2.0.0.tgz", + "integrity": "sha512-Ki7JZa7ff1N3EIMlPnGTZfUMe69FFwiQPnVSXC9mnn3jozCRBYIxiZd44yJOV2AmabOo4qFf8s0dC/+lweG7+w==", + "dev": true, + "requires": { + "icss-replace-symbols": "^1.1.0", + "postcss": "^7.0.6" + } + }, + "postcss-normalize-charset": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", + "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-normalize-display-values": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.1.tgz", + "integrity": "sha512-R5mC4vaDdvsrku96yXP7zak+O3Mm9Y8IslUobk7IMP+u/g+lXvcN4jngmHY5zeJnrQvE13dfAg5ViU05ZFDwdg==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-positions": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.1.tgz", + "integrity": "sha512-GNoOaLRBM0gvH+ZRb2vKCIujzz4aclli64MBwDuYGU2EY53LwiP7MxOZGE46UGtotrSnmarPPZ69l2S/uxdaWA==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-repeat-style": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.1.tgz", + "integrity": "sha512-fFHPGIjBUyUiswY2rd9rsFcC0t3oRta4wxE1h3lpwfQZwFeFjXFSiDtdJ7APCmHQOnUZnqYBADNRPKPwFAONgA==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-string": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.1.tgz", + "integrity": "sha512-IJoexFTkAvAq5UZVxWXAGE0yLoNN/012v7TQh5nDo6imZJl2Fwgbhy3J2qnIoaDBrtUP0H7JrXlX1jjn2YcvCQ==", + "dev": true, + "requires": { + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-timing-functions": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.1.tgz", + "integrity": "sha512-1nOtk7ze36+63ONWD8RCaRDYsnzorrj+Q6fxkQV+mlY5+471Qx9kspqv0O/qQNMeApg8KNrRf496zHwJ3tBZ7w==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-unicode": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", + "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-url": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", + "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", + "dev": true, + "requires": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-whitespace": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.1.tgz", + "integrity": "sha512-U8MBODMB2L+nStzOk6VvWWjZgi5kQNShCyjRhMT3s+W9Jw93yIjOnrEkKYD3Ul7ChWbEcjDWmXq0qOL9MIAnAw==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-ordered-values": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.1.tgz", + "integrity": "sha512-PeJiLgJWPzkVF8JuKSBcylaU+hDJ/TX3zqAMIjlghgn1JBi6QwQaDZoDIlqWRcCAI8SxKrt3FCPSRmOgKRB97Q==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-reduce-initial": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.2.tgz", + "integrity": "sha512-epUiC39NonKUKG+P3eAOKKZtm5OtAtQJL7Ye0CBN1f+UQTHzqotudp+hki7zxXm7tT0ZAKDMBj1uihpPjP25ug==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.1.tgz", + "integrity": "sha512-sZVr3QlGs0pjh6JAIe6DzWvBaqYw05V1t3d9Tp+VnFRT5j+rsqoWsysh/iSD7YNsULjq9IAylCznIwVd5oU/zA==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "dev": true, + "requires": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "dependencies": { + "cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", + "dev": true + } + } + }, + "postcss-svgo": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.1.tgz", + "integrity": "sha512-YD5uIk5NDRySy0hcI+ZJHwqemv2WiqqzDgtvgMzO8EGSkK5aONyX8HMVFRFJSdO8wUWTuisUFn/d7yRRbBr5Qw==", + "dev": true, + "requires": { + "is-svg": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + } + }, + "postcss-unique-selectors": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", + "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.0" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, + "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": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "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", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "psl": { + "version": "1.1.31", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", + "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "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.1.0", + "once": "^1.3.1" + } + } + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true + }, + "qs": { + "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": { + "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 + }, + "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.0" + } + }, + "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.5", + "safe-buffer": "^5.1.0" + } + }, + "read-pkg": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz", + "integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=", + "dev": true, + "requires": { + "normalize-package-data": "^2.3.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0" + } + }, + "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.0.0", + "read-pkg": "^1.0.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.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "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.0" + } + }, + "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.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + } + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "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" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "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" + } + }, + "regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz", + "integrity": "sha512-s5NGghCE4itSlUS+0WUj88G6cfMVMmH8boTPNvABf8od+2dhT9WDlWu8n01raQAJZMOK8Ch6jSexaRO7swd6aw==", + "dev": true, + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-transform": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.13.3.tgz", + "integrity": "sha512-5ipTrZFSq5vU2YoGoww4uaRVAK4wyYC4TSICibbfEPOruUu8FFP7ErV0BjmbIOEpn3O/k9na9UEdYR/3m7N6uA==", + "dev": true, + "requires": { + "private": "^0.1.6" + } + }, + "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" + } + }, + "regexp-tree": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.0.tgz", + "integrity": "sha512-rHQv+tzu+0l3KS/ERabas1yK49ahNVxuH40WcPg53CzP5p8TgmmyBgHELLyJcvjhTD0e5ahSY6C76LbEVtr7cg==", + "dev": true, + "requires": { + "cli-table3": "^0.5.0", + "colors": "^1.1.2", + "yargs": "^10.0.3" + } + }, + "regexpu-core": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.4.0.tgz", + "integrity": "sha512-eDDWElbwwI3K0Lo6CqbQbA6FwgtCz4kYTarrri1okfkRLZAqstU+B3voZBCjg8Fl6iq0gXrJG6MvRgLthfvgOA==", + "dev": true, + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^7.0.0", + "regjsgen": "^0.5.0", + "regjsparser": "^0.6.0", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.0.2" + } + }, + "regjsgen": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz", + "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==", + "dev": true + }, + "regjsparser": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz", + "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "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 + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "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.0" + } + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "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": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "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 + }, + "resolve": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", + "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "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-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.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 + }, + "rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", + "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", + "dev": true + }, + "rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", + "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", + "dev": true + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "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.0", + "inherits": "^2.0.1" + } + }, + "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.1.1" + } + }, + "rxjs": { + "version": "6.3.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.3.tgz", + "integrity": "sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "safe-buffer": { + "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": { + "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.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "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.0.0", + "lodash": "^4.0.0", + "scss-tokenizer": "^0.2.3", + "yargs": "^7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "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.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "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.0" + } + }, + "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" + } + }, + "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.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "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.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 + }, + "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.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-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" + } + } + } + }, + "sass-loader": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-7.1.0.tgz", + "integrity": "sha512-+G+BKGglmZM2GUSfT9TLuEp6tzehHPjAMoRRItOojWIqIGPloVCMhNIQuG639eJ+y033PaGTSjLaTHts8Kw79w==", + "dev": true, + "requires": { + "clone-deep": "^2.0.1", + "loader-utils": "^1.0.1", + "lodash.tail": "^4.1.1", + "neo-async": "^2.5.0", + "pify": "^3.0.0", + "semver": "^5.5.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": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.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.1.8", + "source-map": "^0.4.2" + }, + "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": ">=0.0.4" + } + } + } + }, + "semver": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "dev": true + }, + "serialize-javascript": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.6.1.tgz", + "integrity": "sha512-A5MOagrPFga4YaKQSWHryl7AXvbQkEqpw4NNYMTNYUNV51bA8ABHgYFpqKx+YFFrw59xMV1qGH1R4AgoNIVgCw==", + "dev": true + }, + "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-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.3", + "split-string": "^3.0.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.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "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.1", + "safe-buffer": "^5.0.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.0.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 + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "dev": true, + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "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.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" + }, + "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.0" + } + }, + "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.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "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.0", + "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.0" + } + }, + "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.0" + } + }, + "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.0" + } + }, + "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" + } + } + } + }, + "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.0" + }, + "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.5" + } + } + } + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "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 + }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "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.5.10", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.10.tgz", + "integrity": "sha512-YfQ3tQFTK/yzlGJuX8pTwa4tifQj4QS2Mj7UegOu8jAz59MqIiMGPXxQhVQiIMNzayuUSF/jEuVnfFF5JqybmQ==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "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": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "spawn-command": { + "version": "0.0.2-1", + "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", + "integrity": "sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=", + "dev": true + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz", + "integrity": "sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g==", + "dev": true + }, + "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.0" + } + }, + "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.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, + "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.0" + } + } + } + }, + "stdout-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", + "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", + "dev": true, + "requires": { + "readable-stream": "^2.0.1" + } + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "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": "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" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "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" + } + }, + "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.0" + } + }, + "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" + } + }, + "style-loader": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.23.1.tgz", + "integrity": "sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "schema-utils": "^1.0.0" + } + }, + "stylehacks": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.1.tgz", + "integrity": "sha512-TK5zEPeD9NyC1uPIdjikzsgWxdQQN/ry1X3d1iOz1UkYDCmcr928gWD1KHgyC27F50UnE0xCTrBOO1l6KR8M4w==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", + "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", + "dev": true, + "requires": { + "dot-prop": "^4.1.1", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "svgo": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.1.1.tgz", + "integrity": "sha512-GBkJbnTuFpM4jFbiERHDWhZc/S/kpHToqmZag3aEBjPYK44JAN2QBjvrGIxLOoCyMZjuFQIfTO2eJd8uwLY/9g==", + "dev": true, + "requires": { + "coa": "~2.0.1", + "colors": "~1.1.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "~0.1.0", + "css-tree": "1.0.0-alpha.28", + "css-url-regex": "^1.1.0", + "csso": "^3.5.0", + "js-yaml": "^3.12.0", + "mkdirp": "~0.5.1", + "object.values": "^1.0.4", + "sax": "~1.2.4", + "stable": "~0.1.6", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + }, + "dependencies": { + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + } + } + }, + "tapable": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.1.tgz", + "integrity": "sha512-9I2ydhj8Z9veORCw5PRm4u9uebCn0mcCa6scWoNcbZ6dAtoo2618u9UUzxgmsCOreJpqDDuv61LvwofW7hLcBA==", + "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": "*", + "fstream": "^1.0.2", + "inherits": "2" + } + }, + "tar-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", + "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", + "dev": true, + "requires": { + "bl": "^1.0.0", + "buffer-alloc": "^1.2.0", + "end-of-stream": "^1.0.0", + "fs-constants": "^1.0.0", + "readable-stream": "^2.3.0", + "to-buffer": "^1.1.1", + "xtend": "^4.0.0" + } + }, + "terser": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-3.14.1.tgz", + "integrity": "sha512-NSo3E99QDbYSMeJaEk9YW2lTg3qS9V0aKGlb+PlOrei1X02r1wSBHCNX/O+yeTRFSWPKPIGj6MqvvdqV4rnVGw==", + "dev": true, + "requires": { + "commander": "~2.17.1", + "source-map": "~0.6.1", + "source-map-support": "~0.5.6" + }, + "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 + } + } + }, + "terser-webpack-plugin": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.2.1.tgz", + "integrity": "sha512-GGSt+gbT0oKcMDmPx4SRSfJPE1XaN3kQRWG4ghxKQw9cn5G9x6aCKSsgYdvyM0na9NJ4Drv0RG6jbBByZ5CMjw==", + "dev": true, + "requires": { + "cacache": "^11.0.2", + "find-cache-dir": "^2.0.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^1.4.0", + "source-map": "^0.6.1", + "terser": "^3.8.1", + "webpack-sources": "^1.1.0", + "worker-farm": "^1.5.2" + }, + "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 + } + } + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "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.4" + } + }, + "timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", + "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-buffer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", + "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "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.0.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.5" + } + } + } + }, + "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" + } + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, + "requires": { + "psl": "^1.1.24", + "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.1", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.1.tgz", + "integrity": "sha512-4hjqbObwlh2dLyW4tcz0Ymw0ggoaVDMveUB9w8kFSQScdRLo0gxO9J7WFcUBo+W3C1TLdFIEwNOWebgZZ0RH9Q==", + "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.3", + "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz", + "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==", + "dev": true, + "requires": { + "glob": "^7.1.2" + } + }, + "tslib": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "dev": true + }, + "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.0.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 + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "uglify-js": { + "version": "3.4.9", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz", + "integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==", + "dev": true, + "requires": { + "commander": "~2.17.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 + } + } + }, + "uglifyjs-webpack-plugin": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-2.1.1.tgz", + "integrity": "sha512-TQEcyMNkObX/H+FfcKjiDgs5RcXX8vW2UUUrDTOfQgg3lrafztfeM5WAwXo+AzqozJK6NP9w98xNpG/dutzSsg==", + "dev": true, + "requires": { + "cacache": "^11.2.0", + "find-cache-dir": "^2.0.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^1.4.0", + "source-map": "^0.6.1", + "uglify-js": "^3.0.0", + "webpack-sources": "^1.1.0", + "worker-farm": "^1.5.2" + }, + "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 + } + } + }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.2.tgz", + "integrity": "sha512-Rx7yODZC1L/T8XKo/2kNzVAQaRE88AaMvI1EF/Xnj3GW2wzN6fop9DDWuFAKUVFH7vozkz26DzP0qyWLKLIVPQ==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.4.tgz", + "integrity": "sha512-2WSLa6OdYd2ng8oqiGIWnJqyFArvhn+5vgx5GTxMbUYjCYKUcuKS62YLFF0R/BDGlB1yzXjQOLtPAfHsgirEpg==", + "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.0" + } + }, + "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.1", + "to-object-path": "^0.3.0" + } + } + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", + "dev": true + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.1.tgz", + "integrity": "sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", + "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.0" + }, + "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.3", + "has-values": "^0.1.4", + "isobject": "^2.0.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.1.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", + "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==", + "dev": true + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "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 + } + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "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" + } + }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "dev": true + }, + "v8-compile-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz", + "integrity": "sha512-1wFuMUIM16MDJRCrpbpuEPTUGmM5QMUg0cr3KFwra2XgOgFcPGDQHDh3CszSCD2Zewc/dh/pamNEW8CbfDebUw==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "vendors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.2.tgz", + "integrity": "sha512-w/hry/368nO21AN9QljsaIhb9ZiZtZARoVH5f3CsFbawdLdayCgKRPup7CggujvySMxx0I91NOyxdVENohprLQ==", + "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.2.0" + } + }, + "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" + } + }, + "walkdir": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.0.11.tgz", + "integrity": "sha1-oW0CXrkxvQO1LzCMrtD0D86+lTI=", + "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.2", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + } + }, + "webpack": { + "version": "4.29.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.29.0.tgz", + "integrity": "sha512-pxdGG0keDBtamE1mNvT5zyBdx+7wkh6mh7uzMOo/uRQ/fhsdj5FXkh/j5mapzs060forql1oXqXN9HJGju+y7w==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-module-context": "1.7.11", + "@webassemblyjs/wasm-edit": "1.7.11", + "@webassemblyjs/wasm-parser": "1.7.11", + "acorn": "^6.0.5", + "acorn-dynamic-import": "^4.0.0", + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0", + "chrome-trace-event": "^1.0.0", + "enhanced-resolve": "^4.1.0", + "eslint-scope": "^4.0.0", + "json-parse-better-errors": "^1.0.2", + "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.1.0", + "terser-webpack-plugin": "^1.1.0", + "watchpack": "^1.5.0", + "webpack-sources": "^1.3.0" + }, + "dependencies": { + "schema-utils": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", + "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "webpack-archive-plugin": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/webpack-archive-plugin/-/webpack-archive-plugin-3.0.0.tgz", + "integrity": "sha1-kk8uX7/Ok4WjCRQ+dx/j+aZSbgA=", + "dev": true, + "requires": { + "archiver": "^1.3.0" + } + }, + "webpack-cli": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.2.1.tgz", + "integrity": "sha512-jeJveHwz/vwpJ3B8bxEL5a/rVKIpRNJDsKggfKnxuYeohNDW4Y/wB9N/XHJA093qZyS0r6mYL+/crLsIol4WKA==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "enhanced-resolve": "^4.1.0", + "findup-sync": "^2.0.0", + "global-modules": "^1.0.0", + "global-modules-path": "^2.3.0", + "import-local": "^2.0.0", + "interpret": "^1.1.0", + "lightercollective": "^0.1.0", + "loader-utils": "^1.1.0", + "supports-color": "^5.5.0", + "v8-compile-cache": "^2.0.2", + "yargs": "^12.0.4" + }, + "dependencies": { + "camelcase": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", + "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==", + "dev": true + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.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" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, + "requires": { + "invert-kv": "^2.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "mem": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.0.0.tgz", + "integrity": "sha512-WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA==", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^1.0.0", + "p-is-promise": "^1.1.0" + } + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "p-limit": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz", + "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "dev": true + }, + "yargs": { + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.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 || ^4.0.0", + "yargs-parser": "^11.1.1" + } + }, + "yargs-parser": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "webpack-sources": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz", + "integrity": "sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==", + "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 + } + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.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 + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "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", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "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.0" + } + }, + "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.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "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.0.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "xml-webpack-plugin": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/xml-webpack-plugin/-/xml-webpack-plugin-0.0.2.tgz", + "integrity": "sha1-b6C9B3mi1WVBS1nGx8PbbjzqcvI=", + "dev": true, + "requires": { + "ejs": "^2.5.6" + } + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "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": "10.1.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.1.2.tgz", + "integrity": "sha512-ivSoxqBGYOqQVruxD35+EyCFDYNEFL/Uo6FcOnz+9xZdZzK0Zzw4r4KhbrME1Oo2gOggwJod2MnsdamSG7H9ig==", + "dev": true, + "requires": { + "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": "^8.1.0" + } + }, + "yargs-parser": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz", + "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } + }, + "zip-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-1.2.0.tgz", + "integrity": "sha1-qLxF9MG0lpnGuQGYuqyqzbzUugQ=", + "dev": true, + "requires": { + "archiver-utils": "^1.3.0", + "compress-commons": "^1.2.0", + "lodash": "^4.8.0", + "readable-stream": "^2.0.0" + } + } + } +} diff --git a/to_be_removed/Cropper/package.json b/to_be_removed/Cropper/package.json new file mode 100644 index 0000000..fb0bfc2 --- /dev/null +++ b/to_be_removed/Cropper/package.json @@ -0,0 +1,52 @@ +{ + "name": "cropper", + "version": "1.2.0", + "description": "Image Cropping Widget", + "main": "index.js", + "scripts": { + "dev": "cross-env MODE=development webpack --config conf/webpack.config.js", + "build": "cross-env MODE=production webpack --config conf/webpack.config.js" + }, + "keywords": [ + "Mendix", + "widget", + "Dojo", + "Javascript", + "ES6", + "JQUERY" + ], + "author": { + "name": "Osama Najjar", + "email": "osama.najjar@mendix.com" + }, + "license": "MIT", + "devDependencies": { + "@babel/core": "^7.2.2", + "@babel/preset-env": "^7.2.3", + "autoprefixer": "^9.4.3", + "babel": "^6.23.0", + "babel-loader": "^8.0.4", + "babel-plugin-add-module-exports": "^1.0.0", + "concurrently": "^4.1.0", + "cross-env": "^5.2.0", + "css-loader": "^2.1.0", + "cssnano": "^4.1.8", + "file-loader": "^3.0.1", + "fs-extra": "^7.0.1", + "mini-css-extract-plugin": "^0.5.0", + "node-sass": "^4.11.0", + "postcss-clean": "^1.1.0", + "postcss-loader": "^3.0.0", + "sass-loader": "^7.1.0", + "style-loader": "^0.23.1", + "uglifyjs-webpack-plugin": "^2.1.1", + "webpack": "^4.28.2", + "webpack-archive-plugin": "^3.0.0", + "webpack-cli": "^3.1.2", + "xml-webpack-plugin": "0.0.2" + }, + "dependencies": { + "jquery": "^3.3.1", + "jquery-jcrop": "^0.9.13" + } +} diff --git a/to_be_removed/Cropper/src/Counter.js b/to_be_removed/Cropper/src/Counter.js new file mode 100644 index 0000000..2cc1611 --- /dev/null +++ b/to_be_removed/Cropper/src/Counter.js @@ -0,0 +1,44 @@ +import $ from "jquery"; + +export default function (widgetProps, mountingNode) { + + + // Counter Component wrapper + const counterWrapper = $("
").addClass("jquery-counter"); + + + // Header + const counterHeader = $("
").addClass("counter-header") + .append($("").text("•••")) + .append($("

").text(widgetProps.dummyKey)) + .append($("").text("•••")); + + + // Counter Count + const counterCount = $("

").addClass("counter-count").text("0"); + + // Controls wrapper + const controlsWrapper = $("
").addClass("controls-wrapper") + .append($("").addClass("counter-btn").text("-").click(e => { + const counter = $(counterWrapper).find("h1.counter-count"); + counter.text(parseInt(counter.text(), 10) - 1); + })) + .append($("").addClass("counter-btn").text("+").click(e => { + const counter = $(counterWrapper).find("h1.counter-count"); + counter.text(parseInt(counter.text(), 10) + 1); + })); + + + $(counterWrapper) + .append(counterHeader) + .append(counterCount) + .append(controlsWrapper); + + + + // mount counter to the dom + $(mountingNode).append(counterWrapper); + + + +}; \ No newline at end of file diff --git a/to_be_removed/Cropper/src/index.js b/to_be_removed/Cropper/src/index.js new file mode 100644 index 0000000..e0e8606 --- /dev/null +++ b/to_be_removed/Cropper/src/index.js @@ -0,0 +1,29 @@ +import _widgetBase from 'MxWidgetBase'; +import declare from 'dojoBaseDeclare'; +import * as widgetConf from '../conf/widget.config.json'; + +//import dependencies +import $ from "jquery"; +import jqueryJcrop from "../node_modules/jquery-jcrop/js/jquery.Jcrop"; +import jqueryJColor from "../node_modules/jquery-jcrop/js/jquery.color"; + +import './style/style.scss'; +import "../node_modules/jquery-jcrop/css/Jcrop.gif"; +import "../node_modules/jquery-jcrop/css/jquery.Jcrop.min.css"; + + +import Counter from './Counter'; + +export default declare(`${widgetConf.name}.widget.${widgetConf.name}`, [_widgetBase], { + constructor() {}, + postCreate() { + console.debug(`${this.id} >> postCreate`); + }, + update(contextObject, callback) { + console.debug(`${this.id} >> update`); + // Counter({ + // dummyKey: this.dummyKey + // }, this.domNode); + callback(); + } +}); \ No newline at end of file diff --git a/to_be_removed/Cropper/src/package.ejs b/to_be_removed/Cropper/src/package.ejs new file mode 100644 index 0000000..69224ba --- /dev/null +++ b/to_be_removed/Cropper/src/package.ejs @@ -0,0 +1,12 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/to_be_removed/Cropper/src/style/_app.scss b/to_be_removed/Cropper/src/style/_app.scss new file mode 100644 index 0000000..64de66e --- /dev/null +++ b/to_be_removed/Cropper/src/style/_app.scss @@ -0,0 +1,57 @@ +.jquery-counter { + background-color: rgba(0, 0, 0, .5); + border-bottom: 5px solid #6d026d; + font-family: "Ubuntu", sans-serif; + margin-bottom: 15px; + + .counter-header { + padding: 10px; + text-align: center; + + h1 { + color: #fff; + display: inline; + font-size: 35px; + font-weight: bold; + margin: 0 10px; + user-select: none; + } + + span { + color: purple; + display: inline; + font-size: 50px; + position: relative; + text-shadow: 0 0 70px; + top: 7px; + } + } + + .counter-count { + font-size: 80px; + font-weight: bold; + text-align: center; + color: purple; + -webkit-text-stroke: 4px #fff; + } + + .controls-wrapper { + display: flex; + } + + .counter-btn { + background-color: purple; + border: none; + color: #fff; + font-size: 35px; + font-weight: bold; + padding: 0 30px; + text-align: center; + transition: all .2s ease-in-out; + width: 50%; + + &:hover { + background-color: #6d026d; + } + } +} \ No newline at end of file diff --git a/to_be_removed/Cropper/src/style/style.scss b/to_be_removed/Cropper/src/style/style.scss new file mode 100644 index 0000000..eac6e07 --- /dev/null +++ b/to_be_removed/Cropper/src/style/style.scss @@ -0,0 +1 @@ +@import "./app"; \ No newline at end of file diff --git a/to_be_removed/Cropper/src/widget.config.ejs b/to_be_removed/Cropper/src/widget.config.ejs new file mode 100644 index 0000000..72e9437 --- /dev/null +++ b/to_be_removed/Cropper/src/widget.config.ejs @@ -0,0 +1,53 @@ + + + <%= FRIENDLY_NAME %> + <%= WIDGET_DESC %> + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAFo9M/3AAAAGXRFWHRTb2Z0d2Fy + ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAnJJREFUeNpi/P//PwMIMIGI4hV3/wME + ECNMhKVk9f3/jy4fYwAIILDIuruf/zMxszLcPHOcASzw7NkzsLpPzBIMAAEE1wMD + LF++/vi/5+VvBmYWDobJPRs/MvHycDIEKvMx+MmzAeX/Q+x7+vQpWPm/fwwMAAEE + NuPu/fv/xMUkGf+BBBkYwRL/gKrj6zZ/YAGpFAZK7n0JEvrP8Ofvf4ZQNV6GlqVb + GH7/ZWAEKxAE2gMzFgau3P2B8CMIxLUd/SgtLQ2mQfzXL/995GNnWAAQQBj+QAdM + kVVrXn7+8uX/Z6D/PgDx+y8//7/5/PP/y/efwDqZnrz9y96/8TDDvlf/GA68+s8g + xMvBIMrHwcDAyIZwAxMjiAR57zfc6H///0KCDkTURnsxFK+6BxIFCxYtvwMMNIj7 + Wf4hhRxYEsiecAIUqFBHgoMNDSRZSwJVMEJMkBRgmQX0f6lz9iqw//dODeMHsdlZ + GRi29ocyAAQYOBxialb3/v3DGP3u21+OLz+xBAaaJZzsDAx8nAzz13WHF4I98frT + v+TVrd782f2LGQxkBRjYmf8x/P0PVMXEDw4BMAYSzEBcG+HC8Orjd4bomi2JQK0Q + A76BbGViYdDR0mDQtXIAuh81drxlmMH01id/GTpW72P4Cw6t/4hgBAFgImF49voe + g+gjDYbf//6Aw/nTz5cMv/7KMDTvegJW8+TuNYbP758z/EfyEgvMi6DALPf3hJrM + DMWycIWgoP/0WYjh8Qt2BmT3gQ34D9KNP00xPL56HEy/enAVqNYLHntgA/g5mT7+ + +/OdH58B0wq8oSwfhj9/fjKwszKCrSSYnAkBAI6BFI36e9AtAAAAAElFTkSuQmCC + + + + Max width + Appearance + The maximum width that the crop screen will stretch to. USe 0 for no maximum width. + + + Max height + Appearance + The maximum height that the crop screen will stretch to. USe 0 for no maximum height. + + + Aspect Ratio + Crop selection + The aspect ratio to enforce on the selection box. + + + + + + + Start height + Crop selection + The height the crop selection box will start off at. + + + Start width + Crop selection + The width the crop selection box will start off at. + + + From 0f40f0ded53124bd25f45f3e056ea465848bba8d Mon Sep 17 00:00:00 2001 From: Osama Najjar Date: Mon, 28 Jan 2019 13:54:11 +0100 Subject: [PATCH 02/32] enable having local conf --- to_be_removed/Cropper/.gitignore | 2 ++ to_be_removed/Cropper/conf/paths.js | 17 ++++++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/to_be_removed/Cropper/.gitignore b/to_be_removed/Cropper/.gitignore index 8627120..6780d98 100644 --- a/to_be_removed/Cropper/.gitignore +++ b/to_be_removed/Cropper/.gitignore @@ -5,3 +5,5 @@ dist/ test/* !test/widgets !test/TestHyperMxWidget.mpr + +.mxlocal.config.js \ No newline at end of file diff --git a/to_be_removed/Cropper/conf/paths.js b/to_be_removed/Cropper/conf/paths.js index dbc18df..ff0c94e 100644 --- a/to_be_removed/Cropper/conf/paths.js +++ b/to_be_removed/Cropper/conf/paths.js @@ -1,4 +1,11 @@ const path = require('path'); +let localConfFilePath = "../.mxlocal.config", + localConf = false; +if (moduleExists(localConfFilePath)) { + localConf = require(localConfFilePath); +} +// if there is a local conf then use it otherwise use the default/general +const mxProjectRootDir = localConf && localConf.mxProjectRootDir ? localConf.mxProjectRootDir : ""; module.exports = { srcDir: path.join(__dirname, '..', 'src'), @@ -6,7 +13,15 @@ module.exports = { confDir: __dirname, distDir: path.join(__dirname, '..', 'dist'), buildDir: path.join(__dirname, '..', 'build'), - mxProjectRootDir: false, // + mxProjectRootDir, widgetPackageXML: path.join(__dirname, '..', 'src', 'package.ejs'), widgetConfigXML: path.join(__dirname, '..', 'src', 'widget.config.ejs') }; + +function moduleExists(modulePath) { + try { + return require.resolve(modulePath); + } catch (e) { + return false; + } +} \ No newline at end of file From bc63995b74ea06bc37733dd5418a67f9ff0a0829 Mon Sep 17 00:00:00 2001 From: Osama Najjar Date: Mon, 28 Jan 2019 14:00:37 +0100 Subject: [PATCH 03/32] cleanup boilerplate code --- to_be_removed/Cropper/src/Counter.js | 44 ---------------------------- to_be_removed/Cropper/src/index.js | 6 +--- 2 files changed, 1 insertion(+), 49 deletions(-) delete mode 100644 to_be_removed/Cropper/src/Counter.js diff --git a/to_be_removed/Cropper/src/Counter.js b/to_be_removed/Cropper/src/Counter.js deleted file mode 100644 index 2cc1611..0000000 --- a/to_be_removed/Cropper/src/Counter.js +++ /dev/null @@ -1,44 +0,0 @@ -import $ from "jquery"; - -export default function (widgetProps, mountingNode) { - - - // Counter Component wrapper - const counterWrapper = $("
").addClass("jquery-counter"); - - - // Header - const counterHeader = $("
").addClass("counter-header") - .append($("").text("•••")) - .append($("

").text(widgetProps.dummyKey)) - .append($("").text("•••")); - - - // Counter Count - const counterCount = $("

").addClass("counter-count").text("0"); - - // Controls wrapper - const controlsWrapper = $("
").addClass("controls-wrapper") - .append($("").addClass("counter-btn").text("-").click(e => { - const counter = $(counterWrapper).find("h1.counter-count"); - counter.text(parseInt(counter.text(), 10) - 1); - })) - .append($("").addClass("counter-btn").text("+").click(e => { - const counter = $(counterWrapper).find("h1.counter-count"); - counter.text(parseInt(counter.text(), 10) + 1); - })); - - - $(counterWrapper) - .append(counterHeader) - .append(counterCount) - .append(controlsWrapper); - - - - // mount counter to the dom - $(mountingNode).append(counterWrapper); - - - -}; \ No newline at end of file diff --git a/to_be_removed/Cropper/src/index.js b/to_be_removed/Cropper/src/index.js index e0e8606..9faa90d 100644 --- a/to_be_removed/Cropper/src/index.js +++ b/to_be_removed/Cropper/src/index.js @@ -12,8 +12,6 @@ import "../node_modules/jquery-jcrop/css/Jcrop.gif"; import "../node_modules/jquery-jcrop/css/jquery.Jcrop.min.css"; -import Counter from './Counter'; - export default declare(`${widgetConf.name}.widget.${widgetConf.name}`, [_widgetBase], { constructor() {}, postCreate() { @@ -21,9 +19,7 @@ export default declare(`${widgetConf.name}.widget.${widgetConf.name}`, [_widgetB }, update(contextObject, callback) { console.debug(`${this.id} >> update`); - // Counter({ - // dummyKey: this.dummyKey - // }, this.domNode); + callback(); } }); \ No newline at end of file From fb0ade32259687d72f8d9913c84e70fc25f1284c Mon Sep 17 00:00:00 2001 From: Osama Najjar Date: Mon, 28 Jan 2019 14:01:12 +0100 Subject: [PATCH 04/32] set widget name --- to_be_removed/Cropper/conf/widget.config.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/to_be_removed/Cropper/conf/widget.config.json b/to_be_removed/Cropper/conf/widget.config.json index 2b2ce6a..41f455c 100644 --- a/to_be_removed/Cropper/conf/widget.config.json +++ b/to_be_removed/Cropper/conf/widget.config.json @@ -1,5 +1,5 @@ { - "name": "Image Cropper", - "friendlyName": "Cropper", + "name": "Cropper", + "friendlyName": "Image Cropper", "description": "Image cropper." } \ No newline at end of file From e99d8d18a6577713d809d7718ff8b7aea43b2168 Mon Sep 17 00:00:00 2001 From: Osama Najjar Date: Mon, 28 Jan 2019 16:23:16 +0100 Subject: [PATCH 05/32] added imports-loader to handle jQuery plugins --- to_be_removed/Cropper/package-lock.json | 18 ++++++++++++++++++ to_be_removed/Cropper/package.json | 1 + 2 files changed, 19 insertions(+) diff --git a/to_be_removed/Cropper/package-lock.json b/to_be_removed/Cropper/package-lock.json index c046b22..c64ecf2 100644 --- a/to_be_removed/Cropper/package-lock.json +++ b/to_be_removed/Cropper/package-lock.json @@ -4274,6 +4274,24 @@ "resolve-cwd": "^2.0.0" } }, + "imports-loader": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/imports-loader/-/imports-loader-0.8.0.tgz", + "integrity": "sha512-kXWL7Scp8KQ4552ZcdVTeaQCZSLW+e6nJfp3cwUMB673T7Hr98Xjx5JK+ql7ADlJUvj1JS5O01RLbKoutN5QDQ==", + "dev": true, + "requires": { + "loader-utils": "^1.0.2", + "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 + } + } + }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", diff --git a/to_be_removed/Cropper/package.json b/to_be_removed/Cropper/package.json index fb0bfc2..bad68c1 100644 --- a/to_be_removed/Cropper/package.json +++ b/to_be_removed/Cropper/package.json @@ -33,6 +33,7 @@ "cssnano": "^4.1.8", "file-loader": "^3.0.1", "fs-extra": "^7.0.1", + "imports-loader": "^0.8.0", "mini-css-extract-plugin": "^0.5.0", "node-sass": "^4.11.0", "postcss-clean": "^1.1.0", From a6f3d5d80bcd20d4caf70b0b61a98566e6eadb31 Mon Sep 17 00:00:00 2001 From: Osama Najjar Date: Mon, 28 Jan 2019 16:33:34 +0100 Subject: [PATCH 06/32] imported jquery plugins --- to_be_removed/Cropper/src/index.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/to_be_removed/Cropper/src/index.js b/to_be_removed/Cropper/src/index.js index 9faa90d..17c77a3 100644 --- a/to_be_removed/Cropper/src/index.js +++ b/to_be_removed/Cropper/src/index.js @@ -4,8 +4,8 @@ import * as widgetConf from '../conf/widget.config.json'; //import dependencies import $ from "jquery"; -import jqueryJcrop from "../node_modules/jquery-jcrop/js/jquery.Jcrop"; -import jqueryJColor from "../node_modules/jquery-jcrop/js/jquery.color"; +require('imports-loader?jQuery=jquery!../node_modules/jquery-jcrop/js/jquery.Jcrop'); +require('imports-loader?jQuery=jquery!../node_modules/jquery-jcrop/js/jquery.color'); import './style/style.scss'; import "../node_modules/jquery-jcrop/css/Jcrop.gif"; @@ -16,10 +16,14 @@ export default declare(`${widgetConf.name}.widget.${widgetConf.name}`, [_widgetB constructor() {}, postCreate() { console.debug(`${this.id} >> postCreate`); + }, update(contextObject, callback) { console.debug(`${this.id} >> update`); - callback(); } -}); \ No newline at end of file +}); +/** + * + * + */ \ No newline at end of file From 94ae73dc136b0245dbe24d365fd131587c775195 Mon Sep 17 00:00:00 2001 From: Osama Najjar Date: Mon, 28 Jan 2019 16:59:09 +0100 Subject: [PATCH 07/32] refactored update life cycle method & adding subscription --- to_be_removed/Cropper/src/index.js | 487 ++++++++++++++++++++++++++++- 1 file changed, 484 insertions(+), 3 deletions(-) diff --git a/to_be_removed/Cropper/src/index.js b/to_be_removed/Cropper/src/index.js index 17c77a3..af0129f 100644 --- a/to_be_removed/Cropper/src/index.js +++ b/to_be_removed/Cropper/src/index.js @@ -1,29 +1,510 @@ import _widgetBase from 'MxWidgetBase'; import declare from 'dojoBaseDeclare'; import * as widgetConf from '../conf/widget.config.json'; +import { + get as domAttrGet, + set as domAttrSet +} from 'dojo/dom-attr'; +import { + create as domCreate, + place as domPlace, + empty as domEmpty +} from 'dojo/dom-construct'; + +import { + hitch +} from 'dojo/_base/lang'; + //import dependencies import $ from "jquery"; require('imports-loader?jQuery=jquery!../node_modules/jquery-jcrop/js/jquery.Jcrop'); require('imports-loader?jQuery=jquery!../node_modules/jquery-jcrop/js/jquery.color'); - import './style/style.scss'; import "../node_modules/jquery-jcrop/css/Jcrop.gif"; import "../node_modules/jquery-jcrop/css/jquery.Jcrop.min.css"; export default declare(`${widgetConf.name}.widget.${widgetConf.name}`, [_widgetBase], { + + // INTERNAL + _mxObj: null, + context: null, + imgNode: null, + imgObj: null, + fileID: null, + aspectR: 0, + scaleRatio: 1, + + _c: null, + _cropApi: null, constructor() {}, postCreate() { console.debug(`${this.id} >> postCreate`); - + domAttrSet(this.domNode, "tabIndex", -1); }, update(contextObject, callback) { console.debug(`${this.id} >> update`); - callback(); + if (contextObject) { + this._mxObj = contextObject; + this._renderCropper(); + this._addSubscriptions(); + } else { + this._handleError(`${widgetConf.name} should be initiated in a nonempty context object.`); + } + if (callback && typeof callback === "function") { + callback(); + } + }, + + _addSubscriptions() { + console.debug(`${this.id} >> _addSubscriptions`); + this.unsubscribeAll(); + this.subscribe({ + guid: this._mxObj.getGuid(), + callback: hitch(this, () => { + console.debug(`${this.id} >> subscription has been set successfully`); + + this.reloadImage(); + }) + }); + }, + + _renderCropper: function () { + logger.debug('cropper.widget.cropper _renderCropper'); + if (!this._mxObj) { + return; + } + this.imgObj = this._mxObj; + this.fileID = this._mxObj.get('FileID'); + + this.constructImageHelper(); + }, + + reloadImage: function () { + logger.debug('cropper.widget.cropper reloadImage'); + this.scaleRatio = 1; + this.constructImageHelper(); + }, + + constructImageHelper: function () { + logger.debug('cropper.widget.cropper constructImageHelper'); + var src = '/file?fileID=' + this.fileID + '&' + (+new Date()).toString(36); + + if (this.imgNode === null) { + dojo.empty(this.domNode); + + this.imgNode = dom.create('img', { + 'src': src + }); // New date to kill caching + + domStyle.set(this.imgNode, { + 'left': '-50000px', + 'position': 'absolute' + }); + + this.imgNode.onload = lang.hitch(this, this.loadCrop); + this.domNode.appendChild(this.imgNode); + } else { + console.log('set'); + domAttr.set(this.imgNode, 'src', src); + if (this._cropApi) { + this._cropApi.setImage(src); + } + } + }, + + loadCrop: function () { + logger.debug('cropper.widget.cropper loadCrop'); + var aspectArr = this.imgObj.get(this.aspectRatio).split(':'); + + if (aspectArr === null) { + aspectArr = ""; + } + + this.aspectR = 0; + if (aspectArr.length === 2) { + var a = parseInt(aspectArr[0], 10), + b = parseInt(aspectArr[1], 10); + this.aspectR = (isNaN(a) ? 0 : a) / (isNaN(b) ? 1 : b); + } else { + var aR = parseInt(this.aspectRatio, 10); + this.aspectR = isNaN(aR) ? 0 : aR; + } + + //this.aspectR = (aspectArr.length === 2) ? parseInt(aspectArr[0], 10) / parseInt(aspectArr[1], 10) : parseInt(this.aspectRatio, 10); + + if (this.imgNode.offsetWidth > this.cropwidth || this.imgNode.offsetHeight > this.cropheight) { + if (this.imgNode.offsetWidth >= this.imgNode.offsetHeight) { + this.scaleRatio = this.cropwidth / this.imgNode.offsetWidth; + if (this.scaleRatio === 0) { + this.scaleRatio = 1; + } + domStyle.set(this.imgNode, { + 'width': this.cropwidth + 'px', + 'height': this.scaleRatio * this.imgNode.offsetHeight + 'px' + }); + } else { + this.scaleRatio = this.cropheight / this.imgNode.offsetHeight; + domStyle.set(this.imgNode, { + 'width': this.scaleRatio * this.imgNode.offsetWidth + 'px', + 'height': this.cropheight + 'px' + }); + } + } + + if (this.scaleRatio === 0) { + this.scaleRatio = 1; + } + + domStyle.set(this.imgNode, 'left', '0px'); + var setSelectArr = []; + var existingAttrs = []; + existingAttrs.push(this.imgObj.get('crop_x1')); + existingAttrs.push(this.imgObj.get('crop_y1')); + existingAttrs.push(this.imgObj.get('crop_x2')); + existingAttrs.push(this.imgObj.get('crop_y2')); + + if (Math.max.apply(Math, existingAttrs) > 0) { + setSelectArr = existingAttrs; + } else if (this.startwidth > 0 && this.startheight > 0) { + var width = Math.min(this.startwidth, this.imgNode.offsetWidth); + var height = Math.min(this.startheight, this.imgNode.offsetHeight); + setSelectArr.push(width); + setSelectArr.push(height); + setSelectArr.push(0); + setSelectArr.push(0); + this.changeObj(0, width, 0, height, height, width); + } else { + setSelectArr = undefined; + } + + try { + var _this = this; + // this._cropApi.destroy(); + // this._cropApi = null; + _jQuery(this.imgNode).Jcrop({ + onSelect: lang.hitch(this, this.cropOnSelect), + bgColor: 'black', + bgOpacity: 0.4, + setSelect: setSelectArr, + aspectRatio: this.aspectR + }, function () { + _this._cropApi = this; + console.log(this); + }); + } catch (e) { + logger.warn("Errors while loading JCrop:" + e); + } + }, + + cropOnSelect: function (c) { + logger.debug('cropper.widget.cropper cropOnSelect', c); + this.changeObj(c); + }, + + _changedCrop: function (c) { + if ( + this._c === null || + (this._c.x !== c.x || this._c.x2 !== c.x2 || + this._c.y !== c.y || this._c.y2 !== c.y2 || + this._c.h !== c.h || this._c.w !== c.w) + ) { + this._c = c; + return true; + } + return false; + }, + + changeObj: function (c) { + logger.debug('cropper.widget.cropper changeObj', this.scaleRatio); + if (this.imgObj && c.x < 10000 && c.x2 < 10000 && c.y < 10000 && c.y2 < 10000 && this.scaleRatio > 0) { + this.imgObj.set('crop_x1', Math.round(c.x / this.scaleRatio)); + this.imgObj.set('crop_x2', Math.round(c.x2 / this.scaleRatio)); + this.imgObj.set('crop_y1', Math.round(c.y / this.scaleRatio)); + this.imgObj.set('crop_y2', Math.round(c.y2 / this.scaleRatio)); + this.imgObj.set('crop_height', Math.round(c.h / this.scaleRatio)); + this.imgObj.set('crop_width', Math.round(c.w / this.scaleRatio)); + if (this._changedCrop(c)) { + mx.data.commit({ + mxobj: this.imgObj, + callback: function () { + logger.debug('cropper.widget.cropper changeObj.commit'); + } + }, this); + } + } + }, + + objectUpdateNotification: function () { + logger.debug('cropper.widget.cropper objectUpdateNotification'); + if (this.imgObj !== null) { + this.reloadImage(); + } + }, + + objChanged: function (objId) { + logger.debug('cropper.widget.cropper objChanged'); + mx.data.get({ + guid: objId, + callback: lang.hitch(this, this.objectUpdateNotification) + }, this); + }, + + uninitialize: function () { + logger.debug('cropper.widget.cropper uninitialize'); + this.unsubscribeAll(); + }, + _handleError(errorMessage) { + domEmpty(this.domNode); + const errorMessageNode = domCreate("div", { + class: "alert alert-danger", + innerText: errorMessage + }); + domPlace(errorMessageNode, this.domNode); } + }); /** + * templateString: widgetTemplate, + + // INTERNAL + _mxObj: null, + context : null, + imgNode : null, + imgObj : null, + fileID : null, + aspectR : 0, + scaleRatio : 1, + _hasStarted : false, + + _c: null, + _cropApi: null, + + startup: function () { + logger.debug('cropper.widget.cropper startup'); + if (this._hasStarted) { + return; + } + + this._hasStarted = true; + this.domNode['tabIndex'] = -1; + }, + + update: function (obj, callback) { + logger.debug('cropper.widget.cropper update', obj); + this._handles = []; + + this._mxObj = obj; + this._renderCropper(); + + this._addSubscriptions(); + if (typeof callback !== 'undefined') { + callback(); + } + }, + + _addSubscriptions: function () { + logger.debug('cropper.widget.cropper addSubscriptions'); + this.unsubscribeAll(); + if (!this._mxObj) { + return; + } + this.subscribe({ + guid : this._mxObj.getGuid(), + callback : lang.hitch(this, function () { + logger.debug(this.id + ".subscription fired _addSubscriptions"); + this.reloadImage(); + }) + }); + }, + + _renderCropper: function () { + logger.debug('cropper.widget.cropper _renderCropper'); + if (!this._mxObj) { + return; + } + this.imgObj = this._mxObj; + this.fileID = this._mxObj.get('FileID'); + + this.constructImageHelper(); + }, + + reloadImage : function () { + logger.debug('cropper.widget.cropper reloadImage'); + this.scaleRatio = 1; + this.constructImageHelper(); + }, + + constructImageHelper : function() { + logger.debug('cropper.widget.cropper constructImageHelper'); + var src = '/file?fileID=' + this.fileID + '&' + (+new Date()).toString(36); + + if (this.imgNode === null) { + dojo.empty(this.domNode); + + this.imgNode = dom.create('img', { + 'src' : src + }); // New date to kill caching + + domStyle.set(this.imgNode, { + 'left': '-50000px', + 'position' : 'absolute' + }); + + this.imgNode.onload = lang.hitch(this, this.loadCrop); + this.domNode.appendChild(this.imgNode); + } else { + console.log('set'); + domAttr.set(this.imgNode, 'src', src); + if (this._cropApi) { + this._cropApi.setImage(src); + } + } + }, + + loadCrop : function () { + logger.debug('cropper.widget.cropper loadCrop'); + var aspectArr = this.imgObj.get(this.aspectRatio).split(':'); + + if (aspectArr === null) { + aspectArr = ""; + } + + this.aspectR = 0; + if (aspectArr.length === 2) { + var a = parseInt(aspectArr[0], 10), + b = parseInt(aspectArr[1], 10); + this.aspectR = (isNaN(a) ? 0 : a) / (isNaN(b) ? 1 : b); + } else { + var aR = parseInt(this.aspectRatio, 10); + this.aspectR = isNaN(aR) ? 0 : aR; + } + + //this.aspectR = (aspectArr.length === 2) ? parseInt(aspectArr[0], 10) / parseInt(aspectArr[1], 10) : parseInt(this.aspectRatio, 10); + + if (this.imgNode.offsetWidth > this.cropwidth || this.imgNode.offsetHeight > this.cropheight) { + if (this.imgNode.offsetWidth >= this.imgNode.offsetHeight) { + this.scaleRatio = this.cropwidth / this.imgNode.offsetWidth; + if (this.scaleRatio === 0) { + this.scaleRatio = 1; + } + domStyle.set(this.imgNode, { + 'width' : this.cropwidth+'px', + 'height' : this.scaleRatio*this.imgNode.offsetHeight+'px' + }); + } else { + this.scaleRatio = this.cropheight / this.imgNode.offsetHeight; + domStyle.set(this.imgNode, { + 'width' : this.scaleRatio*this.imgNode.offsetWidth+'px', + 'height' : this.cropheight+'px' + }); + } + } + + if (this.scaleRatio === 0) { + this.scaleRatio = 1; + } + + domStyle.set(this.imgNode, 'left', '0px'); + var setSelectArr = []; + var existingAttrs = []; + existingAttrs.push(this.imgObj.get('crop_x1')); + existingAttrs.push(this.imgObj.get('crop_y1')); + existingAttrs.push(this.imgObj.get('crop_x2')); + existingAttrs.push(this.imgObj.get('crop_y2')); + + if (Math.max.apply(Math, existingAttrs) > 0) { + setSelectArr = existingAttrs; + } else if (this.startwidth > 0 && this.startheight > 0) { + var width = Math.min(this.startwidth, this.imgNode.offsetWidth); + var height = Math.min(this.startheight, this.imgNode.offsetHeight); + setSelectArr.push(width); + setSelectArr.push(height); + setSelectArr.push(0); + setSelectArr.push(0); + this.changeObj(0, width, 0, height, height, width); + } else { + setSelectArr = undefined; + } + + try { + var _this = this; + // this._cropApi.destroy(); + // this._cropApi = null; + _jQuery(this.imgNode).Jcrop({ + onSelect : lang.hitch(this, this.cropOnSelect), + bgColor: 'black', + bgOpacity: 0.4, + setSelect: setSelectArr, + aspectRatio: this.aspectR + }, function () { + _this._cropApi = this; + console.log(this); + }); + } + catch (e) { + logger.warn("Errors while loading JCrop:" + e); + } + }, + + cropOnSelect : function (c) { + logger.debug('cropper.widget.cropper cropOnSelect', c); + this.changeObj(c); + }, + + _changedCrop: function (c) { + if ( + this._c === null || + (this._c.x !== c.x || this._c.x2 !== c.x2 || + this._c.y !== c.y || this._c.y2 !== c.y2 || + this._c.h !== c.h || this._c.w !== c.w) + ) { + this._c = c; + return true; + } + return false; + }, + + changeObj : function (c) { + logger.debug('cropper.widget.cropper changeObj', this.scaleRatio); + if (this.imgObj && c.x < 10000 && c.x2 < 10000 && c.y < 10000 && c.y2 < 10000 && this.scaleRatio > 0) { + this.imgObj.set('crop_x1', Math.round(c.x/this.scaleRatio)); + this.imgObj.set('crop_x2', Math.round(c.x2/this.scaleRatio)); + this.imgObj.set('crop_y1', Math.round(c.y/this.scaleRatio)); + this.imgObj.set('crop_y2', Math.round(c.y2/this.scaleRatio)); + this.imgObj.set('crop_height', Math.round(c.h/this.scaleRatio)); + this.imgObj.set('crop_width', Math.round(c.w/this.scaleRatio)); + if (this._changedCrop(c)) { + mx.data.commit({ + mxobj: this.imgObj, + callback: function () { + logger.debug('cropper.widget.cropper changeObj.commit'); + } + }, this); + } + } + }, + + objectUpdateNotification : function () { + logger.debug('cropper.widget.cropper objectUpdateNotification'); + if (this.imgObj !== null) { + this.reloadImage(); + } + }, + + objChanged : function (objId) { + logger.debug('cropper.widget.cropper objChanged'); + mx.data.get({ + guid : objId, + callback : lang.hitch(this, this.objectUpdateNotification) + }, this); + }, + + uninitialize: function () { + logger.debug('cropper.widget.cropper uninitialize'); + this.unsubscribeAll(); + } * * */ \ No newline at end of file From 2c1f5067471cdb5cb1c3dfe7f30e1fc9d2de0c30 Mon Sep 17 00:00:00 2001 From: Osama Najjar Date: Mon, 28 Jan 2019 17:00:16 +0100 Subject: [PATCH 08/32] cleanup --- to_be_removed/Cropper/src/index.js | 254 +---------------------------- 1 file changed, 4 insertions(+), 250 deletions(-) diff --git a/to_be_removed/Cropper/src/index.js b/to_be_removed/Cropper/src/index.js index af0129f..c6e765e 100644 --- a/to_be_removed/Cropper/src/index.js +++ b/to_be_removed/Cropper/src/index.js @@ -64,17 +64,14 @@ export default declare(`${widgetConf.name}.widget.${widgetConf.name}`, [_widgetB guid: this._mxObj.getGuid(), callback: hitch(this, () => { console.debug(`${this.id} >> subscription has been set successfully`); - this.reloadImage(); }) }); }, - _renderCropper: function () { - logger.debug('cropper.widget.cropper _renderCropper'); - if (!this._mxObj) { - return; - } + _renderCropper() { + console.debug(`${this.id} >> _renderCropper`); + this.imgObj = this._mxObj; this.fileID = this._mxObj.get('FileID'); @@ -264,247 +261,4 @@ export default declare(`${widgetConf.name}.widget.${widgetConf.name}`, [_widgetB domPlace(errorMessageNode, this.domNode); } -}); -/** - * templateString: widgetTemplate, - - // INTERNAL - _mxObj: null, - context : null, - imgNode : null, - imgObj : null, - fileID : null, - aspectR : 0, - scaleRatio : 1, - _hasStarted : false, - - _c: null, - _cropApi: null, - - startup: function () { - logger.debug('cropper.widget.cropper startup'); - if (this._hasStarted) { - return; - } - - this._hasStarted = true; - this.domNode['tabIndex'] = -1; - }, - - update: function (obj, callback) { - logger.debug('cropper.widget.cropper update', obj); - this._handles = []; - - this._mxObj = obj; - this._renderCropper(); - - this._addSubscriptions(); - if (typeof callback !== 'undefined') { - callback(); - } - }, - - _addSubscriptions: function () { - logger.debug('cropper.widget.cropper addSubscriptions'); - this.unsubscribeAll(); - if (!this._mxObj) { - return; - } - this.subscribe({ - guid : this._mxObj.getGuid(), - callback : lang.hitch(this, function () { - logger.debug(this.id + ".subscription fired _addSubscriptions"); - this.reloadImage(); - }) - }); - }, - - _renderCropper: function () { - logger.debug('cropper.widget.cropper _renderCropper'); - if (!this._mxObj) { - return; - } - this.imgObj = this._mxObj; - this.fileID = this._mxObj.get('FileID'); - - this.constructImageHelper(); - }, - - reloadImage : function () { - logger.debug('cropper.widget.cropper reloadImage'); - this.scaleRatio = 1; - this.constructImageHelper(); - }, - - constructImageHelper : function() { - logger.debug('cropper.widget.cropper constructImageHelper'); - var src = '/file?fileID=' + this.fileID + '&' + (+new Date()).toString(36); - - if (this.imgNode === null) { - dojo.empty(this.domNode); - - this.imgNode = dom.create('img', { - 'src' : src - }); // New date to kill caching - - domStyle.set(this.imgNode, { - 'left': '-50000px', - 'position' : 'absolute' - }); - - this.imgNode.onload = lang.hitch(this, this.loadCrop); - this.domNode.appendChild(this.imgNode); - } else { - console.log('set'); - domAttr.set(this.imgNode, 'src', src); - if (this._cropApi) { - this._cropApi.setImage(src); - } - } - }, - - loadCrop : function () { - logger.debug('cropper.widget.cropper loadCrop'); - var aspectArr = this.imgObj.get(this.aspectRatio).split(':'); - - if (aspectArr === null) { - aspectArr = ""; - } - - this.aspectR = 0; - if (aspectArr.length === 2) { - var a = parseInt(aspectArr[0], 10), - b = parseInt(aspectArr[1], 10); - this.aspectR = (isNaN(a) ? 0 : a) / (isNaN(b) ? 1 : b); - } else { - var aR = parseInt(this.aspectRatio, 10); - this.aspectR = isNaN(aR) ? 0 : aR; - } - - //this.aspectR = (aspectArr.length === 2) ? parseInt(aspectArr[0], 10) / parseInt(aspectArr[1], 10) : parseInt(this.aspectRatio, 10); - - if (this.imgNode.offsetWidth > this.cropwidth || this.imgNode.offsetHeight > this.cropheight) { - if (this.imgNode.offsetWidth >= this.imgNode.offsetHeight) { - this.scaleRatio = this.cropwidth / this.imgNode.offsetWidth; - if (this.scaleRatio === 0) { - this.scaleRatio = 1; - } - domStyle.set(this.imgNode, { - 'width' : this.cropwidth+'px', - 'height' : this.scaleRatio*this.imgNode.offsetHeight+'px' - }); - } else { - this.scaleRatio = this.cropheight / this.imgNode.offsetHeight; - domStyle.set(this.imgNode, { - 'width' : this.scaleRatio*this.imgNode.offsetWidth+'px', - 'height' : this.cropheight+'px' - }); - } - } - - if (this.scaleRatio === 0) { - this.scaleRatio = 1; - } - - domStyle.set(this.imgNode, 'left', '0px'); - var setSelectArr = []; - var existingAttrs = []; - existingAttrs.push(this.imgObj.get('crop_x1')); - existingAttrs.push(this.imgObj.get('crop_y1')); - existingAttrs.push(this.imgObj.get('crop_x2')); - existingAttrs.push(this.imgObj.get('crop_y2')); - - if (Math.max.apply(Math, existingAttrs) > 0) { - setSelectArr = existingAttrs; - } else if (this.startwidth > 0 && this.startheight > 0) { - var width = Math.min(this.startwidth, this.imgNode.offsetWidth); - var height = Math.min(this.startheight, this.imgNode.offsetHeight); - setSelectArr.push(width); - setSelectArr.push(height); - setSelectArr.push(0); - setSelectArr.push(0); - this.changeObj(0, width, 0, height, height, width); - } else { - setSelectArr = undefined; - } - - try { - var _this = this; - // this._cropApi.destroy(); - // this._cropApi = null; - _jQuery(this.imgNode).Jcrop({ - onSelect : lang.hitch(this, this.cropOnSelect), - bgColor: 'black', - bgOpacity: 0.4, - setSelect: setSelectArr, - aspectRatio: this.aspectR - }, function () { - _this._cropApi = this; - console.log(this); - }); - } - catch (e) { - logger.warn("Errors while loading JCrop:" + e); - } - }, - - cropOnSelect : function (c) { - logger.debug('cropper.widget.cropper cropOnSelect', c); - this.changeObj(c); - }, - - _changedCrop: function (c) { - if ( - this._c === null || - (this._c.x !== c.x || this._c.x2 !== c.x2 || - this._c.y !== c.y || this._c.y2 !== c.y2 || - this._c.h !== c.h || this._c.w !== c.w) - ) { - this._c = c; - return true; - } - return false; - }, - - changeObj : function (c) { - logger.debug('cropper.widget.cropper changeObj', this.scaleRatio); - if (this.imgObj && c.x < 10000 && c.x2 < 10000 && c.y < 10000 && c.y2 < 10000 && this.scaleRatio > 0) { - this.imgObj.set('crop_x1', Math.round(c.x/this.scaleRatio)); - this.imgObj.set('crop_x2', Math.round(c.x2/this.scaleRatio)); - this.imgObj.set('crop_y1', Math.round(c.y/this.scaleRatio)); - this.imgObj.set('crop_y2', Math.round(c.y2/this.scaleRatio)); - this.imgObj.set('crop_height', Math.round(c.h/this.scaleRatio)); - this.imgObj.set('crop_width', Math.round(c.w/this.scaleRatio)); - if (this._changedCrop(c)) { - mx.data.commit({ - mxobj: this.imgObj, - callback: function () { - logger.debug('cropper.widget.cropper changeObj.commit'); - } - }, this); - } - } - }, - - objectUpdateNotification : function () { - logger.debug('cropper.widget.cropper objectUpdateNotification'); - if (this.imgObj !== null) { - this.reloadImage(); - } - }, - - objChanged : function (objId) { - logger.debug('cropper.widget.cropper objChanged'); - mx.data.get({ - guid : objId, - callback : lang.hitch(this, this.objectUpdateNotification) - }, this); - }, - - uninitialize: function () { - logger.debug('cropper.widget.cropper uninitialize'); - this.unsubscribeAll(); - } - * - * - */ \ No newline at end of file +}); \ No newline at end of file From c2d2ff2741ebb527d4f64a759d57a1af33b876fc Mon Sep 17 00:00:00 2001 From: Osama Najjar Date: Mon, 28 Jan 2019 17:21:13 +0100 Subject: [PATCH 09/32] lower case widget id, to follow app store widget id --- to_be_removed/Cropper/conf/widget.config.json | 2 +- to_be_removed/Cropper/src/index.js | 50 +++++++++---------- to_be_removed/Cropper/src/package.ejs | 3 +- 3 files changed, 26 insertions(+), 29 deletions(-) diff --git a/to_be_removed/Cropper/conf/widget.config.json b/to_be_removed/Cropper/conf/widget.config.json index 41f455c..8086326 100644 --- a/to_be_removed/Cropper/conf/widget.config.json +++ b/to_be_removed/Cropper/conf/widget.config.json @@ -1,5 +1,5 @@ { - "name": "Cropper", + "name": "cropper", "friendlyName": "Image Cropper", "description": "Image cropper." } \ No newline at end of file diff --git a/to_be_removed/Cropper/src/index.js b/to_be_removed/Cropper/src/index.js index c6e765e..566fc45 100644 --- a/to_be_removed/Cropper/src/index.js +++ b/to_be_removed/Cropper/src/index.js @@ -31,18 +31,20 @@ export default declare(`${widgetConf.name}.widget.${widgetConf.name}`, [_widgetB _mxObj: null, context: null, imgNode: null, - imgObj: null, fileID: null, aspectR: 0, scaleRatio: 1, _c: null, _cropApi: null, - constructor() {}, + + postCreate() { console.debug(`${this.id} >> postCreate`); domAttrSet(this.domNode, "tabIndex", -1); }, + + update(contextObject, callback) { console.debug(`${this.id} >> update`); if (contextObject) { @@ -71,27 +73,23 @@ export default declare(`${widgetConf.name}.widget.${widgetConf.name}`, [_widgetB _renderCropper() { console.debug(`${this.id} >> _renderCropper`); - - this.imgObj = this._mxObj; this.fileID = this._mxObj.get('FileID'); - - this.constructImageHelper(); + this._constructImageHelper(); }, reloadImage: function () { logger.debug('cropper.widget.cropper reloadImage'); this.scaleRatio = 1; - this.constructImageHelper(); + this._constructImageHelper(); }, - constructImageHelper: function () { - logger.debug('cropper.widget.cropper constructImageHelper'); + _constructImageHelper() { + console.debug(`${this.id} >> _constructImageHelper`); var src = '/file?fileID=' + this.fileID + '&' + (+new Date()).toString(36); if (this.imgNode === null) { - dojo.empty(this.domNode); - - this.imgNode = dom.create('img', { + domEmpty(this.domNode); + this.imgNode = domCreate('img', { 'src': src }); // New date to kill caching @@ -113,7 +111,7 @@ export default declare(`${widgetConf.name}.widget.${widgetConf.name}`, [_widgetB loadCrop: function () { logger.debug('cropper.widget.cropper loadCrop'); - var aspectArr = this.imgObj.get(this.aspectRatio).split(':'); + var aspectArr = this._mxObj.get(this.aspectRatio).split(':'); if (aspectArr === null) { aspectArr = ""; @@ -157,10 +155,10 @@ export default declare(`${widgetConf.name}.widget.${widgetConf.name}`, [_widgetB domStyle.set(this.imgNode, 'left', '0px'); var setSelectArr = []; var existingAttrs = []; - existingAttrs.push(this.imgObj.get('crop_x1')); - existingAttrs.push(this.imgObj.get('crop_y1')); - existingAttrs.push(this.imgObj.get('crop_x2')); - existingAttrs.push(this.imgObj.get('crop_y2')); + existingAttrs.push(this._mxObj.get('crop_x1')); + existingAttrs.push(this._mxObj.get('crop_y1')); + existingAttrs.push(this._mxObj.get('crop_x2')); + existingAttrs.push(this._mxObj.get('crop_y2')); if (Math.max.apply(Math, existingAttrs) > 0) { setSelectArr = existingAttrs; @@ -215,16 +213,16 @@ export default declare(`${widgetConf.name}.widget.${widgetConf.name}`, [_widgetB changeObj: function (c) { logger.debug('cropper.widget.cropper changeObj', this.scaleRatio); - if (this.imgObj && c.x < 10000 && c.x2 < 10000 && c.y < 10000 && c.y2 < 10000 && this.scaleRatio > 0) { - this.imgObj.set('crop_x1', Math.round(c.x / this.scaleRatio)); - this.imgObj.set('crop_x2', Math.round(c.x2 / this.scaleRatio)); - this.imgObj.set('crop_y1', Math.round(c.y / this.scaleRatio)); - this.imgObj.set('crop_y2', Math.round(c.y2 / this.scaleRatio)); - this.imgObj.set('crop_height', Math.round(c.h / this.scaleRatio)); - this.imgObj.set('crop_width', Math.round(c.w / this.scaleRatio)); + if (this._mxObj && c.x < 10000 && c.x2 < 10000 && c.y < 10000 && c.y2 < 10000 && this.scaleRatio > 0) { + this._mxObj.set('crop_x1', Math.round(c.x / this.scaleRatio)); + this._mxObj.set('crop_x2', Math.round(c.x2 / this.scaleRatio)); + this._mxObj.set('crop_y1', Math.round(c.y / this.scaleRatio)); + this._mxObj.set('crop_y2', Math.round(c.y2 / this.scaleRatio)); + this._mxObj.set('crop_height', Math.round(c.h / this.scaleRatio)); + this._mxObj.set('crop_width', Math.round(c.w / this.scaleRatio)); if (this._changedCrop(c)) { mx.data.commit({ - mxobj: this.imgObj, + mxobj: this._mxObj, callback: function () { logger.debug('cropper.widget.cropper changeObj.commit'); } @@ -235,7 +233,7 @@ export default declare(`${widgetConf.name}.widget.${widgetConf.name}`, [_widgetB objectUpdateNotification: function () { logger.debug('cropper.widget.cropper objectUpdateNotification'); - if (this.imgObj !== null) { + if (this._mxObj !== null) { this.reloadImage(); } }, diff --git a/to_be_removed/Cropper/src/package.ejs b/to_be_removed/Cropper/src/package.ejs index 69224ba..f764687 100644 --- a/to_be_removed/Cropper/src/package.ejs +++ b/to_be_removed/Cropper/src/package.ejs @@ -1,7 +1,6 @@ - + From 1d5b411b683bee50eca0df996c0fe8954a2f6201 Mon Sep 17 00:00:00 2001 From: Osama Najjar Date: Mon, 28 Jan 2019 17:48:27 +0100 Subject: [PATCH 10/32] fix typoe USe => use --- to_be_removed/Cropper/src/widget.config.ejs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/to_be_removed/Cropper/src/widget.config.ejs b/to_be_removed/Cropper/src/widget.config.ejs index 72e9437..ceac35a 100644 --- a/to_be_removed/Cropper/src/widget.config.ejs +++ b/to_be_removed/Cropper/src/widget.config.ejs @@ -23,12 +23,12 @@ Max width Appearance - The maximum width that the crop screen will stretch to. USe 0 for no maximum width. + The maximum width that the crop screen will stretch to. Use 0 for no maximum width. Max height Appearance - The maximum height that the crop screen will stretch to. USe 0 for no maximum height. + The maximum height that the crop screen will stretch to. Use 0 for no maximum height. Aspect Ratio From 05b7cb670fddd61d1f74d67b3f99abd3a32a1a57 Mon Sep 17 00:00:00 2001 From: Osama Najjar Date: Mon, 28 Jan 2019 18:23:29 +0100 Subject: [PATCH 11/32] added isMxImage helper --- to_be_removed/Cropper/src/helpers/utils.js | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 to_be_removed/Cropper/src/helpers/utils.js diff --git a/to_be_removed/Cropper/src/helpers/utils.js b/to_be_removed/Cropper/src/helpers/utils.js new file mode 100644 index 0000000..4b95334 --- /dev/null +++ b/to_be_removed/Cropper/src/helpers/utils.js @@ -0,0 +1,10 @@ +export const isMxImageObject = (mxObject) => { + if (mxObject) { + return ( + mxObject.hasSuperEntities() && + mxObject.getSuperEntities().indexOf('System.Image') !== -1 && + mxObject.getSuperEntities().indexOf('System.FileDocument') !== -1 + ); + } + return false; +} \ No newline at end of file From b6764c66c97173d4d92fc5460d2059c509f86b73 Mon Sep 17 00:00:00 2001 From: Osama Najjar Date: Mon, 28 Jan 2019 18:24:50 +0100 Subject: [PATCH 12/32] refactoring is in progress... --- to_be_removed/Cropper/src/index.js | 240 ++++++++++++++--------------- 1 file changed, 117 insertions(+), 123 deletions(-) diff --git a/to_be_removed/Cropper/src/index.js b/to_be_removed/Cropper/src/index.js index 566fc45..118426e 100644 --- a/to_be_removed/Cropper/src/index.js +++ b/to_be_removed/Cropper/src/index.js @@ -5,6 +5,10 @@ import { get as domAttrGet, set as domAttrSet } from 'dojo/dom-attr'; +import { + get as domStyleGet, + set as domStyleSet +} from 'dojo/dom-style'; import { create as domCreate, place as domPlace, @@ -14,7 +18,9 @@ import { import { hitch } from 'dojo/_base/lang'; - +import { + isMxImageObject +} from "./helpers/utils"; //import dependencies import $ from "jquery"; @@ -28,7 +34,7 @@ import "../node_modules/jquery-jcrop/css/jquery.Jcrop.min.css"; export default declare(`${widgetConf.name}.widget.${widgetConf.name}`, [_widgetBase], { // INTERNAL - _mxObj: null, + _contextObject: null, context: null, imgNode: null, fileID: null, @@ -36,7 +42,7 @@ export default declare(`${widgetConf.name}.widget.${widgetConf.name}`, [_widgetB scaleRatio: 1, _c: null, - _cropApi: null, + JCropAPI: null, postCreate() { @@ -47,12 +53,14 @@ export default declare(`${widgetConf.name}.widget.${widgetConf.name}`, [_widgetB update(contextObject, callback) { console.debug(`${this.id} >> update`); - if (contextObject) { - this._mxObj = contextObject; - this._renderCropper(); + if (contextObject && isMxImageObject(contextObject)) { + this._contextObject = contextObject; + this.fileID = this._contextObject.get('FileID'); + + this._constructImageHelper(); this._addSubscriptions(); } else { - this._handleError(`${widgetConf.name} should be initiated in a nonempty context object.`); + this._handleError(`${widgetConf.name} should be initiated in a nonempty context object that inherits from 'System.Image' Entity.`); } if (callback && typeof callback === "function") { callback(); @@ -63,22 +71,17 @@ export default declare(`${widgetConf.name}.widget.${widgetConf.name}`, [_widgetB console.debug(`${this.id} >> _addSubscriptions`); this.unsubscribeAll(); this.subscribe({ - guid: this._mxObj.getGuid(), + guid: this._contextObject.getGuid(), callback: hitch(this, () => { console.debug(`${this.id} >> subscription has been set successfully`); - this.reloadImage(); + this._reloadImage(); }) }); }, - _renderCropper() { - console.debug(`${this.id} >> _renderCropper`); - this.fileID = this._mxObj.get('FileID'); - this._constructImageHelper(); - }, - reloadImage: function () { - logger.debug('cropper.widget.cropper reloadImage'); + _reloadImage: function () { + console.debug(`${this.id} >> _reloadImage`); this.scaleRatio = 1; this._constructImageHelper(); }, @@ -86,111 +89,38 @@ export default declare(`${widgetConf.name}.widget.${widgetConf.name}`, [_widgetB _constructImageHelper() { console.debug(`${this.id} >> _constructImageHelper`); var src = '/file?fileID=' + this.fileID + '&' + (+new Date()).toString(36); - if (this.imgNode === null) { + console.debug(`${this.id} >> _startLoadingImage`); domEmpty(this.domNode); this.imgNode = domCreate('img', { - 'src': src + src }); // New date to kill caching - - domStyle.set(this.imgNode, { - 'left': '-50000px', - 'position': 'absolute' - }); - - this.imgNode.onload = lang.hitch(this, this.loadCrop); - this.domNode.appendChild(this.imgNode); + this.imgNode.onload = hitch(this, this._loadCrop); + domPlace(this.imgNode, this.domNode); } else { - console.log('set'); - domAttr.set(this.imgNode, 'src', src); - if (this._cropApi) { - this._cropApi.setImage(src); + console.debug(`${this.id} >> _reloadImage`); + domAttrSet(this.imgNode, 'src', src); + if (this.JCropAPI) { + this.JCropAPI.setImage(src); } } }, - loadCrop: function () { - logger.debug('cropper.widget.cropper loadCrop'); - var aspectArr = this._mxObj.get(this.aspectRatio).split(':'); - - if (aspectArr === null) { - aspectArr = ""; - } - - this.aspectR = 0; - if (aspectArr.length === 2) { - var a = parseInt(aspectArr[0], 10), - b = parseInt(aspectArr[1], 10); - this.aspectR = (isNaN(a) ? 0 : a) / (isNaN(b) ? 1 : b); - } else { - var aR = parseInt(this.aspectRatio, 10); - this.aspectR = isNaN(aR) ? 0 : aR; - } - - //this.aspectR = (aspectArr.length === 2) ? parseInt(aspectArr[0], 10) / parseInt(aspectArr[1], 10) : parseInt(this.aspectRatio, 10); - - if (this.imgNode.offsetWidth > this.cropwidth || this.imgNode.offsetHeight > this.cropheight) { - if (this.imgNode.offsetWidth >= this.imgNode.offsetHeight) { - this.scaleRatio = this.cropwidth / this.imgNode.offsetWidth; - if (this.scaleRatio === 0) { - this.scaleRatio = 1; - } - domStyle.set(this.imgNode, { - 'width': this.cropwidth + 'px', - 'height': this.scaleRatio * this.imgNode.offsetHeight + 'px' - }); - } else { - this.scaleRatio = this.cropheight / this.imgNode.offsetHeight; - domStyle.set(this.imgNode, { - 'width': this.scaleRatio * this.imgNode.offsetWidth + 'px', - 'height': this.cropheight + 'px' - }); - } - } - - if (this.scaleRatio === 0) { - this.scaleRatio = 1; - } - - domStyle.set(this.imgNode, 'left', '0px'); - var setSelectArr = []; - var existingAttrs = []; - existingAttrs.push(this._mxObj.get('crop_x1')); - existingAttrs.push(this._mxObj.get('crop_y1')); - existingAttrs.push(this._mxObj.get('crop_x2')); - existingAttrs.push(this._mxObj.get('crop_y2')); - - if (Math.max.apply(Math, existingAttrs) > 0) { - setSelectArr = existingAttrs; - } else if (this.startwidth > 0 && this.startheight > 0) { - var width = Math.min(this.startwidth, this.imgNode.offsetWidth); - var height = Math.min(this.startheight, this.imgNode.offsetHeight); - setSelectArr.push(width); - setSelectArr.push(height); - setSelectArr.push(0); - setSelectArr.push(0); - this.changeObj(0, width, 0, height, height, width); - } else { - setSelectArr = undefined; - } - - try { - var _this = this; - // this._cropApi.destroy(); - // this._cropApi = null; - _jQuery(this.imgNode).Jcrop({ - onSelect: lang.hitch(this, this.cropOnSelect), - bgColor: 'black', - bgOpacity: 0.4, - setSelect: setSelectArr, - aspectRatio: this.aspectR - }, function () { - _this._cropApi = this; - console.log(this); - }); - } catch (e) { - logger.warn("Errors while loading JCrop:" + e); - } + _loadCrop: function () { + console.debug(`${this.id} >> _loadCrop`); + var widgetSelfRef = this; + $(this.imgNode).Jcrop({ + onSelect: hitch(this, this.cropOnSelect), + bgColor: 'black', + bgOpacity: 0.4, + setSelect: [0, 0, this.startWidth, this.startHeight], + aspectRatio: this.aspectR, + boxWidth: this.cropwidth, + boxHeight: this.cropheight, + }, function () { + console.debug(`${this.id} >> _getReferenceToJCropInstance`); + widgetSelfRef.JCropAPI = this; + }); }, cropOnSelect: function (c) { @@ -213,16 +143,16 @@ export default declare(`${widgetConf.name}.widget.${widgetConf.name}`, [_widgetB changeObj: function (c) { logger.debug('cropper.widget.cropper changeObj', this.scaleRatio); - if (this._mxObj && c.x < 10000 && c.x2 < 10000 && c.y < 10000 && c.y2 < 10000 && this.scaleRatio > 0) { - this._mxObj.set('crop_x1', Math.round(c.x / this.scaleRatio)); - this._mxObj.set('crop_x2', Math.round(c.x2 / this.scaleRatio)); - this._mxObj.set('crop_y1', Math.round(c.y / this.scaleRatio)); - this._mxObj.set('crop_y2', Math.round(c.y2 / this.scaleRatio)); - this._mxObj.set('crop_height', Math.round(c.h / this.scaleRatio)); - this._mxObj.set('crop_width', Math.round(c.w / this.scaleRatio)); + if (this._contextObject && c.x < 10000 && c.x2 < 10000 && c.y < 10000 && c.y2 < 10000 && this.scaleRatio > 0) { + this._contextObject.set('crop_x1', Math.round(c.x / this.scaleRatio)); + this._contextObject.set('crop_x2', Math.round(c.x2 / this.scaleRatio)); + this._contextObject.set('crop_y1', Math.round(c.y / this.scaleRatio)); + this._contextObject.set('crop_y2', Math.round(c.y2 / this.scaleRatio)); + this._contextObject.set('crop_height', Math.round(c.h / this.scaleRatio)); + this._contextObject.set('crop_width', Math.round(c.w / this.scaleRatio)); if (this._changedCrop(c)) { mx.data.commit({ - mxobj: this._mxObj, + mxobj: this._contextObject, callback: function () { logger.debug('cropper.widget.cropper changeObj.commit'); } @@ -233,8 +163,8 @@ export default declare(`${widgetConf.name}.widget.${widgetConf.name}`, [_widgetB objectUpdateNotification: function () { logger.debug('cropper.widget.cropper objectUpdateNotification'); - if (this._mxObj !== null) { - this.reloadImage(); + if (this._contextObject !== null) { + this._reloadImage(); } }, @@ -242,7 +172,7 @@ export default declare(`${widgetConf.name}.widget.${widgetConf.name}`, [_widgetB logger.debug('cropper.widget.cropper objChanged'); mx.data.get({ guid: objId, - callback: lang.hitch(this, this.objectUpdateNotification) + callback: hitch(this, this.objectUpdateNotification) }, this); }, @@ -250,13 +180,77 @@ export default declare(`${widgetConf.name}.widget.${widgetConf.name}`, [_widgetB logger.debug('cropper.widget.cropper uninitialize'); this.unsubscribeAll(); }, + + _getCroppingOptions() { + console.debug(`${this.id} >> _getCroppingOptions`); + var options = {}; + // options.aspectRatio = this._getAspectRation(); + options.bgColor = 'black'; + options.bgOpacity = 0.4; + // options.onSelect = lang.hitch(this, this._setCroppingCoordinates); + // options.onChange = lang.hitch(this, this._setCroppingCoordinates); + // options.onRelease = lang.hitch(this, this._setCroppingCoordinates); + // options.setSelect = [0, 0, this.startWidth, this.startHeight]; + options.boxWidth = this.cropwidth; + options.boxHeight = this.cropheight; + + return options; + }, + _handleError(errorMessage) { + console.debug(`${this.id} >> _handleError`); domEmpty(this.domNode); const errorMessageNode = domCreate("div", { class: "alert alert-danger", innerText: errorMessage }); domPlace(errorMessageNode, this.domNode); + }, + + + _setCroppingCoordinates: function (coordinates) { + console.debug(`${this.id} >> _setCroppingCoordinates`); + if (coordinates) { + this._contextObject.set('crop_x1', Math.round(coordinates.x)); + this._contextObject.set('crop_x2', Math.round(coordinates.x2)); + this._contextObject.set('crop_y1', Math.round(coordinates.y)); + this._contextObject.set('crop_y2', Math.round(coordinates.y2)); + this._contextObject.set('crop_height', Math.round(coordinates.h)); + this._contextObject.set('crop_width', Math.round(coordinates.w)); + } + }, + + _getCroppingOptions: function () { + console.debug(`${this.id} >> _getCroppingOptions`); + var options = {}; + options.aspectRatio = this._getAspectRation(); + options.bgColor = 'black'; + options.bgOpacity = 0.4; + options.onSelect = hitch(this, this._setCroppingCoordinates); + options.onChange = hitch(this, this._setCroppingCoordinates); + options.onRelease = hitch(this, this._setCroppingCoordinates); + options.setSelect = [0, 0, this.startWidth, this.startHeight]; + options.boxWidth = this.cropwidth; + options.boxHeight = this.cropheight; + + return options; + }, + + _getAspectRation: function () { + var aspectRatio = null, + aspectRatioArr = null, + givenWidth = null, + givenHeight = null; + if (this.keepOriginalAspectRatio) { + aspectRatio = this._originalAspectRatio; + } else { + aspectRatioArr = this._contextObject.get(this.aspectRatio).split(':'); + givenWidth = parseInt(aspectRatioArr[0], 10); + givenHeight = parseInt(aspectRatioArr[1], 10); + aspectRatio = givenWidth / givenHeight; + } + + return aspectRatio; } }); \ No newline at end of file From 55406cab22e0d31dd71eafae8d17c11efe6d1049 Mon Sep 17 00:00:00 2001 From: Osama Najjar Date: Tue, 29 Jan 2019 10:07:37 +0100 Subject: [PATCH 13/32] deleted old widget, and restructured --- .jshintrc | 23 - {to_be_removed/Cropper => Cropper}/.gitignore | 0 {to_be_removed/Cropper => Cropper}/README.md | 0 .../Cropper => Cropper}/conf/paths.js | 0 .../conf/postcss.config.js | 0 .../conf/webpack.config.js | 0 .../conf/widget.config.json | 0 .../Cropper => Cropper}/package-lock.json | 0 .../Cropper => Cropper}/package.json | 0 .../Cropper => Cropper}/src/helpers/utils.js | 0 Cropper/src/index.js | 164 + .../Cropper => Cropper}/src/package.ejs | 0 Cropper/src/style/_app.scss | 9 + .../Cropper => Cropper}/src/style/style.scss | 0 .../Cropper => Cropper}/src/widget.config.ejs | 0 Gulpfile.js | 88 - dist/Cropper.mpk | Bin 107221 -> 0 bytes dist/ImageCrop.mpk | Bin 165565 -> 0 bytes package.json | 37 - src/cropper/cropper.xml | 55 - src/cropper/lib/jquery_bundle.js | 12508 ---------------- src/cropper/widget/cropper.js | 270 - src/cropper/widget/templates/cropper.html | 1 - src/cropper/widget/ui/Jcrop.gif | Bin 329 -> 0 bytes src/cropper/widget/ui/cropper.css | 42 - src/package.xml | 11 - to_be_removed/Cropper/src/index.js | 256 - to_be_removed/Cropper/src/style/_app.scss | 57 - 28 files changed, 173 insertions(+), 13348 deletions(-) delete mode 100644 .jshintrc rename {to_be_removed/Cropper => Cropper}/.gitignore (100%) rename {to_be_removed/Cropper => Cropper}/README.md (100%) rename {to_be_removed/Cropper => Cropper}/conf/paths.js (100%) rename {to_be_removed/Cropper => Cropper}/conf/postcss.config.js (100%) rename {to_be_removed/Cropper => Cropper}/conf/webpack.config.js (100%) rename {to_be_removed/Cropper => Cropper}/conf/widget.config.json (100%) rename {to_be_removed/Cropper => Cropper}/package-lock.json (100%) rename {to_be_removed/Cropper => Cropper}/package.json (100%) rename {to_be_removed/Cropper => Cropper}/src/helpers/utils.js (100%) create mode 100644 Cropper/src/index.js rename {to_be_removed/Cropper => Cropper}/src/package.ejs (100%) create mode 100644 Cropper/src/style/_app.scss rename {to_be_removed/Cropper => Cropper}/src/style/style.scss (100%) rename {to_be_removed/Cropper => Cropper}/src/widget.config.ejs (100%) delete mode 100644 Gulpfile.js delete mode 100644 dist/Cropper.mpk delete mode 100644 dist/ImageCrop.mpk delete mode 100644 package.json delete mode 100644 src/cropper/cropper.xml delete mode 100644 src/cropper/lib/jquery_bundle.js delete mode 100644 src/cropper/widget/cropper.js delete mode 100644 src/cropper/widget/templates/cropper.html delete mode 100644 src/cropper/widget/ui/Jcrop.gif delete mode 100644 src/cropper/widget/ui/cropper.css delete mode 100644 src/package.xml delete mode 100644 to_be_removed/Cropper/src/index.js delete mode 100644 to_be_removed/Cropper/src/style/_app.scss diff --git a/.jshintrc b/.jshintrc deleted file mode 100644 index 8f06420..0000000 --- a/.jshintrc +++ /dev/null @@ -1,23 +0,0 @@ -{ - // Enforcing - "curly" : false, - "forin" : false, - "latedef" : "nofunc", - "newcap" : true, - "quotmark" : false, - "eqeqeq" : true, - "undef" : true, - "globals" : { - "mendix" : false, - "mx" : false, - "logger" : false - }, - - // Relaxing - "laxbreak" : true, - - // Environments - "browser" : true, - "devel" : true, - "dojo" : true -} diff --git a/to_be_removed/Cropper/.gitignore b/Cropper/.gitignore similarity index 100% rename from to_be_removed/Cropper/.gitignore rename to Cropper/.gitignore diff --git a/to_be_removed/Cropper/README.md b/Cropper/README.md similarity index 100% rename from to_be_removed/Cropper/README.md rename to Cropper/README.md diff --git a/to_be_removed/Cropper/conf/paths.js b/Cropper/conf/paths.js similarity index 100% rename from to_be_removed/Cropper/conf/paths.js rename to Cropper/conf/paths.js diff --git a/to_be_removed/Cropper/conf/postcss.config.js b/Cropper/conf/postcss.config.js similarity index 100% rename from to_be_removed/Cropper/conf/postcss.config.js rename to Cropper/conf/postcss.config.js diff --git a/to_be_removed/Cropper/conf/webpack.config.js b/Cropper/conf/webpack.config.js similarity index 100% rename from to_be_removed/Cropper/conf/webpack.config.js rename to Cropper/conf/webpack.config.js diff --git a/to_be_removed/Cropper/conf/widget.config.json b/Cropper/conf/widget.config.json similarity index 100% rename from to_be_removed/Cropper/conf/widget.config.json rename to Cropper/conf/widget.config.json diff --git a/to_be_removed/Cropper/package-lock.json b/Cropper/package-lock.json similarity index 100% rename from to_be_removed/Cropper/package-lock.json rename to Cropper/package-lock.json diff --git a/to_be_removed/Cropper/package.json b/Cropper/package.json similarity index 100% rename from to_be_removed/Cropper/package.json rename to Cropper/package.json diff --git a/to_be_removed/Cropper/src/helpers/utils.js b/Cropper/src/helpers/utils.js similarity index 100% rename from to_be_removed/Cropper/src/helpers/utils.js rename to Cropper/src/helpers/utils.js diff --git a/Cropper/src/index.js b/Cropper/src/index.js new file mode 100644 index 0000000..bef6fb0 --- /dev/null +++ b/Cropper/src/index.js @@ -0,0 +1,164 @@ +import _widgetBase from 'MxWidgetBase'; +import declare from 'dojoBaseDeclare'; +import * as widgetConf from '../conf/widget.config.json'; +import { + get as domAttrGet, + set as domAttrSet +} from 'dojo/dom-attr'; +import { + get as domStyleGet, + set as domStyleSet +} from 'dojo/dom-style'; +import { + create as domCreate, + place as domPlace, + empty as domEmpty +} from 'dojo/dom-construct'; + +import { + hitch +} from 'dojo/_base/lang'; +import { + isMxImageObject +} from "./helpers/utils"; + +//import dependencies +import $ from "jquery"; +require('imports-loader?jQuery=jquery!../node_modules/jquery-jcrop/js/jquery.Jcrop'); +require('imports-loader?jQuery=jquery!../node_modules/jquery-jcrop/js/jquery.color'); +import './style/style.scss'; +import "../node_modules/jquery-jcrop/css/Jcrop.gif"; +import "../node_modules/jquery-jcrop/css/jquery.Jcrop.min.css"; + + +export default declare(`${widgetConf.name}.widget.${widgetConf.name}`, [_widgetBase], { + + // INTERNAL + _contextObject: null, + imgNode: null, + fileID: null, + aspectR: 0, + scaleRatio: 1, + JCropAPI: null, + + postCreate() { + console.debug(`${this.id} >> postCreate`); + $(this.domNode).addClass("jcrop-mx-widget"); + domAttrSet(this.domNode, "tabIndex", -1); + }, + + update(contextObject, callback) { + console.debug(`${this.id} >> update`); + + if (contextObject && isMxImageObject(contextObject)) { + this._contextObject = contextObject; + this.fileID = this._contextObject.get('FileID'); + this._updateRendering(); + this._addSubscriptions(); + } else { + this._handleError(`${widgetConf.name} should be initiated in a nonempty context object that inherits from 'System.Image' Entity.`); + } + if (callback && typeof callback === "function") { + callback(); + } + }, + + _addSubscriptions() { + console.debug(`${this.id} >> _addSubscriptions`); + this.unsubscribeAll(); + this.subscribe({ + guid: this._contextObject.getGuid(), + callback: hitch(this, () => { + console.debug(`${this.id} >> subscription has been set successfully`); + this._updateRendering(); + }) + }); + }, + + _updateRendering() { + console.debug(`${this.id} >> _updateRendering`); + var src = '/file?fileID=' + this.fileID + '&' + (+new Date()).toString(36); + if (this.imgNode === null) { + domEmpty(this.domNode); + this.imgNode = domCreate('img', { + src + }); + domPlace(this.imgNode, this.domNode); + } else { + domAttrSet(this.imgNode, 'src', src); + } + if (this.JCropAPI) { + // destroy current JCrop instance, in order to reset + this.JCropAPI.destroy(); + } + this._initJCrop(); + }, + + _initJCrop() { + console.debug(`${this.id} >> _initJCrop`); + var widgetSelfRef = this; + var cropOptions = this._getCroppingOptions(); + $(this.imgNode).Jcrop(cropOptions, function () { + console.debug(`${this.id} >> _getReferenceToJCropInstance`); + widgetSelfRef.JCropAPI = this; + }); + }, + + uninitialize() { + logger.debug('cropper.widget.cropper uninitialize'); + this.unsubscribeAll(); + }, + + _handleError(errorMessage) { + console.debug(`${this.id} >> _handleError`); + domEmpty(this.domNode); + const errorMessageNode = domCreate("div", { + class: "alert alert-danger", + innerText: errorMessage + }); + domPlace(errorMessageNode, this.domNode); + }, + + _setCroppingCoordinates(coordinates) { + console.debug(`${this.id} >> _setCroppingCoordinates`); + if (coordinates) { + this._contextObject.set('crop_x1', Math.round(coordinates.x)); + this._contextObject.set('crop_x2', Math.round(coordinates.x2)); + this._contextObject.set('crop_y1', Math.round(coordinates.y)); + this._contextObject.set('crop_y2', Math.round(coordinates.y2)); + this._contextObject.set('crop_height', Math.round(coordinates.h)); + this._contextObject.set('crop_width', Math.round(coordinates.w)); + } + + }, + _getCroppingOptions() { + console.debug(`${this.id} >> _getCroppingOptions`); + var options = {}; + options.aspectRatio = this._getAspectRatio(); + options.bgColor = 'black'; + options.bgOpacity = 0.4; + options.onSelect = hitch(this, this._setCroppingCoordinates); + options.onChange = hitch(this, this._setCroppingCoordinates); + options.onRelease = hitch(this, this._setCroppingCoordinates); + options.setSelect = [0, 0, this.startwidth, this.startheight]; + options.boxWidth = this.cropwidth; + options.boxHeight = this.cropheight; + + return options; + }, + _getAspectRatio() { + console.debug(`${this.id} >> _getAspectRatio`); + var aspectRatio = null, + aspectRatioArr = null, + givenWidth = null, + givenHeight = null; + aspectRatioArr = this._contextObject.get(this.aspectRatio).split(':'); + givenWidth = parseInt(aspectRatioArr[0], 10); + givenHeight = parseInt(aspectRatioArr[1], 10); + aspectRatio = givenWidth / givenHeight; + + return aspectRatio; + }, + + +}); \ No newline at end of file diff --git a/to_be_removed/Cropper/src/package.ejs b/Cropper/src/package.ejs similarity index 100% rename from to_be_removed/Cropper/src/package.ejs rename to Cropper/src/package.ejs diff --git a/Cropper/src/style/_app.scss b/Cropper/src/style/_app.scss new file mode 100644 index 0000000..4f6b16c --- /dev/null +++ b/Cropper/src/style/_app.scss @@ -0,0 +1,9 @@ +.jcrop-mx-widget { + .jcrop-holder[style] { + z-index: 81 !important; + } + + .jcrop-tracker[style] { + z-index: 80 !important; + } +} \ No newline at end of file diff --git a/to_be_removed/Cropper/src/style/style.scss b/Cropper/src/style/style.scss similarity index 100% rename from to_be_removed/Cropper/src/style/style.scss rename to Cropper/src/style/style.scss diff --git a/to_be_removed/Cropper/src/widget.config.ejs b/Cropper/src/widget.config.ejs similarity index 100% rename from to_be_removed/Cropper/src/widget.config.ejs rename to Cropper/src/widget.config.ejs diff --git a/Gulpfile.js b/Gulpfile.js deleted file mode 100644 index 2cc93f5..0000000 --- a/Gulpfile.js +++ /dev/null @@ -1,88 +0,0 @@ -// Generated on 2017-02-14 using generator-mendix 2.0.4 :: git+https://github.com/mendix/generator-mendix.git -/*jshint -W069,-W097*/ -"use strict"; - -// In case you seem to have trouble starting Mendix through `gulp modeler`, you might have to set the path to the Mendix application, otherwise leave both values as they are -var MODELER_PATH = null; -var MODELER_ARGS = "/file:{path}"; - -/******************************************************************************** - * Do not edit anything below, unless you know what you are doing - ********************************************************************************/ -var gulp = require("gulp"), - zip = require("gulp-zip"), - del = require("del"), - newer = require("gulp-newer"), - gutil = require("gulp-util"), - gulpif = require("gulp-if"), - jsonTransform = require("gulp-json-transform"), - intercept = require("gulp-intercept"), - argv = require("yargs").argv, - widgetBuilderHelper = require("widgetbuilder-gulp-helper"), - jsValidate = require("gulp-jsvalidate"); - -var pkg = require("./package.json"), - paths = widgetBuilderHelper.generatePaths(pkg), - xmlversion = widgetBuilderHelper.xmlversion; - -gulp.task("default", function() { - gulp.watch("./src/**/*", ["compress"]); - gulp.watch("./src/**/*.js", ["copy:js"]); -}); - -gulp.task("clean", function () { - return del([ - paths.WIDGET_TEST_DEST, - paths.WIDGET_DIST_DEST - ], { force: true }); -}); - -gulp.task("compress", ["clean"], function () { - return gulp.src("src/**/*") - .pipe(zip(pkg.name + ".mpk")) - .pipe(gulp.dest(paths.TEST_WIDGETS_FOLDER)) - .pipe(gulp.dest("dist")); -}); - -gulp.task("copy:js", function () { - return gulp.src(["./src/**/*.js"]) - .pipe(jsValidate()) - .pipe(newer(paths.TEST_WIDGETS_DEPLOYMENT_FOLDER)) - .pipe(gulp.dest(paths.TEST_WIDGETS_DEPLOYMENT_FOLDER)); -}); - -gulp.task("version:xml", function () { - return gulp.src(paths.PACKAGE_XML) - .pipe(xmlversion(argv.n)) - .pipe(gulp.dest("./src/")); -}); - -gulp.task("version:json", function () { - return gulp.src("./package.json") - .pipe(gulpif(typeof argv.n !== "undefined", jsonTransform(function(data) { - data.version = argv.n; - return data; - }, 2))) - .pipe(gulp.dest("./")); -}); - -gulp.task("icon", function (cb) { - var icon = (typeof argv.file !== "undefined") ? argv.file : "./icon.png"; - console.log("\nUsing this file to create a base64 string: " + gutil.colors.cyan(icon)); - gulp.src(icon) - .pipe(intercept(function (file) { - console.log("\nCopy the following to your " + pkg.name + ".xml (after description):\n\n" + gutil.colors.cyan("") + file.contents.toString("base64") + gutil.colors.cyan("<\/icon>") + "\n"); - cb(); - })); -}); - -gulp.task("folders", function () { - paths.showPaths(); return; -}); - -gulp.task("modeler", function (cb) { - widgetBuilderHelper.runmodeler(MODELER_PATH, MODELER_ARGS, paths.TEST_PATH, cb); -}); - -gulp.task("build", ["compress"]); -gulp.task("version", ["version:xml", "version:json"]); diff --git a/dist/Cropper.mpk b/dist/Cropper.mpk deleted file mode 100644 index 6035e1c11e8bd14cb0ddceb0cdb6e421e3638e23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 107221 zcmZU)Q*bT}(50K~*tTukwr$(kv2Ev#ZQHhO+qQR-`OcjGR87t4i|)R7F8XR!b@ggR z84yrZp#LZ0k{smzck@39^1o{0?BM8V=FFh@KNRHurW_*VNg%<1fXJYMfKdJq>VIf@ z4?EkMRIR^RjEG}-TM7g3DORFBhw@2rjD{vU?C)V5u!r?rxQJ(Eb@j=uR%J`c5IWj7 zKgHiN+8*z!VZg~pq%TM34X*xUEtt4k4L1_ECNw0o5WOQlUS7Y7@2$~LM_ci9G?5G# z+1op^?hHHVC`Ptr%A!8Xv4;`+NxZF+NeAd6XAz5IsS@KSBtT+H+o7C|-;c9VB922q z+-#P7Jr?QV;+u?t{*1 zj!g|XBA>LYItrVe&1C(j3*w4p{?5Fj`Ae9i;VIpD)$C)f0~>Z7g^(gBpeDS}u`P^z zwch?m|> z{PHVm(2D#Ov`UHQT+~{qtB3>vqp2Y5YxLf1pz=z(OsEax%dnhWlnbxCZkj@fvtA9E zAnvKzpDn;HoW0}o>2SpM)F+XX3_05u*qg>{1Q2swBw{fXAcofktTYA7Zc21r=Br9u ze*}c3x%M^sgrTD7DeES_lnGkRp!+dk)JkyA!0V+;OQbv*W$}xXZ&yR=H929xf z{r>>%o0B|rZ`2kx11xL}DA7DsFG(2?wJFPh#jbN|&uXOgqEXYJi0`S!Quz4=$Axeufe@OnY1%Wmg| zkfUn@@_TE^2C$owk@{ri-QF<6{k$t@IAe+T^BHi*cnsP`&@iH~xhNT*-o1IKf)VA~ zz4yS6X3PXEt9FzYDDtm5{s8pI09`}8qo@asw^GaT@Ibzr0hTInw1D6N*vKs0t|h)X z`^Hc|RS3Rb@FW!}`?!C-kY|-k52aE~6~vnwsg3R?XpY|B#}C+6FbAba);YDD*>tLL zG%KEU0*U9Z;*M|K^JmEs?TGC?jx2^$L0~f8i$`F!9;ZjH2Oecaj`B^!H5NstJ*y-h z==qBnrX@>bB9gUl8qmixo;g+rmdo2-j$N;EPf5egtcV0<3U_-w-Z$#gSQ>5I;?W2X z+OQS$?+qtQg(vJO)1z@2V5Sz}SZwZ`wPHh7-DbN{Fw8Qi*dIXpvUNwOh!iU*#b^_< z)8m87M6Csj@4b+VPy;rL0!sZuy;q5SN&D!ZzpU*KKVl&`2MB76OE9hDlf|=j%;_PdKTIU= zUDXFGDIK3bw08@xE1dapF83N8SsccTh*tW~Co(FHj3^SZpaxviO!WTK(fAJxGCT7r zWouHqo0y-s#Z)yFRL(m4XZXs1(6)zDHy zgwxi_`2Uhv6gNmw?kHd&z%n=x?*BzvJGq)Udm0$K+MC*%(OduB*8A{Znne2T_@D{# zBuGFZU;>7Q@&q)M+U-LiadedT2Ek=BsX1m=2n5AS+g{1<1N z2dA-c4ohG6Sz_t*Jq8eYLBUSgGpD-<3sTsG7fY6m*l=#;^B+F^TX^sS|6(WMM<+%Q zD*zAF_zD=wj8E`|eZRig@cgD7hgfC4$WKCw+IXQDZJX>3DUhjOJRb%(eTEoeP z_+(D;*!Uhoybnnqp6Omkq`74a6UMp4+d~dRR+y#-!y<5|MKN!mE8Y&+u|u3NJ46&0 z8}sJMKTn4Ex5{sCpIh!MN;zMMVIdE~l6ifE z4b2^RFd;xmd*N^YXmM)fGr$$iV^o6ubx87XVty;c#3OO-d^VR#H97!U;rf}Ld$3E2 z!BAz`E6$@E9iQsvm13OL)^%STo$<)eF&cSYtVN&lp3Bb?2a$ z!(re0Z_1@(3dhN;*W+Go<9 zaCCnvl6ybq908cat&mmbfMiEpTE~E6+WcG|93D@He5(|g;gw+G z&9?Y40$zEA{VX@F55Cf8E5RE$c`}pWml_Ec8O9dl&nzt!G zmN2qFF!82Uw4=Ut3j*b5(0CCV+tQpG(u;dcw7CpU&lvWXax!2)a7wWj5Dl}kLvnV- zbK!X{K!<-a$TdlTtXn~QsFYMibZOPi1AuO#@$;+?ESe%=Na>f^PU`Q|j{|q*guDc3 z8@Y-MP$m9agS9v2llN>H`QQ&9IXZW3AL7hQP!U`(70Qj$o4#+8@|)mj+^+?3cSilsyD^Ia_3wVL_*xiTWWcERtsOcJg2b!gxHK8}%+etdVjvMIW%x6Anax&QCZx04-p{5Hx`XdVK5lr`}#HdcDGRb{@Qzx57pyM zkDaX-Clm5OXflt|m);%i6K9M2k7;bph`rK-A^V)xeqw0(uQz2Z4<}z-^X6~&`g^cK zefkUB!p{{Nr}dGrpPE(}jeYaNoZA9cxQL)x6o5`QP(=sZ`UTj`p3Xz5`4GHq@k>KA zZ>1|_ZFBc#>WRvG4M@a(4*TwictB8ku83ZwpA1T#4qCbgja zd~H)pVVFy{a{UOH{eEBto&JN}Q7flwXpjDISZGc>KCloiz!`_{0GOC^=twA$mBP)u zRaiO>Lbk#U_2O^&7~guuf1>h{G-!K25;XL?zRAosVH9`W`O`^h;ZU=y8!Utw0L(8JL?+xbC?>ADYuTB@cF~5BX%$B5sNS$sZm0cmAC%Ob> zZgpX=c2t_m|Hw$%RlqR#O#6(r-{E@}ERbgZmaU&BOWxRfp7kc}`I9@B4&Et=5$bfF zjh0V*P}ZjGny2ADM@2jqI=g1@W}RvP;@){3tZcvvB)A&`(XB{;B(Mu zZlKH&JlOe5rIqg$6O%At)*&L+PAjj3?xC)0heo5@eo6Y^G66u*3o;*b`G-I&Ib`UQ zJA}q}h|i(j6aTWPqGs@ZqTC`qZ&=$Dm0S6hpvJO(T}8hT@~k<0n~RZQzFq2~&~4!A zIWYI=T5<)ybNluJ=w!7lKyHVWO=Gt1ig3lt5w~J@*id@s@b49o1%nSlT54tbVP}zI1f3ox z$9emhc&0qW9K)1?#5JCgu~dozjH3Q-$JxZ;366#DK!tCOfxhPTt_veQO1xH?0qU*gkk zj9HEr>#UTKlT>vjXvCkDwlrHSh3aOqZO9%62DO1&9dsowg2;wKp%AP+Kp9wr0P zb7w5l%@3Ar0mb2vL7l*bGAX?(A4LMLp{uu{GNC$-FtS-VrnoroRbm3&QT;YZ5=sC< zVJtO_%Mt1_M$&d~^lgYQUuq2rBw@CLi_L~k?J}8NZvvUo3NBj#h1xSoW zeXv4LF{zY6{zhUm{r>gpWikT)S1& z6kp~BZKX2YVl6K4At|Xeqj}BoOel+T$)@Ji03u^|Ja;uNUGJ$Zi3eg@xMe+w@Pi>X z78or<%-t~D08UM8%-d0=>VOQRB1r#~mADj+=^7ng#m}p(p8GiMB$Saet9kL)zs-wD zo07=InrqjYm;5kxjtgOVx=JEQS=5jv;!68}N>%U)mAiILCW}Sd>=&Mxw{2WgLG%h_ zMA&QV*TrpLs7Mb!DXvk^V~KH>ty5keM0G9-Ya<71?_Z-W$VmeEk3r4eupyp!i83Cb z7K}Gj;Umi-%C-E72V05f^KZs0oOkT4i|K&j= z*Kh`TgiB%?C`KhI`6TgM3}}_xByvNZ8T@gIMZH8Et00roAx-5WC{{fjymN!lMrG&q zf(OPI<=r9Hc_W6XjVQ&MIu=Q!S#R=Iv?LLRB8dvV z?mXl3|I&UarR`-TneV1^K?f_*O9<pDRR$WUcHS=h}*gQ8=5IUg@nzQS)8>i?LUhB z-cWPe!B>d~g2#y7tkQi(InCzLJ_vJUYE@EHkK3lY@hg;W@;HQ~R& z(_I*27aP{k4$TQRab2v=t66-pWIAunp;IV^JOCi~#)zOE1u22e$eme+)*|i=Koiihi^aM)Hg{`PO|~iVb6~a25iLDGJJd-nrf^(8l62ZM z86*YiEQ~z|wqdxCyq6NDATG5>@&;3F3kFKqYVm8h2e#r~P1;@V(G`E=;Bx$&y`o3oWpzO!Dq@RuLO_ft7kORl|pz zPV_R{9)`^R?TxWqu|aTljQoMRx&AmUNS{(oD`VmE0se<0C#1Frv8!6wWTe=;lhE+g5FXQj+ zy~!kKi4Xz3JBpJGyZSVgd9_-Ff#8MEBOtm|!Cg2scciGdjT``7Ul2XynKT2Zz3ub9 ze=t|q$IoR~s%F^9;aeCsDG7Ggthq{PSC|?jwJR0zP4HN_xf~drbs2-7zm1T8gN+K0 zHxQ;~Y6^Fqqb4zPyV>H{f8WYze@NM#fKUMRglcu+vJosB{OZe2V)S9WO4AaA)hG%G zg;WynKS$y+tWl`&oW!+doy!Wlm`#tmKGXVZyW_>!UYwlJ8ECwT7pAZK5HN*d8(3v0 zG9}hObd!3XFhl*IvU`+mH(bD8z}R%1bUfMGoMlt4ZzYUDNJ~9cxgM3k<~VsMW%K*Q z_LERd5Db9*2{^HxkT`Q0Rt7KbCq%;jcV-2MO}=2&P}+LY3!_*%rp56I*f}JGKNI=n z&Mt=@BE-uJuE81{zduO$;lm8WG|7va0{UWZ_4Bk%l0})Mqo_s>j(RzM-iAw`hA*~- zWBU}5R5oWHM=_B(&5ukQL?y(|lxx^o3d^JompwcYYaE}xuMa$~SNS_YuSB7zCbRC7 z&#Fqq&QYwng}{XdfLkHtI9{oQVtkdb#&?6f&oLQgFi8}9sf3hXs~i7N4tJYNdPiaJ zYg{EHHl`(h6}53|M4cr%ddllkOY05Fym4ifPp0L{LFwU?IbB}oSGx2aL`$1h zW_rDM;O~BW;tBI)^*w#-a~xo6LzrM~(=-teB0**+#q;iKVJGd$ZjiX?aYpVH%1FA^ zH2q{FDfk1ThZLbJN%&MrkR)SAG^k4ImULzL=L#7LMIo9ybziobHV%GCSzdzV;xU)l zX+a`Xjn_7dRO2Hc)n-Na^RvB9U?C@cH0Xn?YZothMrCDcLjy(T%+IuNw--3llGMr) zksT-2u4r3{t)UJy^2#)xA|ciXU}i^QpR`OPg^UHC$PM@vDC<)a^T|WZVu>3rmYg%ce;2_<_!>Q^2yc^*E%+H_m^7wc+=mh=6hW(fKM+ha{eq*MNX^OOz zLZUBLsA?-Q{n-+QxlUx7ERDjR!~a?-nRc}X4}%nhao@(ZS67fwv2`W5xUOtVG1xV> z*ag_w13sQ+F0i@!ng(MckKFmGRJ*0Juuu~bHKp(=vOu6^et4eypw!_^nym>7wE_ws@ zlFDtc1{H}U@I;ZFrLeCZlK*RqueK+&wq6?PXKxfV>%s*tvDF(j75W-J*-V-#r2){W z1x7s_KN)aWB#>_uA_oh-qk{rlR~1t!obgkRZQ?<2d><+Xj))o3ej$5Fm)Tk@SfsS% zR_DCZ4x!f2%$#Jf=-LQ3qvL-9wF= zq`YG35|&&d>I!Whk7PhXb3Xy_6eDXq3>C@nk5Y*});-}KEGidKT4FN&V@&BS0)7F# z?Vn+J!1hx)au>NFhwii3I<|n@lTw)k+aJ*XAcQk1<=( zr6Dya(*m_5JwN_-Q5(KakQrC&8Bx)iY2S8}9#1}8q~5!5lA6_f_@Zvx?X6}kIeO9B z&K_>gp9LyALPCPu~t z6j}QGNi%{%SMzgnr_U#`17>IQr;=an#;GyFFo%~~-5+}dGkW7H+h z>Sv;U&~t-r*3c|^v0HD5dIDc6>Y!%Ws9M8`t=SE>s@_p{>#E#4VW+077LnT@)XB3b zNLPWoI#WfEL=;+T9n^}}4>!*e%^PSf78CBdFN3eQPqpvEOYO}0Tpki9@grYhivi*5 zfmyA)46jWc$U@U&>?Z!4xzB#f*&h}P({iyj+Yiop&X|zBni6U+LTQnz?X4Dx_&3-~{6TS}T`S4Ky5R8x+?2m8Yufr-Toi;* z<(#j;Wg&S3J37Z|J-3$#IE5w~P5AE1_iS!W{|()u)Y9+)=l_H zmY@URsX-P;>&az7*hB8?0me5T{FoPKd#X4u;<~JBTxtxKbP#8*e;2s!aXs8(Avrl0 zg|zb$8Y{@P=Qn|GhK^%TR)LO2k_F`0Hea8z>{dx`Pp-e%BmQX0BQ(-9j4J9&eSR#OzKp1YBP2@QiUMj#c(l?OW1e`MtF+$W&$Z6X3$ z+}|4mf$sVL06iEFSa{BPx3IUctzZ4b^tvcA5+@IN&aycWYcUnUdFW2A_e;1sWAL;D zCTI5kE@c9pb&CgtTF?td>?M&H3p6N9SwM?PuaCD=cabBLSPkC~F9@$!ydRjO3wwXp zs01C+16?V(qPOlQ{_sLv80Su0Xg+Uwq0OPQN4h;efpJ+F)ru|tf`o=L4yajbYt>GD z{7o^+%2X}s26Dee_e}Y|^z}=|iwvFg>E%(zjBY{T1D z@-gNfL~bbAHqZ)(fc)$^f9R(`NuK@J#OUhb68QCUG_$7_06Sqdem6GM|z=3RXt z8_jt2!8kAEg&diGK-G?%Mfrr{F5D)-=Ex;2L=sA#@8eGtD5jj2Nes%aQhF z!n3@8X?**T<)o*39jPSmZ{bqv0_Wuz$#mF_R)P@%X&AbbTbM!=MTdJfq&%t-VEjHK{0 z@{H6I1-R3Lbi@$`lT)$h;pT%No(d?rLf!gYuB+syis2Ha=Slrm)loUX@M~THe9Fwy&v#* z%|aYdL!iC{)OYy7^}Scdu+u9Lb}?!idIc`kw(O}GYE9avOO_19esO@#*;?!G!n$!i zngW5Gd7zw zB90U%D0<XW-sk^Lf_}*Z_cCguik;{ZExDAiKfAZgXD!A8!;HcC@1g9drYJA2ai&Nl#m9xqWo`&V2%V@NN2ht= z#5Mwk2>ltw_f?;d0{jn7)(>M&{k2TPSzn@d;y568Q|>o`p1fb>_Z+z|9-JE(g(g1h z@Opg2+#|vjC-s!hg7qYbiwirKtI5z$McS<94(jswZf)C(kT@BctkO4xKsIzRHW&Yw z^>XL;uyFK94NTls17rZ{%txR_Ppe|sz$+KK;KT5)!8IuA={yDvc`I+BuNEBZ^Yv_j z-S3t9m2|63Z+_O|2b`2Uo27h?GE`1_OQ9gk?dGo=m(z4aEENGe<)}=%id?_j)b>WlnMa?6sBkpP{NY2)fum z!i2DBcic_=ac@+{fXYZ=XHly*-?lyfyV!gVp|d#xTZcDO`?h=6vlAI9zc8X2G-+iZ zU8Z7gxq_7`U03Jyw6rfhjbZ0ROA(H$w=P+b@!NB+h6K)+9CuTx1T(+~E(UgljWk{4 z=&a@9^&D~7*zd7MVZMHm2}9h9S}I0u*VFkQ44O8nK<-dw8>+L7VCML~a}X&(1+CXFy1sG^BgjZMHwR2>*}r?Ov9 zxnIgfVO-$WW{_r4W&?bwo=|NaKy8DQUyD1LeIxH3E^L0C&- zZHpJO1#^k0G~_iNNY?KU%{3$eso$XJ4)KP@ZF+@W!d33>InUVZ1!?4tUMekUQ!gUH z_H4iF@8K^&xDJYwS@ZCR!$kk8N;ASH2zZ^c)Jl@bPqcc^B=MABFgZSvy&V z-T+K!^0eL5`8xm1hUStBt`LghO)M)z^U;_Os(zmC>ZI-IliPXJM~!y0%I)jqN?5>{ z?%0y4HRkm@zvW%cbC_|U{%e|U|F)C<60-|!rxLdy+x3L4Z`RA7Bp>F$UJhC+VnYwZ zQaR!v=jd_SrWQU-%xOaR)#Zbqv&axJ)eVH*&d9l?15Puj$E^r zn-J@>!yoXaOn)ad$mSvNSTOn_4j9xo9gL?72d#dd^Dri0lAmEe97W0rbO;C8FECzG zKbx!C%LSd&Mf>&5q|sidz96&3;L3QRe;m`N$b*?Ntc}2N?NnW(yWQr0<(9h_#tU>A(62i96N7ke(_e;dT13Yd<5}2N z>cCvbF@?*;81#s|Ktx)Ms-~E?4u<}>g&H~e1yoGv0;D+IuWao?pDLB}4s}ZxE8yyg zu9i!*{hwDl+TIo0$8WPyUqp8RJ8^3DunpMe)(b*+O;xIbbb4HZc{ujHe#Z!iQ(1i zD8P4YVu!GEzdasH(z%xqwT2sMu)upc-bN9Nh2AOPB%aQv`vl}WUO`>u+ z3lb47TwbVG)oZF2>B@f<*H*$t66;NhgILe`u&|YFGFOX4)`2D!NVvVM zm`FLBn{`2b;5}68k>?(E(HPaZQLa`oy%lG^AvzdLS;-y@6PA6m-y{fTq$<~2mlvj! z7Ki>@3eiUscRND9#JZ<#fl0xMvkC`O z8d(FvT%C#O>8MmD|8VcW2M!?b_v65`w6LmKAKG*)3@8o3Lwr#Nrfp`=(i|$#$ zBo0@!#`+0;ZaRNqk!(*H4nfJ!W4D*VchdOMP~Uih*vjtcb5XExku^i)SHvlT7Km4$ z;`E@BAR@lwfClqPBgM%T$r!AKVGm++LL-C+`dyT)InB{+!DoUYuj;EXb)S_{m*r;@6<&QKr$^d-u2N0_>3U|Iwb z;vjCdZUuvB$pd-GU<5~}#bxHtCYlUJvwYd2Bq=BA+eEE6!k`u*j^&`dg0CIFMVJT+ zEgQrol6hEnA6P1R|bv#KDQaO7{L8K|7-cPu`fBA?#6alcuqXtBd&9HL8B*_%biT`AkKEX{e}N zzm#2j<%P^wy1IqA+$DvvG6Vaw?T&e{vWDx7Y)Tp2vN#Wd`)yaw&RsGw?szdlp{mZb z@I4=uk>}xVbBclVT9ERNjnDq1@%El$s}_5 z(_%g){??To1j6P+FVizwC#_45y39jAiEd=>og%}_qRdB>+`i2dzsH1(%S3K zN#LV!F(i-Hho&Enj|I~vZfj(wIv-6GPbX83EOxg+4m<^wX$K32-(1X~5=h~vRpj+F z+Jn`yNVG<3{|8Tbyc0&~%Zsk}82u5J9{|{Fzoznu37=(6fbR>{C+YcN)WF!LEcD90 zou;>ESKuI-2%<{M(KgVwSR-sro@*XG$8U;^nWS#w#QMg;Mgt(j~T78G!%`}Jp9 z&H{{bm}K*DL|$vciJ|sCQIKbe5-9ZC5!kX{v|;m^?L#^>*3LdFhTg}XFWKLS$8gs0 zB!}6vB^_(jn&mkn&`gfm7JfxicDAN#dqtzoeTVkC++ve*X<9enZNRM*Uu_?-x+4Yw z-=M2dw;yroZwUGB7WC&U8AC^_#NR!aXlNnj+DqU{_yob-V#GECmfJ<%tG-+iuUC)} zRrqs%?XWHe3&lxyTGGGLdfbS1qfPIB?$6Z7qSi~NpCgMja0NWTb^}KlEQ>Z(i@V2O z*?+>ew@*w|-QIl723o}JnE7v&zk=X2SKsL7hYBhr}gNVs6<8(E(S z;-B>MEWjQ;$riO3bZz|-D;lV*6!!WmI^a_5E_C9WY+I#F zbp5}mxb9jZxa&1=MQM&6xArsW_VO1Nz*7U}Y+FU=lz2-81yEI}?|qCyI{$FGVZtjP z+Fcp)DIhONl%$=utYVM=7)?+U);g);LKkK#8Iv;);YMXY6y&^+Pn?TK$N7h@av&f z&2=r4ByTt&`V+?a0m4(mpd+s2U68P+45bIkS1@<-$++hcPSfB>)jNlQM$wQFQsdp+ z{C@I{vC8|tFCi$NAk;?mHn~zdUGEYE^!C*yS&H632j@~=lK=zu8c+AI(#ulJ!BJw@ z6nPQ{T8BNs3Dj|uu3P#lY8=ek+Kk)zA5hWJ8$K1ZvsO2%<(HkGcThR^2y9TWn(Ah2PfCPT3ktRvyD}uv7=R334GaOprWlS zYef=yc-};N7k`onL|ChfvvVW@%d+F2d-CuSdi_~pdnJgWBZfrOD)@sy_g?9lcX6oG zPkwH;D)IX)ig(C`mrKRTkO)XWyl+mIeWC|~!7}L&QUV6f{q%A;pvKmk>)Cc##3&8r zORIOg3Erfv-tc~Rx9i4;6Z_Xk*b|L09>z2a{i}?KF`S5kmg8aBgtXF>WPj z=NpjjQ`$_(;E+p8L>AoQ->OJ}c1snjAv?Xq)~XgC*HVcWpp z6DtGQTkK`o@)tE-_<$-H$LU=>va6Jj2kZW%X4l5w@?M`5((i0sdO{3P0j%Tw_}51< zx=o7sdxFt!c{|=;28tH;5BAS=G{R(AKgRqrXmt^!f7kmyyUA2TjI}>^YoV`dU;P*U z!b}MJ>K=G!F`ju8nzH`8iMIGQM!n}RaS-T!a`aGf)xT@_5_F;)gdhLQ4}^V1Eas2p zyuZVUrnjbsA)@fBy}y=H*9(dLfg0zD06KKv2GyUzzeMi|hc&I)I@L$$#K<3wf7Fk4 zv+eKbpb9hJE>JYDdSQP; z&MN|5;qh9dyqDE+O9?Fhk;5?8&4g_#8@}rl772w7Ei@=Q85#**L3ar`vd$(m+GKVB zyJoDRf^2CDo5+S(MAN0AXolIZ4K`(HG2ji;WyV#S$-Y9z8d~L~6j7=iPe)nfR4m5C zpO(p9klMI0>|4|=Y{CjESA(yq;`N6uo~TmC2|mN{V=cdr!GO5>gRijLXnM{V*8K$p zD~7j`QoZRE0|hjzk!wLMB5^kXn)yoXZ#_4FGiaJeBF?{6O zNa-UOeNrFCF}WODld^f*-LQd-mzD?xyFaPW>03Zd2=c{wA8lcURn!QI<}~cuOga|U z0@gbsEpPQM1NQ5Ov@w5g9nT475^H#F**9|*{d`o(A&Y8v_JBK$O(JP+)rU+!AyWh` zj)u--r0w|dRi$;Ib#?d#TxUh~kWou1biBj0yO&p$E?&-GVT>;=i12P#8UpPN)2eh7 z8s-*D`A7EEE-Ts%ZJ2yMA!@+C%W)2&&HzQ* zFMawq`C^_jm~}-=)y9U+K!KwRVv=0*KdyxG9;Dofc;m|*X@9d;;Vy1n&x3u$cpAU| z4Qo_gW?U`m-93DU?`rl;D1_al^&k>>#V4w^hVGy_h`*hgGA;eYQE-KN*SvrWFi5nl z8y%(J0=v9R{l#h?T_5nbzz<@9@{KKxB;)+ z#Mhni9s7RuSjK=f%0VV=QDR7T+_{mN4yIbm8#D(huRwS56~bNd%)Piq&r^@M!g7}9 zslKH3&}nl#EXbDc3vRgsGE`hXjC`l8VH=s9ik=p3PxS2Pv7kWb=)!bvAd(}!q!0?3 zFyIiyW8`z5OlGZrNO`^ZIX0o^QVLmQ z=xOPDl|eMkYM|<=&OmUM@B9ZS-%1=J+hOfkX$g)xzvDBmdS#NteX~GQ>OSVyzcR+b za3`tImXs*x6X$D9LW>Hh7`ix~MbJ-Xs=|2c&RxB9+!B5dJwpGvq38m@E_ z5iGwqC!?dOi1QD?&RZh_X23#2?FshLWF*p6k*iPFdVf5Kfp2fBX~F3yBqki(zFmbu z5M7yCynq>*<@7Wp-LQ}k&uC8OW(g0w2B3BgNQGwfl4FFkKAP0<2)EDPh<6s$VtRV1`IPS4SdDg$dDV(@ zsg|fS@m3k=S%!c|gvfAfX?(UAzP}~P$AtW`zvW5%Hl`3>cB=baj(2D}B4|$vQ7xyC zL2GbV#FJU|8WmWtg(QPf!WsaG*1AY|d1JxYQODMub%2->x!GeWo{MkXd#!QLY2>ai z3k0sCixdG`bxwr4wNtzWt=9abMuqjhcsr!WaHvR82};1J*^_SdKi01wTkS-p>#0US zzKMBg3L?+VwX~jsq`z`N{4NbDIvHIxv&k$_q5TKTgvJvQ-T0J;RsPlpXYkHF8E{WK zSLU)VKQ3f4W-2VQYW^Vl!uC;K{rFTEc}~LkxdxbKet1?zvA(^~Q@C-m=~EC)e{b}t zYlKL}TtLgT704w`*=0s&b>mukUnK^i8z#{tH8ky5CZJ+^X0e(#M!_S#dS%uLM?&B> zL3x<#haa4M{9BApF=zxj6$LQhxJ;y%NG#!p?q&X%NkX8tyff+wjVc3$D7u#8!eBV^iW2z;$L zT^EjZmvR96Y~pb?+rzD^1ZrLsnq^Ifn}s2Fk$%EybjSdF8{@|3 z>-Y1@*5C-&Y*aGT^{8J<4DUkPBZ0tPnjmHQSlf)Ba?+MiVO+MP-Dtj-Jy@o9g~ z%Y({sncyp+q$_u?AZ!#K)yIZdz2k2wgfO<@bK6i`o#14pz;cwMuARyp()!A_UeSaO zFRd=Grh2qEp{>fuLsg_?H|#x17fDBPx0G(s0W9>c@5CR?}P>1zu|WM7BflP_RRSO7awXqP^F8#S?_ zc|qUJgX*P2w+JTJ^fW5Erp{F^-LH79)($p$-c)e{ypy%BGaQ*C0=4T`nZD}!%&Hjv zCzEX6k3ZiIJY0I%BrORA~Om}CAcc@TdDdX|4 z*TkuFa3Wg;1s|tR)+LK~r~G?Ia}g3QH3esTOn~Hlg0E9lO_qB2pRGnH9e^X*NX?U&2oPhLm^uF% z5;^_=wfk`N`)UHBKi=s;Mq5f-mFvTv(LrtCMg90lH=|Vm286^)uy|T3elA|#oZ3xl zcZ-vDAE#3$G90bX&^s2`%)|xrcn(X-xLP!W=kREhr2!oO6>uV zoj8vdgAqAmSu_m$JLZm07zAJc$O>x$Ra#ZI2Fj*XUTy)Hb}b8Dsm zHTYAkD$8p*8AOSZx24mj-dCPx2FmIZr4A6U9zd~A3-flnO5&jL2~}pC#O^=*ax||B z%hVI=nQZ$=9;@`OrFwX4KwF)?&~?%f1HDZps^WfvK!`1P~a1n1TN3o}5> zzvBE+A%}J=!U;935$E3O-P%~{7#A)cbl#N-|MaF9v6;B25?R3?xuV&HP z-l59(WzkcTdXyZ$dtx{Rz6N{7Lk5cx}j$?W)ct z=6a!9YT5BWxx4P}#)%;QH~ADg0}tzP974yr5PEs^&U+z%5-UOASV3}tJns1H{AOmW zR%PWJH5A*@*4f$F*{MVrwz^ZOX+C)fJxkr8qKAEVxae?KC*!y+yW z^e*mq^u=9n934XYU$biI*WP_r)upa`DwpRXGUt&Ctd*2y(tCo)%&fy5b)#_ds5=IM zL}e9y%z|YN({(GO6i?qw##JiV<49=ZR1Wv&q{II0ay39*MbbW_NRHqT_`4_%Ihi4U zmo$m9q~2uJrgJS&9@wsN0gI73 zLxwKKfGD+fN17ctdSs~K)g#2M#gsAfJ|W_L;@{KVhSYE{8N5I~jYtQt)Tzs2@KDl! zj^gzos)Dbv<@(3y?<9@wQO}CutdrjKu(Yz=3obS?5NN#5=XQzm$Cu)(oG3j3wA>mX zEC@Ar?{c#DUvoA{*D0u$g?_fm)T5Jw!Ocin#<0(Y#`7+mk{F(|_UE-wOv&btW%*t@_J zOf_lSKPIf=Hjht+>ziW+ZE#yGS2<)1#g)AV)YS9+h}P)n8f@t4h=zoG+0mi4MkvM$ zI)&ED?1Sfkx_2rWaRyn2tUehQHVng~Y=6AQwRbY};nPG+L7|cJR=< zpV?23p4carnxq0#lCiXI(U^tucKCkGz5^`UXu4+Q>3nE;KIIqb(XL{{_+<=?hNmEl zW8L!M8+XMyAWmTzpttdsdw4vNdDz>YaOB}IZ)Qiw;DrNRK~KO;VL8dq@F;;P97qxN zx7i27@N{Q2=J0m^crpCVVV~H|5fGfwR3?HjxbxYXNRFgvaa1j?)PvhFjvU1DtgNm| zh-d^u%JXx0oy_R_T1i{73-YFcvg+mxTM5R;Od9(M((WNk5)NVneOv)x7g2=WfsZ?~ ziKl@4QgBZ_eHjnO=PHPl3WfS)(H2>eP>;Q>6y0S}vn1R?EftKhSnF_%`Kaix#+GpJ zQMdWL?rP=Zswk^sgT;cri~CO8K#;{+o}FETmA_O&mT_iFD9I$m8e9$Xip#BXlHJ#x z>Nd~r0th5lW;OcxA;&OC*J``z6rTaO9U6J-*QDAwrca?B^4xT)U-`t93i`$gP!=d( z3QSk3h+B+&?~O+%cA8NC-Ov}$3KQoQky&;gU~qJ_VlYXdF1krnmd0c=igwT-VOL9J zL5lNIO%M0q9{IIZdLm~a8kQXhJP<2?ee#N$(yvbB##GaJ}Sq5 zkn2BRnk0A;ToWbgk2nS~c(kv?|K8k}@bihdGgFmgwBjf2mk04JJ?K6R(lM%Jixk!c z@hJwkwnK& zLKtyfmUEIY4dcFnL0wgCdJ@n&c8P*F)KVM^=^<`l_|a9HRZle$JR4=Z9*p%Icmjsb zU;U*NB0@~4r#Gzwn~Dv9GJ_IspRD_a&D-+IP~$jSGESpmog>?=+ze6Cqmj;7J<%E?bi&eJ1n5O1j zYikSjPBS{}>T;EHkWF`QAf^hnaSazl@n&gj;xwlN4;K2_N^C-P6uR>QV|;zqR;R2` z?E-K^RlcGH)sg~!ZObCtU{or>kjx7f6Z4(+%Zv~RG)a=7*Y$nBcR~aJFvei#(OdIs zi>}+dYK+wcL1y)xc707au)OI{f?T$leB2tdhhy54e;fazePJ`;!oys$R7{QG&Gt-XeQ--^xl0oEX&yA z{(YHDdmIm*>7val5N9E8dNvGfE5I)!WxjSC=4%Y-LNJ=@ECEwEVjda_NiW1AN*R-F z&7pYF9YP}$7C^V87adM9Jkn09gMNQd)Mxn$)6L84mg@{;^H{V=o(n~&yHvKQm2fC_V??ZL%jO`UYhNWo)OmeEsiumnAs^c9gkaVE)Ibk&m7 zQbL@WcYwuP)Cpm2@Ng=Y#dq##{s8D?Hs243(MLc2kXP9$t6?I|a&2BVCst87f0Zv~ z3kb|jiWz`Ha64{f6I6USox)@!wojJf$9Kspf#mhiK6_@?kOegnn~4l7`!SAlpv_Ism4GDM6BsQp@2KdAtilir%I#?$w9Dd=3xT5+cPnPs?JawsH1I4Fu*uB%RlMQ{Y%dFB>P7~nHU6ihn+?Wg+cKjLW+$+3&2)N!MkWIi*U!& zoGBzf;hK>Y%I3@2W7;S_#4REh$Z_*(GfEkR9vaPMXx~VO}UQk zmQSkNol@(T1IltwcwxqbV@j8{4ch~AEu>qaO@Toy<)ZM$ih5ff{6tc#j>uItwdiv9dy=Is|YD>?8H0( zDK@1Z5*aFuyi)O!8?i9kheT%(+6C7mTm8f%j`l`vXi<)<<&4O$k z%T@5qTb&1k^Q*5*s$F~HkK9&6@pmOdYQwKV?=rweqosqUN=0S%na?inI|-Z(CCBv=}Oi3I;W(DC{o!5Lx0tt zNJ^~;3-S0ndaur?_8ipfO!d+i$=U>#8n&3AfU}_1#-1tRj>vFHbcI0+0Zi#rErW@x zqZk-WLEeuc*s>f#>ZgoDvNma4CL;|!E%a_*i%y#?fu93+TQUmz4Qr*jeAxX~EgaOtInd!)}xZ)AKMoD0Hd&Doac$~}n*qYC=ftj3<+PgFVE zyYr!CjYPu?Vl$N*18P9YqhS&osg>X9KM56B4eKq?KJtw)tQFZ}r_<>w?9MsAbra_F zPlI!pS>=FNLK`~rmLlaXEJ#;Gd&~+iq?(#ySjcb|5=f`}B8)FjKG}vNmN(Izfs>T{ zClPskLYCq|2nKRju}6-=e*n{x=NVgSwE;(b{%y%Q9taqM>%fQQTFJk0VseAxkR)Mk z`lDGd%eB%L@>fdG*D_sq9KyvM1t{gaW39>>qHB|VZx3YiEGH{!Fs2utFq-dyWqli9{*tlR%j-danV=-DCj7?rdNc^s zk!bZRPDt|v`&~goa9V)jtZqzLhOc1(MQehFYBn>(E9Os6^EHB{ZNxPToiX1pBsE-G zXJ)rXm4}Efx~Xn_i8A>f5s72mn+M~PJp9w3^nzkUxv(D$F3prMKM0B;(;_0uuS4H= z@6|rPG8-Yv4v#Ymaun}PY4=rK8gCB@60u8W4jF0PQObk|Fq?j`6Ky`C+vhN*cHB=7 z`Yes`k^eL&WjcB~`zvPRFAZj4U=|lr;8mg72&9^=Yhl!Qy$+HL*TrIGUT9-q_9zex z1<@Jof>5ae=AKO-wd+Ui{1|8Jac>5XtX{@PudJjRHJndZmRbGU@u^IXwmHWN3;5dj z{EYY1ajq8?afM?k_pmL-gNVFf;p$s zmjKa>r1P?a0bX(2_>$bw-b&j5d$jKvZv}x3owD?8JSXEqh-Dg~bx+u8AJyvI&_5$Ink5#`&2{jqtXbY~zpt12dl*pLLde!*^G^G-*Nfh% zb?A=KKJVRZw&V5EbSyukI!3XeOr{T#9ItkQ?dQbtaIm8QQE@=spbalER}K zSXp-cC^=ToPLhRwtz2)r<9pu&1x#Qi(=6c!{2!3ai;}=WPltEGD$eAP5u~Y;lRfY1#Hp z&qcjo$5TyBcQXeI1_eRwDvnpLu2we={9DImUw3=YUV`>m9Cya0NmIx9XxpArBeb)F zsdTN|7wcW_i0@FYJSsT_pi7;B^)k^R4-MpYI=uCHB8HpX-p}6hInrc|d%cC(v4D(f ziKo38xAP{#={}zCXjyjIw|#t>x6SSL)>Ve9^_8^ekBasKlOhL1SYd^2*3H8s4){?z zgvfC9L5Cq44~8NoM6pBpD}u&o^zk~1K_X8i!jWj5a|)n36Srk1n5BdS&RpO|H4ZQ- zuGeCw69po|iE~?Ffq%M8C0fJOJqwvL;1M$Q*gEqX=Ur5Mb{prjF%l*%t`SmWIR`jp zJtPE*N1krPVa7!8+uasNerO_DKslg=%t(BJD4`<92B9v5XesdUlL%t9os_8418iwm z%~>l^d|qGt;KBevQ<+i538XE6-J@@?s7>?^=-U@MySl>~%|axhwXqM=g9zeGYZtwj z44iBydLL~iq9rOZ&xpyG>ZXUsKX@}vdvCtFgSW6*KWEKqw-Q)ntm;1E+=+jj?Tpq5 zt2j-cO6p%@gIB5F$5I^@`;A6nAJf)SSQW^Ilp`bt>Igp} zv6uP2V~^SdBc@1n61)&Q%0}g@C{8N5-RfL%SG%hm@h$XGJFU}pD=7u-p{EaFq+%X;JW@(+vnA04r*|4i!lwkP z0?%|)5cnzG)Fp_8noBCazOBuBleR+I)Vb4pc+fiXg;|cCQt3e_`R52~KOp)8afhf= z#)oF|haZM!3gy0Sh<9=e0jXNwE&@^r0kOL- zs^Sbz$hKVdDeHdZ5Zgrqz9EYIs8Qs{C!dVr_gZn}M}hocy5h*_%wridvpqa9bPqrL zvIOPt#LwZXj>%Ww(!ML!bk>H20hatqw#V%ztRT$b>nbuPG9;Q-e^*nK@9%y;U`T1R zT@~b=m(D@P5IrT%v{J1o)qMKIak<1lM-ZBFrld)ak!0E$fpIXDV;{)x0Z9S!kk9g_ zTY!y9yF1c|-rkZm!S>qxF^z07v;d4|HXR@+6Ik_YID=`M%BBmcyR~vYUpwG>T8feRT5P_ZHRwx+iQkpEP9v~9tE-F z{irD~aoSz;(4Xo-sql8~?JwX*+8MO4dH zzh*bJNb~c81lK%B%bk~%ZP?S##OP?u@?+BaOkXdLIpglh6!gYjwBGR|Zw1TbF7nD4 zE+I<264up3hiy~6M>zg;3ty~@pRYNKh;H)9!zNgTX;T*-EX)t{icbB@DRZq)&G&o8 z4GdR!ud%%+q4^;8;xAZZG;djJ8!igq*3U;peQ63it}<4MG`6nQWjNB1uJ+y|Y1a1z zlI^qj(wI7PE7b;>Y)-;kwA&yHsc6SeMnXu)3rU1FP&tz4V-7pL(Nur4wWy0@^rh79u zzd9c_17fCOl!;NY#jQ#Kpi_-&afM~xAw~`JO*l+(L+wQ}tgjG9uO>lgOL7*HvN|70 z##B|;s?PFcgR1ce1dBxkmRT^^3LX`g#ad@ES))za=Ve7A|3PeYVNQH_ z8iASd`XkTmZt7a-fpcPz4x8+?{P{Im19de&1G$+F2U#E97V#y9Daac|eU?=!PiDf` z<{!!x^dl-LlC~%+$qxng8n zs$n{vC6kxu#i~5bR?M2Np}WtQ26(r-fQ)8l zx^FCU!y0uz5g~{@j9O$U?LL2e*fcYLxIzZf61czH z2q0PJODsFR-rY-D?bE%hq>FeRq5#XLho!=37JB?uY(R@Uoe?d>oMtVzsElW?F%LJx z>#BzM*gO@5ANkJFUG7?^u3@LZJhOR9dR(J>wG+vq2`8e#KP+DJOeb#PUtxe7iXHh$ zm`*7S84{&R5Nxo5L{)cNWxBw8RFg5bUamv7#v#2kPuH`Ta8%#oX7V@PV!Ns{LA4lJj$m zC)KA4NJJ)bjo=m8i}7+3NpNC_X*<*p@BqX2#z0@G!q;Gp3C-)SllFF z`~h6n+4Y7Suf^I^ua_D`LV^D+bc-5glXu?;8r2#j6HCVV8U&8;hb>htQ~5MjLY`W? zAGDG>>bG~_kd+l7CIvQq?dDxt!N7-s%fEy-joce}(yrj&ca*p72bkf@rdC2vBRY{W zYt1@_+@H6^Y>iYloX*hjItEvJs)ox(32cSoXpjE+W>GfCvFD54(p zR23ILY<4##j-qqElXXNX@B$A_Na|24=6-S_QJxJokw9mH^tbV1ZS0-`h}9{+IxQ>g zc5zZ6?Yg6W--)w(;CM{BH{L!e@1HHC&JQ}foYF=^Cw9{rL!AD5b5>D|J7F2IJ_hBm zgeJXXEs@y=6E~W{Fd`iC(KPKWIg%c9?`t(YK^EVXk&TP#xwh2`_fhItltttU52qg57`mevO?zgOGW6SHTqz3$FGJ7Zo;GraRttlOcn{hmY|!_ zcYJ=pD;0Ryg}c!7Ja+#b#JR8g0cAg0=ewKY605?2Lzq+d3Xr%A$8&ZHU#yMUg@!?@ z@xRaTmPIe>^33~iGev4Qem$lCeN>Un`uxYTSkntIPo_8zC{!Q64)qnrwg2qyGtWKg z#lRIq2@Loe@0Zu;j53dF=JqBb@I0}xxp~bE80zENxz7cYS>_u+{teqA82CGs;L1Gm z$NH|g(1OSIG6<^dGlnm8W4gYfo=ww^X@8ZU{#0!4J@?ED^Jkt;c6EZ9=jTt&pV?C| zdHT5oXVz~-M%Rgc_Co5m_eQ?qYp=vXA{=2ma3GmUl9=3Okq`Sw-fdl2)5sw~8(Mj5 zExjy$2{M$^G`zG)`!fnwtbWzWv&mF?#wgM@WTi&uvQW7Olny;THTkq8D6hJ;PA8}| zp%{zFzJufh-NBp*!mIv*R&17pJ(E>v!j5NGrATroJ7Ef(%X*13xHzlIx;)>|!1wa? z?sdJlDo!aL6$(7}%=6Da{nF!4zxd^6^B13c{OOnGS$*}}j(2#pfVK%)Jd)I*L{P}g z>0Xvl#<0UD9)05Fdwbc-lYxa6+gUxXem(CCn+6X=|8d8d-3uf{biUwh?}Rgu@D$%0)p zf2C~JJ(GkbZng9P$1c||8EaAxZnx2osh1Oz+blV1+vba8ik^bRGXiTN4-#<~rRL;e zAS~b!|7K)F69kbhSKrHejZ;R7P9=RN9Xs;q$4{u>-|T&}|MLCxvAxvqu&6&H zV}63e-naAPZx@e#bNtPGc5?TzJrvYz8%i+q;G~j<*@D6Oj5yuoTnEu${e-qDvNsm2 z_`3X6Yd^4MD6KVTIG#~q!FRh040Mgs)09s;_O+^VfxEr#Cfu1tt4{E4@*|{DnBneM zPwl^`1?*uT;BU<^*mOg;s@>XP5Ja;%2)0JJH)NisIU^|Des(8)tYar_!I2Dt$yF^}!tRNxAXg5S*jZ!Hy*UTm5e~QK6Rz8XU20ksUbCi0VTuI- zC$k9_K^DM{#UH+_*a2Bklc<9oM4Q_))`dXZUrJNK{wWeWS>W9inZo4(bnNM*2SU<; zr|js+0-YSWWL`_-jQB|4gFadKdQ3kNu7+dQwAGXO2kR5LI4#3-S3obpfxiapIp}T< zL8EPxhO`K^Z4pKi7)giO0~$HUEAkNN2v^5Nj8r<ot|xKfkGXMI{mW^EL;@+ z+9@d<98L$P^34Ffhh04bnr~0bDNT~%5AwhUE$yP>bVdv6(vZMxJ4FY19Wj}i9L62? z733$(A>K3TQXiWpfm%07=`}G{nK?x??U9{L|-^rYH=4G8`{GF&vp{ z&i+2Kzpc#<{%;;E0^@{k$KnTeKL|2LY`u2mR_qAxF*5*B|IH+3XqvY63*z|KbPB}n z>a(chyS#Hp_2RwcE(5fB*SH~hj>LOfpJcI289iO*2hDHXKvf3AzIv4r;KtmL#+g0+qd-&Rl&J_qWUs}ujQry zVX`rT<0WJHiY!6x%Lc$Tbw&Nk8&smm|cjH)QQzyI`0Pc6hH5MuXAnep7S)vKSci?g3dS;@B? zT!(Nmn%+D9=GSk&I(hQt^!VGCPww7-bczSNCwEg^lI+Ym>LaRI1^^HG&1*W-d znxDM$>W6Q<|K@_W3LKL0LAP!Ga=lg&dH9zg|im1euMAcB9sJLvuG>Hk#w`smJ)1J2-!R0n3RNq zKaoW`J1$zwqB^l6AM9n?sNFFct%*5ob658Z-*(rYOh z##xwCq_Ydd-Ee^@RGG1FYn}F98LZ@s4||I_n2VLreZ0bb;v+hajaGQ@Izj6$%@L~; zVe{o4ebyYzS+xQkx&jC23)ex8Y#Zt%5PehhrXTygQOpM?*w65s}Qn zMvNswX`;qTdYRg42ZwV?3|f0P2hEzGsX9>okw;jBJlNV3F?74|>fw}v*Wku{58evYb&qUE&}$Q{^x5YT7m&uevbUxP#}^(KQw6qZ*vPQ99W-s?VHZo5xTw{LiasPGQ=EP%E*Ny74PJLAz5A8s1X8F@CqW+* z7y<9(PSUu=4DL(CkdYv5urOOCbJtrr{BeJps@mOf&|6{H8zPEv9`-fV8KFfa*D<95KB?avx5PQu{HFqBqD~Ef*{@HM5m-1 zQ6lodY>~Yki(mLu6j_Ew9GAqKgy~|54QN;DGPNm;gBe$!o1(5zA68&t}Or0jekce3$p_b>(IlY|pxmLSWaZti3Yc(Vjk2?m0PhcN31Pu=GBQ z6BIt+Ez62!*lCww3B?*3yn(df%2V_@&c#+{kN@-JBm5@AbVOE;sNEWz^;wHNux(i? zT9A&=scZa;*XubU&S%nU7lhUg_|TH98Q#6Ydj(GGK`6D;s4A3`4{K3>$XpEvwj(Y! z5h_$ESX)ve4-_@*(4Fd9R(;xW21n^T$0!0j^qeBl(ZhmHFea@XD8rUn?XVuLC@R^4 z+mu^%uW%b%WVRENXHD3o?#SW&)aa_jI``>!YO?NcDu`-N_iZ&m;ncXYJ)&9F`BYE% z;;vPeLI8?PmtDRROC@Z~RURw~tDZ7S_tJId{J;IG=aNF!eD0uxG zf^AxKU4+m}e+~De^-9Pq_$4#{W)!p}ipX?8Rnd19YquH->$aO-<)#>~`695D2`vvw zqdA;;aozEMB|-{SQbWdQ`nCitP+vX#Khos4s>x53SRrtE_-0b=@9qz%v&~hQSpSSi^@hS+Zi50i$)(zK81A#*Izev(KGIa z;cC#Qs5!8S+YrA~0*K^@f3X6Ezscbm;H)u?UX0L_yGmt_VmxVX3Wr-g#yz7G@ zu6Z)D@M(S8ye`xh0 z$}mvPZdqu9#EBi^B<*XTucN^QtWejlZMsucgI>+WF>XoL#i46Lz|^gp);Yz4 z=7W)gp2ziI0W@y>x9A{#77uC3-5II6-4lCAedP#gVzhsMkUD-- zauW`^_T(yCbhnuL7OB~;}- z9&%4P(BDm7=cy(cTgGsP+7*Shzpho<+QhiP6Vd|ZD6X?o8RJ}&GbWfbvShEz9qMkSU{aD!*slkO{ zgH~pNx$+<+#a$B48$C4bt!6Y1(M~G6#%qO!JZ(v_h-2CYt+D z@q~GXRE)dEuNylCT(a_|Zj}DAbD#i?Q-%l8F-DfJWo!}(D#?D$#QIsvVck)3!b75z zq!YJ28N%RvnC=GPvg_%=34=CpT9@`Xz6{23 ztm<8NWWop92fo;L+D_!|-|wK65U(}$WMG)|TcYBYl5$uv5Hn6;3(pD6MNq4#>GDg* z-s*-1?#2|8pPt(B{S0*o3k9nYy+dV@$0sBc9QB18uI>C~mzZX{h9a4{R-*n!7Z%L& z%WL4x^->FzR%Lm`h|@lN$rRvKewXBCs2NUe%x?6LJ4gC72N$ z&@Ib@G7daBJ5X17DRJ0cKu`)L2wsX`?kd|kHqo?K?zY2ZL|_V97Xs+#MH?C=D^gvTKq|0~oL7RqKY zJ6&Mu0~;f`F3?*@Ep}Ko#7e2413`|DDsSzU1l~P;+D*S@xM}vZRRKb#BLYl&zl0uy zbjqB~nsE%>fHAa=ga?)v5T5i5oN}(CnOkC`e9U}O=n3ox9eOpQ3?>W(WoHA^Iun~C zeTpQ48)0R83X2tv5RTzw@J1<5Gnhg{RdZrgz>pn zIyE9A$MmbKo1;d!QMQ_41O*pNqlmWu*E@r+){)~MHlS~8PBcp-6d!6mwdiKhA-&VV zhTN4lHd6oUCaNlMByx@e4g!6oDy1&2-G~yMN_5&HYcWfsvC&Qm_G?cIdRJ)ze@Ykm zqh1QlB?nP_%n{xg60v8Ro0WKyPp~I|86>8(9%zIq2S>zXXgGJdod|3jJ_-UhMrh8# zP=#EzJ^rBD8EsqsVAdm6v=pCjX5D06xblZY*?r0>C_bKif^>>fJ}#qQA&hBL-;IuD zJmr}*mWs(r8bL#-mJWH#b%(>=`kp0%I?`{1Yg7ETb88gB(ewavHNTe9M)Z_elI^*hxu-5+_#Rkg&mL)9|MW!bSCrOZlI&#m5A>1-0ErT%k zPHSiV&?fONP<5k6wmj+@bId(LhbW=J$94~Msh=zi3-aDGVmX@rCWPV&RU$^iup0&$ z^WDSD#di0^TdfJrvt>p2`Ka|^NW}I{cUFIw8cDlQDC_XNUK;upoR>zZ=ZsTTWPYL^ zVp-UT_0FH{U1@t8w-NrXU$JKU)TB*OlJ8Jf^f4D7R@sO)sENOQ()jKpd^~(oG{nm?5t{OHamB!5_vx8Yle5 zE9K+y(8Zut&+}!J^YbUo2d)M9DkwF&t(K_}d+$BEGT~$VxQKR1Cn8rx?!V%G(U+8w z$OhM11+SB)dMoFOQ##x--=>6nQ}>O(a5kxYnPA~3qjgbN%kMex@}gSdQ{82aM}$$c z?NQhqTW2wH%J&!|sn-bLMP4ok0;DQ!0I`!JD-QvLU)d!ZuaiJ6yweDThA3#rjsOnx zL240Q1Pxu4b?ADgK@3?fo-m|}P{x2Iz?_j?5C*ogFtjwISq#)8Gn#}!>XLpx>|{4l zAu<_*!2yI=crUP-)X&j6eZDj^r?Xn>qw57Y5hDGqbN9VPVF9vl|N~{$5+J7S3+jFyelF_tg?=zZBd|X>}p7I3_{(qBm zBr?MeShHn^-`kLDg$Ig@nbZEjlZm1G0Ch(gql{E;eg^InsqNgt1UQXV_jYC$>{d$I zX65l@a8>$~m1dDVGfZ(y7&MbxW}@w(x1v%_ry*EydJiukO2yd$>9g$#d$Y(~b+BMtVc96%gxvX9#g!op~-RcR|dOx}D4 zeQ%*C*TS%!2aQ@O?j*C~C`M=n$?UYPs;w8|vpa;-iGlhZPt$wbocuhsdWb`ZU4Ahm z#Xy?O4KY9l$o`%koMOT)4EN?9J!KGs4Ug@@aOiN@z!%vNfRvt{f1f71U*5E}x^@7+ zQjZ-|nrFl0fbR3+VgD#xe=O~~6Ki__ejm&6U#v)UP(6E2F%if4ZE*&vkLGgzX56xt zdi743y{FE8)>fG_Ah7M`bdV%teU}SfOg5GwW^p}o- zicP0R`V9jiEQU;~bUvr`)YR-&?)a))dO+Y)I<85GfsVtdG%Y0^jYi(-X)4a@4Z~o#MHdCBx`2*CYNd=;M7UO8@ zet+rOH@&hC6w{9MX?&a(8gFoh!)!xF(Gr-GGCw+LM6vhCp{b|G*%6(aGP(Y1yWDGz zYG5tX!R;yq;W(sBZ{!uvlw?^XS)nR5=pf&$H1Gf~2X@az#-$>IX$%{o1p80#me2>C z-rZ?E?uRDO<}#mrpiO14WCtI+xw2y18q{D}}FzkUN=p`tIzHN}y>|M&7)!zRtW3q$z% z?g|Y9iZrFg`{`mqp$J1cmM$4DQ(!EZJg7sr|s4DOul0B1p-j6YDlxfnb* z5*Ua?RjdUHMnw)^*%b&x0>a`s6OPCM1^z9XK~<5o+WZ@spopGq&s)-9_|cUrD4S};agF0 zxXY;{H_PE}BFnlFcyiqs7NMNoklM20(j|9k_-!0Ki*4hP+PKKnx#7oh-6=6B1=k=DISM1|@Vjn}iFGpPfh_RfKNh>o9kvnAu=R(n!b|bS@6h&o@$$S6}j8 zNd?+$R2h%BB?P+YuUTDOv=skAZ(7#b*L(Y786f5JwNY1^0JT?oq&S+#F3}6ltvzm} ziL@PKE!_*M{u`E#H5yz&F^vt&V*DUU-of##%AuOZU9LNH+jLOzXeC)r8rrhTTOjOo zF<;+D87xDkduhfFs|LkWIfR|;Rue$8Lt4O4GxbelyL&C9LQ7K|Q_g8B-ApDY%{MrX z1q^}w3L`Sk5Vqim%^a(W(y~-Hm#>*XZg^`xw`L@sUcgMT6MXez7)3x0B4e3(Ck#dm zy>PW!d!`6V2ok7l-8)lgZjqwUn!4kNSiWN{^d`-6077X#QhGl)3-BgXn-KXw^~>9K z9MfP;SiHOS8Pb>3#o7{t_efZDey~j z5EX~ex~8M&vNQ@%NSe(?pr}5l?UNl+VRK7KM;X@KW}ZL0xvWh*Gfq1%`|IApy?amY z{R9ta?DK<%ipOqG6|p3QVdV9@)j1NsfSl_kOSCz~Gq7o9WK5hL8!kN?F0d$;xsqn& zuVY6~1_IxpAGm|Bch7Pl)6QU>nY8LzlkX)2#O>H@oSlrh#=AyL164i*{y}^>=^%%< z&coQUMd5@~ANs+VvmhDWTK7vTQLnb=@39;KX-{x)Rbg^%$h~3GI6HJhq;&oVax}^8 zSg!JSXA{|}2cN+wAe3FCS@ya z61I#jppX2W>eQ=7(564fMfuI6dHL>;Q zWpP<$FAFSzatHv!`Tv=Jp9`y`ZxJItb&ly#%V#Gy?XZ2=~BEiEv+EdydYe|J0zX|PgPw761OtraB7=!#Q{y` zjNg2EHa(v%q7X5-8KSVO-%lC5-0tP*^4c#8ev?klRe$jg8R|G*;D}0%CY+Ex;-vJP z{keVr(MzS7VS44cm#w|v)UPI*)q=xwi#0lTC!uausoX8O;_bD2fT4y%ksv!}G~*H8 z1`N<6;{&RgnL4lQZzM0u$Oc88=V#EMV73p>IB?y3|L{$@*u2Ik$PS*t_yWd^e~BT_ zcR$15_1lqegAtiulh%;KKaO3aljt$J#@tQEhQ^zKl4zYo3?P~xz389pw7CPWIM5!& zxFL$)T^9J^LUj9ZV6rN9xljX^D=peqkO8w=S&)koZmyE1_qM>e&CD6r9w@Y(>6$Y;-$AF#-*uyJa8J8j;nrNuZ1Ii0Z@sgI70;4_b>k=qp9Nylzh5SD76K-FhsK4d#d#;Xba zNL!|jHtC?=5_}R4XdUcmS=Z3N+g0T?Zag<8?SFgVQoxCuE+g|q)-UD+;8%YE% zJ*g`iW*H1}AsP4DuHmUxbG3jHhA9uZ$$+j0>^IgZ#WMzb`Vy@fIGBX;l-+_wCl16w zn@Jt7_OgC~7w?G4NWf5kwGpo$X~~^xP2%0ml-9OB;#P8V2HQm$qx1z0N=%5U6yT87 z1wE}d;P3J-8MjP!r6$zTc3E^jD@7Y2Rd_!a!QxL@6170TNDzo;G=hF=^T)qO03STu*;p zyz^2+AyU&+QNo`K5mYvnxuEo$JD+%d^~z924Z#R9zeF^(`#uDxN4t-kFwb*Zo4@$d z)bt4~YonV1fE>!X+F2{@q8Yxi&({s=syX4oQM{L^VKAjpFz_QmCNjvcMQf-pK7rrg_Q`OT)f!ikhFXyX3MIzKYw@SIYfOFp2M(J;f2 zP$$Tn&CA+PhA{hD;LEYVSqp(QBg4j zDX60Qa@V@5q#%9*L(!5P-zpcZI^uzzl#5gR!b-)mMz4d%yqQcU^e`>+h&aK#ArdFH zSls9k^#?VEP?wz zpr`!E9Q+nvEs%tux*kt}Si1-=Z_34Bn>ubFfIWbzQ;+@B*@jjn zQIJ8)Rj}@a`aCOWK;(_GSW5!mg^5o~d(=$GpuAA*K{^*KCP+ltJb?h&?B@O)SY5{` zXwyqRi;ksd1!o`RwG>K7VVeG&1f@N;>)y!rJsC)R@%mR#4;y6;7tS*4@2`TQUqHfGiE-wInt1N)b#w2f{6DvDPa# zZ;E0S!(q|j29&;QSYPw>IExpdo+o+k5HM?t*&UY%a&jniYLv!xTX`+L?95m00iC$* z`>I&-`ID!b=u9=C)YjHJ${yZ|#qOrsWl)4q*08u&49{L=y<>{18|V8xE<@*hul|Te z*tIEfK^0v78>1a4(XYJTEo;{dH`?6FLS&1CpRmp>YCh`l@%FvLwF0aHMFjfF)KM|) zE0eyP91lC4&ZvK0o1~@~MF-5oj&lY+x{nzW%1<3Ou#P^_X~G{QC`I(P;x}yg!@Y#3 z`AV|$NP-KD?E~cE9)UAH+mOr|KVcfw*2twZyK|x~gdj+iK2C#A_9+!mFa&jdvxdk( zqqB!rtfqltN4Ma|bcZVKOpQd+<6wuIH#Vn)ipy4Kz#aD|Sx(+!*bgM*Pv$fJ2)__6 z#8^U0EF{!B-9|0!f94Ziwdu5g{6JGBhY&zF_xExj$XDg{%~F$66ML8yhp;Z&5vz6- ze%0fL)fuwj8XgFq^JM4DdcekM1BK;{V6zrowT#TC*0C?;=+@WQG@FvXe-xYy#LFNb zH4lqFW{jsX?kTpnP1)J1aarsmYIMY_ePt>8f@v0R>}~b_4DsG-1%Nc%7O=IOT-z<+ z-&*F`cmyC6w+sR@w$Qq~T;*8PMO!c!Zd0yDAbk5BepC6as%OG;F;dNtPadiI&V8{Fvg{hSv^v>y z1qwhMYi(5#i>@K=K#ZIIBha?OLv)h5z6#{6m%igbQQ43x=`AGfCiz8{&ig{U`gAxS2cIKWkuelNJA_ z|BO2-l<5r#yu-)=x&)ciTjp#%ljbr0p0+S>YO0gG7%zI~z-A%+A{X*{%EuOUXlT;_ zacSl7(&_Un)uAnF_>q1SrhW8=4`Y+b@#f;9d|NF1nV%_=4o6k>PGy@w;+xIFmFCayJ^u3f z7mr@-K6~-#`R>8N`Ni&MkG^=a`{2QYhY#;Re6WwdQPRH`I%pbiPnKkQ);MrA&qpVz z(~qd!^>ZdD9SE0-vT9rNBb`dx+r~uwSNCAavrf<5SxZZ6IRLk{mu#u$_^ev;I*)4Y zszR+Lyxhwz-+h8%GkRK43 z2`T`i(tKsI)|Q}<>ShgTi_$yqsA!LJ>n2#yp2j3*AEgwG9VxOWot7rbw!uzg3Tna* zhnK#A!Q^ezu(Jur;u+1vD3(XGlr0n1o8QQb+r8c`u?gbALE1be-sq$kev^|+4&F>j zx_I#9vj=_;YeNyi;7Gm$d`-;J#a5Zo@BX-^F26e`fcg4jEapzej%6UjF|BXsaH_WmdZ^ z&kT@biuOmv43{}oV-u#-F?dj%oOA%Q^suXy8FBb_XxDYO{if0EDGr{Rp{gE4i@ssH z7}z!1>oICsG9~LB=s0CVnKl-ipmUyUZy~9mF5%_FC*O3(0PmXqACh}|_pt%C0yl*c zEkMauqR|_>)X~~yuA3Nv&GINYgMsM-9ya7*?By_H{uw?bkS> z2>>WuFO4$?{1N~a{*P=yFT#IWOPs`GYsVpwy_K{`6T zg8ich`N46*xH(RU!f>|Wn=QP{4gBPENKB(e(N1cNCQUFQy&NiI;U)t4X9zTz7-GG# zxv8YS;eWd9#mW}3xpj4!*Pxp^m_jc8OM2Mdj}?~TkT|@S6BTM~sj#^%QFpS7w+2;Z zZD(OIwNB*1R;Zj0&si6wfGn0efbB{)wsK|5(&jb*b%$M3vAe5wEZs1*)0(_jcRky< zOwkbz#FqW608dCji_P~OvUYm1&%R|Wv@g1wm7pQS+b{(-y2K6?;A)b$3vQ-nAe2Pg zQBaGMjS%RJiXJ9ri6fN?RWV6UrTnCKI&KBChx3D}rg31}XH(%Br%)Oi{%lo|+LZPx zQ70M$WsZG&18{VowhQjQD(G60uF~Av^LMtD%~(-~`IDotC&7{(#F@Z%M84yf!IS02h(Xn2XL??&$*GomAJ)gE zoVdiG(iq!#Da@SPKV#eY9LI9cW~3#}F0d&i^R8W8$MTuPiicvXB{xYbGMFmrbx@+@ z)CEfOrcM5|m>MD`+SuLP^+|6Mu_&CP?I`BZemxz2Hu#Yo7IV_cV28L{4LdJ%U-W|r z^g&FJ0kz&VwbyGL$>^^*P7pps>d~!vDw8O(`p?(q4P9ny0NdHo04EPSBSxstts0`t}dScegS75j&<&DPYeUuUaR7w1)wfptgS(Sh#xhrra^HEy8P1=FwOB)na++s|m$qgydJj1Pk zA1)q5!?LPg*d?vNOvSSICkTN~^V74NC6W`1;BGJ1ca(M)`a`GL)xlwj2e2})OSkLCp#mbr zVTK5hW(_ggLR^)ME@nmm+r(0D5MrgrRi+dCBDQ_+ADccHsssQ6IJqgI;|5Z%oJqT_YQ7@WdmXOMy?%YIB!iVGPbZP_wP zrm$n_tIfh9gYo6csj4@bY_ZpBi+;aMj)f)htwwyKu@lYTaZGBsX|PP~*mrJUI)|5T z?YnKjIRdj+Ioh`2J;oe!f}bK_-}`mGC@X}TC?{^~*d~rw%!yamH=B-tHvE2MMB^<& zVZ{{?nCp^W>RNV7{JALsNvAso7p_~elTru^I=5%p(7Mz-sT5wy zN4NL#+n?u8_wvu5%1DX-AKkX7yuJ7NsNq!bf^F8XYlJ%j1g6q29t1Cw}esdOwe~HDw-qCtOxVpxdbN@SjdrC7DSEVbhecpkmOiqzqkV4unI~xAG{N zSgpmMc-*BAhQQ9fXN6l*z4Z7gqEYhUk6fgPE^8ZWkoUy*bwO&r_f{OB<6jVJ5JyU8WLyV7 zqA-LNBvbzu5c$db>x#|n-kW5f=={y(J+rg0Hj~+JtM&D3TiXyGf4t{^A!nW~Z`N`2 zL)vn%Q_BHJ>Yn_4c6w(*n&;Vgc6ag~6`Iiy<@EgxNSfC5@NiyI;OCgLR7E$Lx+bTG zct)|hEjN(*n*GHPeZGjWE}BqGa81|1aZ(`{bo7^;ui14*Zc(Aa%r9};u)FT=F7FoC zWb|G|f!=rmFDQDS1^5yos7Zs0v&xGF*5jhSo!N{XIFOyK5tGZd^UeY+7e!vrQjtvy zp`6fgM?wn4UP{zN()OaB+Du8-Q9?+$TDM)~nQ^1KtqMn$uU0YptHo8o6qf8VLGh@t z?SQ-0c65m+6{Hn9iEGyeiPNetlqPL%h$4>IY1>rBAqq|K5n|8e)iKeY#$Z1Z+Dn{w zt$))*GiTeI;r@iF+~&oa?gKblkVqQRA`=x>G4u&MLG*4}7B_}8Eb>&Z%=4M~O!O_B zJs{E)JZve3JK3Kz-4WX~Ac(cvgh=1MhS zI1W}jI^=zJ)EPBPTLG>lCV|~&ZX2PT!>^x%1SB~(C2RHT&D+RwRk5GeTfZULBS-Z! zd6L}b+X^Q``RKNS0}E+-r8tPv^3b#1>uq0|5?1RCrupupuzw20N&On~DFA+!aa z9Eo!y;HlhTITqO^krfAti1SG4wQEmj(hC(+A2-oJ99@Yg`-uWnqnL@s$8lVUZYgOW zqEqjiDQhM|?(ve8jPmBnLoS z29{>m4K4Jo8>!))J_NcCg+jW=T!MBeV}#n8yVq=w01ev};c~pjcFbzw2^&t2aN8Z% zHC7CPE0s24*mM~&#M0A@4v5l`lg+6#dfH}dAsd=}1+bHYL`er(Mu<}PPR$T)RF4^b zt=3*4uN}44@T$JTzHx`{m2GLW`wgp=3M5H3+rI`Ke}= zrF8H{@+esWB2MOL&DaW4Q8Xv21zYzhUTo&^3DseIf+4na&u?N*6TC11=$l>3uS@BA z5EcEh#4CQ<>ZaiuIJWTk$bAW-XX=={$7k5w=+VT+>q~d~kCX}BcTV!>RVxZtiMd@< z;+0Q>Ew{;o&jzs$^JR1L+T{IQ}5lo-SllcuE1|)i)GokVS<2jhMTSY7F`1X>bsNd{ z5tGqEPdv|JaOm^f$D)lEIV^ctT}CY=*J@(dQXW6SbvtXg751euKitQ-I>Np)Giqj2 z+zYgt7=dP1wQ0}U#mn)w-Kfwm^qMYHX{ALE0{;Oa*r`HIuFXQ8U7_J@%9-Frz1zDwycq!1T!PZw6*loXFmL+AJw~Mrv+nZ{YWE_s+ z^|1+TWbCG`nSfY_PP6?8quZGVS*YUk=fDhhJoJ&W;;_ILY_A#+dukuBONQQ|k@gq|KXs5#XkYklE{|!%+-k(BCVB<*q@)C%x~(MK5Ojr4^oGNYODDzNPa~7N z1tA{K<#~KAk^`+sA!KP(T@@02Qew$-2u)ko#1~FAG3Lu>C`zggfMcMtp;EQF2K4hA ziDSIDSp&Ek4oZO6PQ~XcsX7_z&F&&vrGE9aUN~B{ugZFED9EinlC%Magb~)81IWKeab`p0@ECFXva5`<1 z86dQO?Usi0e?+fFbm?QRghX_Zw;hsW3p86G1nHgy!X=tGX>O%JhX@tsK!A_t&|0JS zR%ZPGw|r5~R25y8@AQYjyH8E&$4@@|G{Uwmdt}*?U6BC{UFlo1t3BAf92ysRQA4tg z#zjd?Rc!6o0LlY=H z%hBK^7B?^;(wxkgkfytF9#6Vy4y8jfYL$+CB^`N219nH9c9vVM4CELebKv7?wohAF zpq)D$WISOfi}w>3tK@4RvqXYYtwKcUyq)sa%Izuv#<6)nCmB6zQPi2{=2%Ka9*r22 zJe?#Gw;21}vvPBl*Z-PlKg$l7t@8z}moX0U;vT)QH`8N@HYCR@Jq&C^7W7fXPP1dc znKv?&H~9wLFHH3jJSqnv26xu}^mHBe-26UxWl|5Hk0v!_vpB@wLDj%`n~ zH7=uLr+6hL86JS!`68)m4&M*F2^T|j39kp{iaz?(Pf)*+k-i_&R8~F;MFuixkCmu9 z?YVLpYnTJEt3(vzbOf}iEs!A4XJix=i=)hY7vu>D#_N(|ElCL3`50$&MtVfESU{$h zWyOg{Vpb7co&+N42eNI9-=!j#v9n!8e#weh&cMJ7Xn|n1P}6Yq^*`VL(x8buh%l+2 zefIER(u6BUuuQs@-IXON&I(VAZSP_Bh8R4r``ljOMDFV>4xx$1_a038k>~{eRVD3* zp=xc|c%S0P0n}nuc9hhW#Cj3cAGO(ffQI2m8?2UT@b65L3Xs|V;egP3;_ylp50fw& z?PMkQX$>tQKnLlo>}4Y^dCVM}qvmC`2`K?m)$DRMB|*kpBxY=)An8-ddu!4b zFoOv{5$qt804D=S4sgy@sRS<>xSX^QiB(=a} zo?GAd6L>YBPMEyye)!U_+*g~5^h@J3l}iO9rIZrKRY<>0AJ}cIA?wSIF|9FVMP#J; z$AE&PmGH^QiSHY$3llX2Tw631dE2e26GkfF2=L(ht>3ZC(mzlU0jd9J<3xU)cJ&uU zqrTB^oth26I*HnE_rnKj`w`Y3rsNPlk0+0LrEuLTL%Gcfbl1+%1Cl|>e&uKvBEqAC$NQ63`u0nb@F}v{mcoJR z^19fy(ptVkZ-4&v*MdgsC;Bb{h1eVruf`KIFRg&RLc{ZnxUk*{Cj(4FEVSq{dkejz z8MG{jaM&Cs`N9*GNb@FX^c$aAT=td)Eyetdl8X(xiE~PcWWcX}zrpa&PkNI@4R
BQKr!?036YpV)@r2eLq7)##%~7g76Is^0YOAg#MZSUZKqR5`_-2ZaXjm$59HQWxUx zO*$g`G9mJyYvtA=Ps2^3#UP05X@zWb_i>oe?X4EB0S8&B!YNG0?&}IG^3|Vykv+u` z`E#~M$T>apx+rQoBiuhgDpPemK?XMLu}FDgcR6H&oTqU30uUPy1OV5Jd%} z(j3eL>-YAbOu8#Vz~Gp)j0ZmM;oy+-i8g@r=(7U^e)`FigGUeXad2?|$vysj{OCcu zS^^{2$@S#1YXft@BkY)(4pwQGj`k?hlfz{P1@ z3`X=+DyOW^0Ba}he)mQO29hO>7jf;HA(U6|-ek~rf{Lg8`4^jiac$p^$k)yJPmhV+ z3C)Ya01<$gPxvd%3%v0KB|R`MHc|3)(wj!HKi^(s%!85{O8EiqBE!1z!_I)tS+l=E z)F>N+^sj$7w3z2?Yt>uS?P?YW-9!E;HlE$01ALK8>QM^IfX#t|nn~ceU6!dQuG2kx z#M5kmiRDoI3Qi@VK_?=8qpX~W`!xB$oP}X8)8YxV2np?v!cfv=ru{f=Gzopu9$7s^ zN~QDa+5|L+bx6i6cYP&cMq#cSa>Rtrh~G{b-ZYi>!0#i|q=kHm815#Fld|yhn4`P~ zHYtVq>FiSVg^MYXz*-6d;JOyVxKiGT4R(W4kzaDvY|i1S+6v;8Db^i6gz@G(Fe7Bv z28jHii2KkLkE0S3!1YB41zPi`jjJMbD_1Dgpw3tZzeR=$>V&CH+pu~sBu%A&Yd`7! zX%j)iBmS{u{MKAN`A8kuxIer1aPp%KkfOfM>h(DSVnw(A1J<7HJc7}#v6?8H-qeKh zJZ_dXN}T$2b+e>pxRDqXyoHnShJiiYe=yBRgnw{fk1y+&BDFlLuZWpkDiEhd+$lgD$ju6@UZct!xV#dE6k+X zIBq$wJQ}V~q;9M|NaXUNA^A!*F~pUTt#R{e2Jf6Y-iI zSQh z)q;SGC!7{}k`(yDQHE85$A(jA)!6wBts}w3-nT?T$VF6JuO&evy~w}MOJ1TKRL4Lp z)#1$Tdt#^M)&PnGQW_k(-5xD{1Xy?os5G;Mfr{2TJS$-(`rUG(jRvd7h!C=9k%o_t z83+mqevnd$`pvE24S&Y3$f$oeswwc2HRYABdDzp>Z*@PvP4*K>p;Tk;O-C;i_2M`C zgYChnPM%0jsx(j-dqZ&63C_los$ir#BK+*w%Kav$vyO^I21@{Is zv0hheXSCFAuap^srD+dXwqfv*EGeB<=*Ln2c-2??rH%wh8yQErQ3s(it$|KI22maL z5EV7mF?YTY5zL1Z%Lii$ZY^D?67Jr%rmMBfN`eSJYK7NToWH{6L*%{S$1Z76obVZ% z90<*IrAZv+@$XXk`UEfT9gnSda=6qdn4MOPuE7;|&(_tOx>$3{at|JutJ=6*>!S;MQg#EiM zWo;3cWF-eva>4Fo=fkb0Sn1&uddT;Pj@vxF~EQ{h3lmk!58x ze3#ZhU_uAgu+*SV*(q#*bL}pi;ztA^XI{P$<7~k8mdj!)FU`%AKD|&OJ;Neer5kUV z29LnsHX%UE`js6B3t@eVdaN#;Q@lyHekz9;0*?#1WppWI2L+N#hJ+4-Z0Mx(YI(JK zVSI@FPeA)F32rJ>N1QTH9!Fsvv*T2_wrS>lj#ShD4MhnCZRN%WcpN{nIhJfbv`-*p zariij9nf{B#Rcz0izPHn93DO(6Nmq?ckRt>+(!I=eTp;tFlkeyWXE+PT6P^LY177O zr*`Yk$ZF>#o}_CiQsq&WohskGzum?27RNhEPG3`vEs=M?0$3~-i^V=3?>zcsXqOkx z6mdK~@O>NT->koK&I!prt-}kNCT<=5W55D3{@76h)6SH+G$EC!#C1;qcykA)jAjfcb zKI)hQ{H8EMfGW0J6JYFwj7{i?J<6I)vbz78(V5XqYmcFsN-6GkX>!%gOeF3^+{~j|~*{W})Y=iHLp=g2uXr$Xmje!G#G7ErJ$v z8-=xr;M5AjPi;%5?xYD?-`Mk|O+}YBfbK#ZNb^?C6sm&2vlR{4U-w|tei``3KJ^0J z7V9Z$UxGf_jjE!{pkf-qRv|rncvN9D0wm@&W#yx*!*}qZT`;-0_j5vD&^)8}%NH-7 zzdBx)$VmMSBGz9*#l+#4F?I`^GH)UA*45S3=;|S7+j{+n@q?Y6hvPS2Yy`#ZXcms+VyT z-^|96K?hvA0vz1b$u3M5qWcYDLD*b30k;TwWNR`(M@{uJ%txe*I&pqf+EAoXAIME< zqXs5T9NI*`yWN9&C6rhu-rPD4ZPRXQVhBd*S5)fTT!1zJ{Bts5T$kKEVX=4vipZ1fal84d$ zr**x66YC6UTMb?%94Wf!3qhdlk*Z!;i=}33PkUMFR9f-nX=`xZn&(wW(%QBuB${LE zSL4HL4T-7uBcq`hH~+oVG%BVktb zr*SvM3!5z2x#63PwnF`qLBQeGCIFTq!m#-quy%Qw;%a?y3KPY<(*cm?1(QI@nh>`# zr}XXI^w`=)ZE({;wZ+|I^Gk{3y*>o_?>}r)w5Htl%1pOOJ4Y_b$2cEB%OHKnf!W9V zopD@zsff|7R|cXL8He#(8U0l%l9mEOU{%=%ySPopFUe|LNs7+jc1( zFZ1e5lur~$?9-jc1A(XcnhPds?>yGI%TU4kEKz-bAB7d2E@4fN{&+4XE5^yXE5- za1)M2I>k*l->WxTZ(t{_y(&_FnhV%i&YaH-@` z{*~f6n|@7OcTZkGx7l0M(%G#LqldBSuCNXv%mr_Zk?;b|TTBiE!vSf?MZ4p^-oS# za%jyGR43_POXF7m)rApLP0xsxxNN0x>Cer?Wdq_PFp*~Q$=QJ1eED>t%MFFA_7&EF z=OpIgBgykW+)A@0G^fLU==+GPoEV6;$&(>Ow$`!4G7JJDdalFS8^N+UPd3Vjp_e66r)h#GA-sg~}nmDsvVsYW^7vsMK? zV@nN`u!LjiKuf5`P}z&9Ttus=wS~Pma@JkwXk`wY;wUN>5?(H>RjdO>pjY2e z_h*L+L>V=>at8~Q;7S>KID zys_?6ezz_*>m8ZFzX09vAlv;IC>K_BQ>>@6Q~6#>t&LLsHcy*FN@o)Ip}x%g)*LcU z7szJr6XUz0i+Rlmxe9Y^QV-F)`4GXMzW(<0mw)*7`8W5*s8pn`PpP{2wth8FWTe4c z_Tv^We#BGbt6zFLZj6vZuWhL)_f3PEs4qpgC5};jD49P?=tf*w*`Fnkk87txTdIX* z_LMM-<792B|0o)8hXY2GeHDM3SBETFnQt}SQdNS13~8!cWeUI1GvwBURbdhtcEOz6 zZ|i53C{ZJrtFJ++wAKNuK_d95N1bS9eCy`DzDY3-jZ)(8vz!3ePpY}o5{=MEV{_hW`U(m|ue(Sx$%vX7civnD&LSd^I7 z5~wn%cBO!P<8xN<-ANJr?f!jzo=8uz2>sp9Jx;^o*^#Urzntq$50d6dAe}C|uJ4fU z`ug2^H{C8~eqFn0QSa(edV6EKpjjbj^573OvqJye!D(djLd^poAHEi5d~1!3O1+Uu z!&FLdYk|dOO*Dg#^3G{%4vK9!f@4Rr!d{|+7L0YkL|sOQ6rOCtz&@5}C8e?hPdSI# z;MT$j@E=PfksNYc5u`qL+lb#yh^Hj?bh}(y&;op5{TyyCp0sa_AAKAASo}~Jc%3D7 zWrk}q_Yy2&XXwMn>aA%e04`eCZY=EOxE`|8!2+zwJ5Xx>Thn+1{f0Z@H8!nQfz z;XR|=_1vU=MeMcWt7U%5uJl&ZRP$eBvkMHvD(os7@aVc8@TfA-LXSRa$0`S0TZ5Vl zoULlghcQ`n>^|8)*4 zNBq8oD){~K3irB4`^*{i z*!X;Q3QN|DYjT^qJ}>C)Jb!l$^&jquu5lB3N@iWxxE5wO)#W)#ez>Ol;cN2ZSp>>V z99byErjQ!CZv9l=PVevckU5o3LD%>)=#5Wk_{*z~KukKIA5thE5&kJ7$s1aYA>uU93R&YlLA-M6_ zhH=<;_t%hp?L!aQJRqp%r%#pW&Is${0|-jh3k|MuX;7tdcme|vC^pqbb7;PCAs zeSV4(KPAEnG4Q4kC$7~3_7)4tJA>btrHY;zrGED3U%!6&jfABRuZgdg`NhlpLTQs1 z7vchNunQV|BAZlp4jHw)m=*hX?Wem>d-Q%R1)lb5q3t0zLWO3baOeUY$V?scRo5bV zwRNERGR5&pm1KgoMOoIe!1;>?4cz3eKOD~1l;_X7_!4Cw__9LLriy%Ss*1&ytn2Eb z0P`gS&3$d`3-$Y6iblu|9SdvkWox$7SpVO@j~qbeQyb3AXWUf9>AxE1j5k zUtm!C5ePc=gUnxGx1GA0wcWIb-t-2%jr&zM!YboQ2SEEs7TzQ(W;m+oX@Is5k1U_g%0 zf#{NA@Wc_js`KCo zGwMvoZzSc1pbDRDYsW+`FlXSKC;K!OtokAmOI5^29@uz~D%U~OA9TCPs#_*8tf^*+ z1Eq_sy`h%WrZq31CXk^IEe-j$TTiEoVqVPb z?a2oxs5+gTFteje%$8m7d8IA)Zp=3^O zeiOHDNW}^>%5e>&(gE2%-EwZ*^YY?yW^&w1($XaY-m(2;o-q@Ohjngi;EO1SWTJ(d zH`g09&g0z0q!#|LyKC01go?CfI0YN?VS>3N*9D9@KvB+b&9BnIY@S>E_YDq$s;wiop$>Qy5{&?o zI989(DO(h%M`1O{3MxhuB;Q|gj^HoxzAqaoMdh&MskU0Z$D%h;+M=zSZ5%0Uw^P?O z2vc{0ZefAM75qDDDXuz*@u`W0jx6)y1;YOa@mjDYGV6#Y9}nw109|n=lZa)`<^}-J z5F927m!WUs%V9PPl>f6Sfs0Kp1Ud@E3Ahpkxwk_LB^7B4l7M|Zk_R=ZLLSmkwCjs) z)#$b-sUD4NGf{q0t!~!s=xj?sjWstkI%cCzk~B=7s#=XZaVsRa5v)fr56X7c^$!g( zPtNo2n5zmsVH>_Yf_XUW{akhu&N9JPkC6|3gmsI&l!`KZr(&%k)_qiuk5m<7>lg^dNm zf?#lJJ-f{yxq^MQS}a1)j1;x)#Yl>%Hl8)uaOQ~OX+06J)nQNf!**Bpff? z&PN(gWO(ABCs;4h91_iVFBE~(vvWA2;!KuU8~jDhVkrE`{7EHWCBk9&bs(A$s_DF*Sz||SK+QTLIsdYrQN6|(83qR3+bnpl#iQ1Iu!E22#~TwPFBV-lS6 zC1qq`PiLAPUPH(OKg!;OM3c`A4r{aYseJtdxq0HXzKKXSfsm9sFx=|Xo+eX z^|D4Vo(y6Fpw0yn6D!{E(6JSWG`%Popi*$r?qT7K91K8PEgTU4e1vJ+dHCQHH4~vS z>k)A+$!{3}4Shkdn9ln#>~tiBxD4hm0IBD%otnfyoVt=amjZZvELAN21Q#^S1+ai9 zP%tAYj=GFRl*`KUu9J0Opd4|{6K`~o&|+B?LvG|TH$rWkmhYndUnocsR_;0=REh{W zH1yO#o>&*&nP9xtg5>or#ZT1%T%MX%WD@MRG@E%0o-K(bFQICX@G$s)c|i^GQ5>D) z-bDDSf%1MFA+mrOZwV##cEJ|H5jNADf}68^SH2}l&X@HiTa!M;IDxd8}DApOcFF#-@RbE9!f)|Eb&6vRI%oVQtB= z^m6{)9D}x;lkr$}i!~SAjD#BygVGX2x}M0TqHZ&TjNW_A-k{akG<_~0{MTO?w#|A+ znfEx)G1W;t-gVxZdYYBW(pdrx&Eh`4UuJVJV3z{NBQ#TW; zE_s_Yzl^T|YtjqG=I$J2EY4sYMN*Q>->gldl|5<}ALkc*dx>A1*FcKixY=s`cVkIe5stsU{K%FaA;F65V>V`0_Z>_TS z-C=V&f0wMJN;Q{q|1UFc?>S%NBW-#DqGO+Ze{p{)uy5u9y5czGD-Ju(L>gYs`krcg zo3@^QQFsHWoQ{zQAhM)vi4^D$P?(1{cZ)47`_>+k?=HQle_$+=2Dp!`>BAc#VtofT zJO=TP-{@-MQ{TO9k3^irQAdJorx$JO8s;f_F_MMfD;FbafJtmt$3qg zE3D4EJU!z|q~#H5#AMO3n&RfQV*00Sy%Q$PfAi_XTd8C;%gs^2gY6KCEDB&hmsn#I zZN`|~q9@MgmJcf&@-7wVJ9$H)40l0ow+uN+SM>%%mCv1@SloXs#*r0E12klCh-kIU9 z?O(R1_TJPAq#7>binmFNa{1qWaW+L2>|4{uxOrrWI7EC5YgWU<wf4FIUp{7zKVg&uzPfaR$-#nEp|4lRx)37Pz}wfh6H ziWkOo3bfSQs43ViD3+%PB3>PXcE%k|OkDdmJc^thmSSwRxY(XiQV%O?<2i<7)L{~6 z^73LG+KkPw-&{JM1J!9Jh2Y(XkAAV2y_glo(#IY5)8cx0!dPx{=c(hf_0IVZ1PJJN1dhuN{>_T2cpsj&{q# zO$R8BZB=9>tX+yBZn6hP$LgccJjSeq1ALbv@ySZ z=H+$k8bgZ}LfSzwt?Kc?hqan#d@tkt7^Hx`2iA9dTwJWaSmV`d&E3kW@kQ0VM`=%7 z6TdA;K#C1@bZNd)^5ytzI?*x?$pQqWEz9-KHE^Hoox$sPWGM~L$8coucnvPq{6l@; z5<{@&@CN}R57$OzDJg=bVDg}x#)n|7S#Mh`E#_h=i_9)&W~rvkM2H<_mr70U>7H1z zFgro9wm70MZi>G;y;#!WSXGb4U4>GaduLaT0Qy#bydPi%wt?-Bd`!C4mTg2J?y zn=vw?f_IvaGY}7gfWamfx9kIDre_$lxe&58?psme( z)DbA1ziVBG$Ze}DIh%5u-}+EjPA8L=sH8&ys@4T8nJ&)RA+7I#dyFZkA{D7xn{gx_ zH$4ArO&Cv~KTP|+nQ2`k)kwl=?-HpO7zKD5?%#z2OSeP5d` zjr@Wo%?{3gji)~4byx+_tvm}qDQAEhv>3AUO>WgUJaeVJ$L(;jU!-i`THL(cskt9o z1a(t=*gO3Wq(Mc4j&|2HS%B>tn@+|l>!po&FjgzO3FF_|Y7N>JQZaA+0TFkj%nb<& z&38M)yYo(DRLY8Eo4GkVM*&1q0@Zw%R&sqL5*$hZxQ>+Qd!EnvFb1LmckxCHTAL<4 z?Qrd(E~0AnI`@#=THMK7mKn#7sjBF7ovL~-P>X5s)dT{*z3g4G09q`|=S!v{Lh!7-bqlvErL*>z!E zfNmai7@b=T48p){qW0&4Vl|%*&ZK=Ee6^^aHjI(F>al`w$C^pS7FbfG#RRKSH)c^F ze_QOOnzSXW<%b%nY-|AeQMb|XC*H$l`Ak|>UmI+~A7MkT|HNxZCg&Ep<}hh%8q%_m z-gk|wukVuh^|G(s`{RPQwjm116)(m)JIayy7cmyk7SjeB$YYL)!nwwN=(7ByfT;Q> zsR|;zbuci$nRdsll{bj@)*^udV7BkUf{klq?UxeJ!RD;0h6X<2onqNqQ){~>IL;g@ zu&;T_^zar(R_<^8G>R^FC3mU`I#16bfV(zzyM_aaq`2w%eoH5vx5kV4%(%TS3v>4n z;tiBFIvou~dCxQyM6*xr<9N$V9e)jxfV0q3$24G+#vM1OT6^D=rX}N+mN<>4<%kfZ zEgB}P(G6HS@J&$P$%5Z3Ry3sX2i+9V!)Jmyb|Z4vC3A|H;{uKe^M)mDG6KLjo}Z&P zYBjLrZ~YeGpDvLJ;&Z?EC!h>C&K#oCHF8bf(FH2fzBTC@z73?d z^K$f-q;kA5hkfhPJp?}%OE_&R<=f+Q2s7Bo?GnMR zmwT*;!VOqgeHTnN5=bmvb_>5p%o2e(G$Qwr*PG4~tVWWw6${O?@r=i-o zfoP+|?^uqo-u_PhviZ43I)q;r_W z4vMyUl6(0L8Bk`B>d(Va1bAU4;ix#y`M|QG^>1P!G_;1oSggE5l^h+%_|HQvOMIbN zGJmMbm6&r?Y3XE55jwO~%{Iv|)BA$o<aApY%ZMDmlPGo4 za)}l&mk7xNBWsZXI|mmWS;JRb`+^FaiTboo1O!)S?!qZWJ(Vp_)Of zU5)9Cv`rxcJ1i431Ha?5BiQEi-#q_wHs$MGtX`;yjxKS=S&%>klMjm%G{d$y#$T;d zE7UWK05Wy`<8s!ugY;9Y>IT{29N%tMwULcU&>KH_ed!P#4Q+grz~R9^^JjOV3#aM{ zqw<3+TA5P&pnllcMkRWzT?Ibf`D`zH&gOM9iK%Y%Kb<5FV~Nvxfb61f*ETXbJFw^; zUN4aUS3dTJp#g(?iO;pS;eGF(P1LU5Kj#~30H?pfTQi~9X7DmlPV~0wiHGN8gYP7k zM84yb`2m%I?A(4Lby3kf9nOGO?K|xU=Ve{ro+>I5)xN0_Y%-0W*ZW*$t@m|B03pgs z(fIIgM3QtaSleIe4c!wSSj--Z{d9vFK0@LZps*uo(oj>9pYrM1K%|Tc#$SO$?aI-c z8KZb5ar8?(&qicAqVKrKX3U(&fp!y+UCIt79ciBp&t9z{PY{eyxiE<`2MHaNCrcu& zEsIoh8yCi89pAerFz#WSr@)COj#+*Tp>>v-8XWn{s=93XUvl<~>>uJ<_(Mh{>H|87 zP~B8V(y;!(a*7o~qF{XY#x9L`4zy3%Sd|q*tZ6If)>-Ha>0un)RC;e-$@-$E>Tyja z%|sNc+7mp=$3EQ*XD}F9hQcM-iBBiFz^q#DpT#*mf{N)YYAZWu&*UT0g3ZeO2t&H8 z%;50LW))7yk8`sJ49t=FdDPH|TyM~))}p*1$P-rrmFuI_Lhg8t>R7INS2*uLR$pQ| zupjin_$hq{)TOvnJukn{MGKW7&qjCnR1{L^0*iA+Es%1mS0=Y-;tsK# zW78_8dyJ-|;qh>)gGZL{h8ag!@}A)_Bz_xk&xRBtE`!KKJ2o=}EFAtY;+?UMUd0_}*pD(vjQS$Qq?CVqVS}uGS{9ihz2| z-LRUVgk*!)61uww)?0D{y8NhG%pfmKgq7~?Oqh}4udq>kfNwv3&x(`P-u7qsxp?23 zs0madgSg>A^cY zu8$T7dVPLPoM7gOD|rvirNc_lIst>_6POPe!(nc0T)* z0{4G{PXiqf+S&_+0U@0DIfvYNad}ZG>w~XwoXO{GZ0rGuoaw;0kX$_*nz=0Wz*W@m zREDb%0Ngq8YR$gCw!ZEFw28E>qB)f+EEXOcU@09QFW6y*BitMF zDSvN1k@iTPbzM|u{t_=X*AU9skB|pE(Ydg@T8;60lThwYCLX<Fqk3DSZb3I)5mAE1hN_B^Y~e-+6ZAk%YGPz@YtIcC zk$@582XoxnnErVt?yxQtdoRB#NPCi+C?r^UO`)x*(Zc{&EMUh!{4wEoEw7@k4Nv@P99l8f6-!IQs@T^Cm8Hhp68pLxbP;baNU5E9!3j(^^Xy{{WaX(i3al=cnc<5UbMT#K?0ooS=Swnu=y?V_vW%r zu(?OTKK5Qq5*xPFivE9t&p+lC+i5dw-RUshd;x2dv@odEB2KkJ*0oBeYzx6(T$i#K3-f&%wJx@fVfMimyCv_+t^QRUZdd9_NGwZr4%JKXpdaKc@UbJ#{A z5l=NniuuQ5{Cn_ty!+|s(I=zbN8_IWxkQ#oto7i*XS)eaFfem>Sx9iRA}4oVIZo#o z(&;5OFxiiQ5aQ*v`n;9p=A9Ubp3%w!&~nK+bpUUOZ!SsRv58Y$(hS(GP6OrsxFZL4 zE}yiO@|}^$4aFn{bmO=uizUhhk@>}9+zRM+&#$$^^1_w1c!iiRPJB{5s1{ns$yFA5 za!UJpPNu7vHbUAI7o}B?dUJ$Uw>s{qckH>UbyMARL#5^IHW>Oc(KK7xwY{W^tMkI} z8C~uh28ItT1yly!){nAr61JqpM&Yv>$>3$-4DEVk$<5dDmb~!`7{K<*08wpj#mcGW5{ z>eq|KcVC~7-et;*>8m-c`tj^5HqMTMXrGwtL4H3Z?l+r>HG2kd-Xs=FLc&DdrE6IV zOs#a|GNc&)MCZyAN86gao??E2UiX_ER)X^CIzUGT!vKrQ$G4K`R{2WK4;Kr}&xDNG ziYtc*c||9MXEBTYDs&Gw+bSjtr4nY%(H zwqyAARMLH&mlZpac^kjMu&D`A=w({R?-vMP-HSg@&U>h22xE*^!HMz@v}+6nB3A(R z7PCTZKLCGC94pKVo6AgYi&={_LD&RUc>ywZs)ft#W3R4+f=WTCSf&+?$tvj^!3m-Sgb&j%Qj+?A6P%Co`yx$4^Zl z@+V{SH_y(X3EjUt&hI|WpN#XTPdFeiJKF5uwb6s=;@d;dMbq7Iua>(@wfG>wVLx(p z6d-XH6H=X-yECwdS$SR(#q=qOhA}T2g!gAvY~jElH^_plF0W2zi+r`myX69|%Oyf` zj2_We+!}4cIzHMM4qk3Ffas>LT2;{aRComLBBHEl{|4&P*VMA&f&DH5#*XULpCHYj zd@v~HQAm5_KM-Vjk}gv zc|phxZg+YSh1S#IH9|l&)h~*>&Au70guK>tVPAD(>n68kU2ey0_Z(Yr6X~CzKO(7^ zH!m08f8O{~Y(i@9?Fe+XM$`UKt%U?1Qj&(=O`G^vn;;>Qx=amSkXQXy_gBAU)4kPp z39${K=ENPwr|SIZV^b}*jw{-8I*chQ|D%s5YOQrF!E$T5h)(T{9Y&p~^`nnH-KLgK zw12l7kM04Du!C95@NbsK`~OX3HV~iww@qYH<|DT;9qF<$HkphF2Asu+e&r2D z)T>5&k!`}>?$0LjM`}wIwiD6TBcI@tnjP9@J4f6i^>S5#NK8Ul;tNJaV^vy!OJW(x zTlH)42$W{vde;c8=-Rlal!b(aqG@v|95z*#f^%I7TL+)0Rg@cZMuA_R8yIdhkF&8l zQL(WakN`M?5$2YyYkIps)7Ci}VVl8kzF~xC5{RXjaFMsSVCWMUG05I@`!nT`L0MGk zh|oPNaRiX&S?xSuM3>E>7j+6023tAZXya;%yx!6b^Pe$=iat zh*v!daM3=#D_Q#)HqLUIg2?Zonwd~ntHm(YuUzg1?c4|hfEt23T!U!+ZzM~3;AbPZ zf=300c*X}pmkm~edMP;JK>H=wqeUMw$2hgF^tR%b)Qz9IRFsA%bPLQ-ppZFToSx1k zrW;#s9bKLxo7AISNxH@^UgaDg&&9hd+9|bq&T8dWOZ=abc5ccaR`|qUmri2`;$Oou z({lW3ni5k@C@(Fju37Ap5WT%gyOx0$Vbq+UUPwfe08h5MDjt*^ksONYW2`#T<#!Y1 zgJJy$L)*mm*VPFvdhyu^o5oX)sqOEVOge zch!$`jdzm2gZ?3Kb>_dze0Fh`lT|iStUrGlhlA05jNjLRp$00Is}@80(Y=ASpARa7$$X0v^{NN=w+{#VF$7oH)du^1b+))d z?U-oXu{P_ugKczeDO-Ly!@Q!5>~y`P!zo^~FxU$M^o8wzOS|3d^)jDVwDGB~%-Es% z)dk0d1hAc2Gh{#UhIuEQvUYZ&cEW~!&qA>zvG0k7oDlLm`UPz|{W-6Chn`)!sE1VB zutZSwIVe@GV{+h$xOmBT_3v2rMmcU~>MF$615%1Cuz8a;w}f+X<_(vG5AX}LZ~=~o z=j5Y$d%@+F=Lu`>xEQ2n0MhocJ>jcSaYrKFeVp@9j8V%7mL|*RtNsohw*LrBnNYmh zeR*BsTw3&Z<4bThEee3>m>PcmRBSRAn7vf_i5XZ_o1@|0=RUjPcSc+ic@BZiywnZP zUNy%gQDFr_L=by+K2PwYc#m{^O3dVkM!NKv685E|j7Zc!9hSsJWVfwqyhr6Qc0g!4r}ooqzf*nL+fo)Q|K&9JNt3B zn=HIccS3Tx6Ngq1cnza&AEoKev#c>ZNDv#O!>}7Rt5>`Rqs4c=s8+SOAC)1lf{eYg z*GNv#vE z{Iifcesu}cc;^G<4M}^pRS-Le(iWu}J9*_ya3FNDf%6RNWxhHi7nT0b(6$AY0(9Yh z3ybi#Ga!MfZwovSq+YzI{1GzZG?Ma5iUBA3wBId7r4YGi6z|c-5d7hDR?@&k#8|4S zBRQllDa|y|4{Bu3?8O*n*%`^8Yrt7-=kKDf@SebHi&Xf|^qsG4W#QSb$FWI2$@W5+ zzawqqRmpiS%9Z4x;8h7xx%_^C+Ov#hR;Vs;&JNTV4vIItX5BDZUGHKPJ3}R4*bD(W zZ0slW=l*{7AaUz{1dS*u-ob*V;L>zVon1}~b87%(FUWwHg#bp-74exwC~J#)r&!aA zQo4zbXs#-??-Th+B2$RH5>VDocYAQ=V8$E7AAg~W`QTwz_BMnEDoUz&tSV-Ia?qZt z)@-@iwjR0j^6zaj`bP04Het4SEi1Thn9*l*cRdx3SzfLgKr!|MOfui7C&uFAptJP}tNh=ePBmUTNUCdW*VLH#~z89wc zv?LhPXTa6GjsI6Q4PTLRO(b;DMLXTa(1`SOm4Ut(V*;@@nBhfJZL9T4zeR} zWJIuBMvlMu((3!ql4FK9YYfZzLLgB&~B-(IHImOnZaRx^) z1Tb!k*aIAcrgG8kIkz|pQc&v&N>IeYX-)x+?lLV~U3xDu4QGJWL1XB=#{Z`v4nZkI zvBsrcWCp->=P?^~sX0ctU87=R%2B63@aw9VE|GDAw9X~x)p2j^jvKg8M1uwGXCB4VyfvFSMXNh+d>oV29RXFL=I24AFT<^( zVBVQsNqn{#*6p7wo!f8SrED5+E*pGNeXL{b2){biJtb7swb4~@z+rC|xCU{`M~vsA zoOu^YQ>k>+V?KS#q+KsM~4eGpI{p> z{TOyp&TUZL?T9!kNUT)%Iay0l2UJ%LM7#hyeP?w8LY^jskKQFtx6cGIH4PT?ryqbh z*1!FV(`u#Pd&5-vJt>SoY`mEKtty11$F*LZJly% z&j$`6Mq>s7+{PDa{Hf={#U1PtR6S z@^)98h9yWv3t%mfPPfo4yd#`AOM>@bS`2NWF0Lsq+FaY&s8r>iQk4EA2kl zR%v(3v=>!uODX_dS`WxeIm=dZSem3P2%W?Q9Y`FV48U@#tss&=|N1MhzE)QyS67LX zEG^dEB2*zaT7}RNe@Z&uJt`OWaz?)%;#Vj~s!QimD5Rl6$h;Kq!J~&^>Nkzap3Jzj zK`-8^d`V*7@@f95wJ}3LHcV(twTY*|<-x(D#`?%|@?VJ$e_e(QTfHooPbY2r#?&lAW z_78`)V%j;U7n+OHsB`59AFx^cu@_7Bo$-bU&o_0Z1qv1*36!%>61GgRzPKg!`9kzN zCTsG|u;Av-xj|OI(#N8lJJrgxsk$Z>7w8n+c;l-$jIdGZv&(+Z2k7<&;wD*#xF{2h~<*+Reh)*jI-YmMOY+g<_?^xI@BX)G`!=F_#`!-qXu zB7R2KNw;m}(HIScEyTjXKyy&8pP5+fF~muQQ~;8a}i zHRL@V+@U0Pye`7q@1abxRbO{s%j}BRN|bYPf*_eVt!#SbWZ^)Zy{mB9>=EJC3~z(_ z*M7~~Pr&Fh)~#?PnZ_bwbQ6r{Br6aVfYF17I;B)-{Kz2mH#)HuVp)R+e!`Fs7@WLchz>|7-4JRjN2PSj@$_A!)T~Y>J88ClbYm{ z)Gofef?C0BrQ4p|YFR51!&wKG{luN1gk0@sTMx5t+f4!fC9{vA5zOWOzOqso07Oq0 z0G_kd{)X}$bVhDsI)a?ZKrEO#@F~viizd@JyRq=^)O^r^R@WZa@jcfq(^jxCitm2a-F#|`b2&i69r3$~5){zLP(|KBxC}{QelKxIx%phrVNZKqCnMc&)f523% z#&9j+jnta0jJSuoQW=eL1B0+lc484V-aj@ulq97RqmAjlHus5nFWby97vNIo)yz)y zv$2e2y#dPL*}xQd#b^Ef@%};fa>)24E@u3~ftabF+;y{aW)Ao~-)$4rQNPwOrZfMA zGgKKyYrk?UsgEgviYCSZT7A>>g#1$Y9guUdzt1s2GV}Bh2HPhwgjlT9ngIP}{F^bF zrW}sW-QqG2O#(~iZaU&1KU>Y&fG!+g>g*&HBP3Jc16F$kMguOZv!DPj^;J-J2le}t z00Icto502L;sKk8UCu>I_#!Z7Bgz*{d7;tNdVxs`pGY`+{?Vh?9;Qc(v>!wEhLCP- zaDf8_-=L;e;twjs4}VK=^2dr7eq{<@kpNVbu~FG4K*cH+cxm zhSmcy^z|;vnlaMzMt?-SpDh=rQg?~2))EN5;CMx!_he0uzT`7$gY5GvGB~9U=Bt1?aC15h=W8EmnSV$YXb8E zIu5h2zh31;4}aQXQ`uu9yalV$I~yb~Y(C#{DOrr!7(#Lo&p2Ne*SXY|nX~g}=&?{= zI$Z{i&SC4g8b36d6^u8ju5d1TAPR=K#Q&QviqaBvEKT*DQQ!{*o+eR8l|5G-%_W$B zSj*XR&VyBw(+;M+n0v(m%K^Eu>m@&5Q*3x_G>i>+HbiC2@gE3^<~WMS^h{~Fl&`-o zpROlo@TvTMJ$eO5JOm%Lf5yIh82sKp>!j?JZQ+KlBA5}8pmiIm76A1`b3keo+hh^K!zYmeSbCYs&`j`u>)yFaa8MFs5#*s z;PojCMrx&}=_yoi&(T*wPH=9%W;)&7&uFw`cj=C{ zltw7*3gL<@mDd#<<@Z(vv4VK)gHALAruC_0f+ukLK(+j$DfBzl@}uT*(6y#vwb80F ze1joIh|=duNX%VUghI4 zT5nghSYwK8Ywyd5mm!bkjY73`_zW)^j=*! zp#UHJdaU14Pk2lJOT3lN@m~JGDuwb19q5V120EXKC((wp$e;!PSgxMfKSB}&Dd_f? zBAVd8iFcSWbw&SU)1Yz%p-G)(r>t#aZ;$j|#@LD{L?@Ru;Q7T|%i-)Wc$TX9>J8K0 zb_QtNpJf|l(`vWlpNy-uYm|l?2|WY2O&!7%_;X4Z86B*<&xp80xXR<%%_gra*de{F zFo2BhPdcHa#{qGjX>GBY$}md~n7!;9AcXgzrrF@Qn~Q>m)pp-tRto92?+A4i&^Y|e zOn-a9(-x$n(R`gksA@DOmu>l$S%U+J|I{J2G$u`wDih=SmpoKgl-AL+@2G>tj@l{C zFZfGx?2yM+8_;JOu80>~7^jVD`7QNOC*MK`h7Qt_s(i_7^;rHW%;`B_b*}%MZzBR1 zakc8R@M{-B)#AjG9J||9XEI?|J_+oIi|%pFw^ueZG@#1JM#)I*H+urjVjNtM=-6p% zb8jbLCu)vdGI2}p+G!MT(iAOm|RjYX=^l#oI>FIY+1!?REAN&avQq_0}^yeEk-6=1hGNTQ5Ox-rC|3dIlD<$)I zYS$AlP}{!Z_Y@A|xrlZpiokDyp9iWVP5Cn)d3*9_mcMqr0MxL-6W@L7eIRirXdg?& z!5-PipF=5lVRB~YYYdoQa1e|)SK+@L#sM8B_737*v3DedBYAL)QAZ6PU|+N3oPH<8 z6M=*swuvW(I1U8#5Ih!J2L-dx_s@#o8f?bmS~L+-?dF?M@T|E-uaiP6-yS-Ajhac> zNOHAYtjhj6ds%*b{?QI9Pb%H)vz zb5O}c`8Xf_@#0xJ8RgBA#{BJOelur+3+Tb4JxU=wNxyZ#bKi&T2LxMB27KZ9a28SMl*Wg zSI)X#D3v-rPU%oM%Z(U=82My6+)y%yjbtA1IV=Sn6f87phmw8UD|8w>f?T?RDvx2L zY3&IH2l#V@ni`RWIvUhq3>op*N#bBwS9kp*kWg+_0T1g`w=xaD!+!wE31Ei2sm$dD zPH5bSP)N*P%sze|$uDC~fg4dnru~?oz_zqTel-aqCnQAz#R6|OI69h$QT{K8MHL$O=VZ_OFSzrqb1Wui@uy2~% zjlHB1(ad8*0@as9s&lU}q1^rgrf@H&d}JqwbWPuC1hb^wi3C!8yU4;PEm$3Hc9v|{e z?bl+>=}0oZS5co|hVCyBId3Wwsy2n&<{aT1{ES@=Sok766?Y863@&H$N*QZH^cd~b)mN|;jOuUYer$}JHqJmQ z;P$hoOlj4YDLF$H%Lg;F7Jp2SRNJV9eAFH{!$^n$QB5^C{Xu6hRJAK=5wN%C7SR*n zSTZ`rhrQmmB0R}vy~h2obb+isNRi9)3uSCX205Q|J(>9|)uW`?;V#|hLOgeZQO|cY zI<8+5Lv`FTq&LGc^$2M)*m1GArT(oGvxx*U;X{iLcgpll)~0xSshl_>`}b|2p3Qhv z@|BKz^Us(?x1`rt@l7==m$>wlbg9*0l^5{(WSQm_2dEDzpdx1%Im``EJKL}c)rVY} zh>mm*QdiAA|DNQV%J=T&52jR{O95I!l1zl7GEcG}k&cg0E9zR}87I`MJ@E8OK%7r5xlt03xx7KOW*NPp(j`7B*YqA9UG%|+KXw&$nq zBQAVoUF{dQCXIU3g&cQo>_m3=)3)sV6ff0Wh9H~TjuUBTN5$L{!*$uB5rOSINWOC`Ulek>_4SJ)`rft8DNRFO_nBJJO%UOz=I<;VO@JL*D= z)Nwjhb0czG-_f!aM>XwY#fsQnv~dY=J%-=buI`f?P9w171bN?W@--u|>=RFXwlhe9 z5dlqJ)Ez$iUVV4a>AN4)chEt!A44^V5J`R$GRW}36W<|-$GMY)aiLR7$xFH3=tZzr zpui51#Qtnfl0mw!*y9u<${#AhW%3Yo&>Te6cLhOuG-)X(i(8|QQ-;?;_#d4a9WJb+t4du6k4;w3P#wA@0#?GhbD{SfPO z0ET}SoOVn65?(X-dL%gAi5G;$LOKgh>IvPE4CE&b(*h-=+_dSPIry}W_m=bSTpITl zUOFgtP0pds9KSb4|I1Jm%X|@6>FeeQW&s`HFQ-qi3{p3Ei;+72 zX3HmOJL|UT#di(I@}!lehgjJC`Z=V^#cdfrXkq5!9qwFYgdL2sITx=lvoWn^e=wF8 zeNMjD+sr93&Ag{DC#@2=s7{|sGRvRZ%HP!2ERyN-#Ek=aSC>LQpGc$9emX^ih>!U$ z=fe)8S!Idp-mS9)n7*r5J04!2IYjB5+;u{`k!Kh?dDV9w+^NaDlF%P0F;gOqYp6QJ zaA`S@2aUF6-L&HYVylavOm|{bMvyLD;;*og5dgy431G+mnZ2Z1CG_161LgzzL@vnR zkWIrFZBgJ>YslUFZ)i9>ORx;uA*h{2ASJka9UKIgwgj! z$tmhhN%EI3-cyks*p;H}bs1NvQ)sIlCjDPIuLs2{HG zk_L{PB(Zp{^h z&a@Yxjl+yT0KZ2n(lC1GUGth{aFK&5v2 zw5nH*faPWYv^CO^vDKRPlg&NH9qwpY5UVKsx?n~xt^j}j8M_}0Yeu_fl zA(1kq=RN<_heD0Q!QCL518kswE-nC4UjEEUtDo??NWR${c0-{3e}E4Avl9=4G067Q#Zo0n*)T0=Osl1F{tCIT-b=)e)kmBI6^Lp* zkfzBj%8tkD;hf&(a|hEjfUmy&XVT-;cCA}Fo-*ystn6-fy}JFa+sfvc!qY>)^EbyZ zbk#*OE0Wdj<8}dj#COOp0bLXwo$M`cK91JOsnn{iY}9ur&M;ozlt0_ppVr8{sD&nd zf650ayFyUId(8;bY%`tDO6h00Wb-mk*99I&r-gTdE>)+g3{mJpoVUaU26U%BQ*7K! zEjz7a=>8&ohXcM6VcJzN3h>9pyTX~!#kfBL%Zr{gFC9*-7o_29Y=YvGr9bwq*8U#M4|~l@yEDUY&5bb zzhE302mgJ1U3dI;kgk&Vz8mr9q(H<83QfS zw7Pnx8Zj=a$4l(WqN6`K0<7;}#G(Q&C?qO$5mIQxsUJ6fDIRH6sQIY}kMrEevDOsz zcwr)|#nNLBbLAfzQtK6#t*ju@J&!L2qB4)0@-s!$))}huJ%x2wzUOCgGr4;znB?go zmG)B30>a13sSq({4T6EzB|`3fIAq zYnFnVQe=^ORUeJn3LLL}$G%7i?J&z^x;UIV^I51*;RjxqeyRMxu?IzQE!m_c?Uno% zgMidLfgwR(yrkJ6t0v#DY+{P>xKt1RhrWF>BE9LPCu$`SKS*C=^h?t#hKk29f8u1T zdN^|}@Lwde{{c5%A#&nR3`$`ynHCJbqLy*7tJC=1H2zsEeXp{3CBCRWdK`WO8=Y$4 zQnd*1y09ZUkfSCWu@vmfVox{&!RSr)F^!I8^G#fZEPO};wNf94Ex6A*KhiI#jbPq? z2tPaV6LLq5pHcKUr15TS-E^-RyB}Jlhi-{@+%!}DnbBu+YGKpc`7gR;o|H44J~Ag` zdtS)P9NxC8soMP8m1O|YQK-EX#PjFYx>9&2!b>owRATS_+Wd9G%v^%H0sAz%%B;u$ zWgQ6=6h0NKufya^gT)dB&3`a9UpP$Yy2R)#dS_Xe#!EV7ml;9nKI%Hr$-E>752!Zf zAj7?-RafZIf5gM}>ju@|&sJW7>JSh>1%K8O>V^+;u<`XRm53(jD5w|jM%IB?hPMjo zbBZ@Dw{%nFosofVkT;Zc2jc5%A1K>98r$T(PKQ)-bMzUdTeE>k02djufU&Ts%AN zyJ)UF1a$C|DX@WI_&pGG(p|TuE)(_ked^use#8E2=F?AL-7+vR=Ck7v|%<~1fk zOGvW*`qrnw-#2bNy$%~)7B4wAp!!OW?I6(k=p>`fGJp)>Pfd?hfAg-I95SIYb%&TCRiNhrYv*E0OKS$h*FzY8O0-2BVTIYP0= zt>w~CX$T4JhU@*ERKOP9JWwD=gue~dH=s4u+*95&qKO$Ebas^uTXT&F_vvw$oc5|1 zsSWEIn)s%ngl)CdBo(K$vV1?(H7+Y2uhkdfEvln7!W;nHIuLD?>ep91$W8^WF=x}_ z6$y$#*t?|D!$`s#0?%-aPTCe%pHU~?0TMUci<_;KO1!wie!KSM-c%r{TmbLyuAV@3 zEKr%SxnbPmo3(w<3#HzF&Fksf$nv69qKv^5dS+AC(fCaP2-<)&QRc7$Is`k&f!dl5sOWG5FT`tcifCf;Itf2 zqY;j$F44GtxH6rg!mpAXl!}SgC+^buVP&Pll~xn-OX{p?(&jjV*9!s66kIWeTc#{khV03_(R!)HwYPQ^P z1_<=2z~ZAOT3BVtijyxdsEW{|{r!;Zm0*?+`H|l&@0yGd+()7|z^nWFZd9L0xSY>e zDp;8m^@|&LVp3YtcNV}*_ThYSNlZZko}u-I%W6s5S=+z~&XzNyUuA532+{RAMMS4Q-GqGa}2lrje*3;&=ln85hGCX8Ut+k_U+gC z6+i)0d2fJdv3T0=)4eo1=O7X6AyN?fItm714Vd5t(FDa8L7qd_BnOOlkZp9|&!OD2^ZpS)i@m3jtCleY>mPNMGm#r)9(p&Qi#>Qw$NY$sE6)FM`jZ450$XwlvA zGs! z%q2l3?r2%8Zx$41RDsI7G?b=zwc+s^Fxmm1+SYXVRKcPKHnYwo7sSQl7opA$kl9@` zK?#v!W$e=ZUJvVU>cSppJrE-c30$y3!^C}j#xeQN38jv?pGM5&W=9}x*!k_qf+M8Q zQen=724ZpzU7n|Lgg*h(&WOT?M5}05mv*s)MgY^>)oLio3SMG`Le9P2=nYKUX1ro?ttTZR z0QW3c^4cIWAjr+HTq(x2(0G+rCF@thmTn@JvB`_jAzdT$UEcq7K5&7c zB5D!O{Bbk6YWM3wpQ@a2U9~%M{fCs|{ho%(bJ-;JjE;VC-p8JybXvY zc$>Z%1FI~gs<%;M0;ECtcm)d%$J`G>Nb5ttK}|01Tda4$h4UQ1TjLmR32o3lvygLz z-|iIAA>-4iiqGrbtpX0eDm9p+k94ln>lHRONd6i;RKCH6$LU=+mM_*W1M^nRrY)nO zOIwM_rFrHHo%j-x1CIDS)(z`)jZ%n%9(6J$sM`0snJ0Hob^e(R?eFT-P}CX1(2wgx zR|9m}E+x~wbke<)|6l2z{WR)26g>jZF|^eb!?++vjnrWOnx^Ar0<*S=VuDMNp?zMKRb94-vf%MTa)OgsTK76v$ zbG(Vn!#xMBg1DQxu8w09>4Y3xzukdjO9C96v1Uf4=eS=u(+gHM!Ed8+GL>O)vFEWfCj z>}*VT(D)c^jCAE5p0gy!zw|kwrO|`^(ZRu9T|=4Ocnfp@$(z-a63Kcl<|2wy?t)hz z9X=Xn`2XQ+hl3`64DgO?vlF>HK}fq#h6qKmTz)Uu#@)$G&kvy&wzNWliuF#r$VqE= zrTQrH$IxReiC~?qB|J~Q9pN2ix^nj2`XFPO4It(IPK5$0(c!v=lxr>n>~Z=mnPoaz zNyXse0Ye|u-!$wmbjZ+T^)d2kF+HJnjSG6VII}>+A8XSM##9EI^dh=?*CZ#TwhfFRla`mNbKwIp9hp)YMFlhAJ>&w`VCU{Y?)CPlO_-TUZU2@yDdtAEm zS)Bbfc(vi1zkA>`0JVMh6PH*l-*X0B+mWM+$`#PQ7alD~KTGnq17Akb^@XY15Fd9K z^;L85I}3boP@gtc>CRm2!G-JyCKj(cXzD~ha17YMWF)cU*73iyg;qp)h;<-IgU4Sj zE&V8hR+NIaAu)FmGCcp>;jR-ZTA*DjMqdelre`;Sc8nRL9sl_bUZW4%rdOsiH|Wnw z#r##JM12Ox8beWgzvqC!9ZHeE&cozz%}h0Bz-h{}b-iHty+7U;3d&1?w<1H1JsYt5 z!(bV5+?z1KciE|d_AeO2*lY^POAM1(dy_yXU7Z9gEW|=!|n~ zuP$kf#jWX+*pg)EoN>8rR@mm?MR3bv`(In<=#R>v7NpD;{e8OrnHFLdpXL+^^V%n6#1{lN%Y?!N4F4vi-Ibx>ZGFQ87zdFdI=c=8C@Um!gm@!#?tB zu}wAU^+3D66u-Aau_=x9{f@*T3aL0yg-b?dy;(u-vC{c8P|RwF0!^4+h0pw)a5Buu zMUwyYz}9#BkkzGO#)|c3>|X>mpJ8D&jw`m@w4s4N?Jh*Q>B4`YEWmZP;p!(JiP0rC z!nE5R2$JWEVU42|aKcVFun!QpcU~Vn(&Sy2TnriC{XwWY! zO`nF+t|dXB7pyhE|67Yi732l!Ldj-QZTrC{KZkHgJ0;)T^1@>lSSUWm1yVi7r8g{u z_uZoW{*#a2U0nzpcJtGDtd~kdd)%f3rV06^%TiiB^=4DhyGBn|9xAcRl*epLE3z-*_P~* zd<4S6uz&da{-EZ*)Pc*XIjD+zl83!qua;Cj*!g2Qm#apVNg%ZW?Mm(={vQaB9pSQ^ zsQ`5YHR!!($221kR?&L4MD6Md!Jxat%E* z=!gn9GmbFro$(N}M!nqg?D?ZdM@Oui1=TF_r6_4uQtv}%nUj9Rm^3A(bBMP#hy(WH zyJgS}PU}c=>GgKYK1$!3)6yR-Rnj{Zd17jJYlryfB<~|=la^1Cwbhr^mVwL7d z_kU1f1~^|1S>G-j<7InnzRYkuXs5vEDj)!=Mroo^Zv3X4SB@~gJy(x0tiM=zyGgM- zpHl*`sNuV0>7n+ifG$TRz|Gv#Noggd#jR4P)(Ar7>Sl9c#mC8yPxdBPgLG(f6iy?` zTg=33!`x~pvEDC4e118X4mPnW)wpe5M7V-&e&<{FN~)$k!CE zzedag*UVUL@=dY0mBZf_FlX3&cn0=>L7M7cAWGm;GdYbue?!sND;Y0^8}A0Bl?mCD z-*p;XK<|*EgrW5NX}ZJ8>BZ6g@30d)Px-H=c=pTUsW1w{iZ|amctfHF1y^}lFcYPs zkz=yE`9d8v5$5hD3$a^?lu>s%23F!!67py)n3T4{{+!iIqGlD0cfCNpqw}h;aHoXA z)U0}qu7F3cy*fDdIr9~a)UZK|;<^R@aeq!|gm#pXT^ek6A|efKNUnq7&wIVt7; zK=buHI_?p$sshUbI@5IZAjTOpBcE8rqh%=oMIk-hl*8Kc1-qipe+TtQLm;yB>6#p# z?t@T8>}DQG${k5fx)C84*kBuftmsbpbPLzhx?^$~>Zcb^kcjUFUG;O^S+Z$A7#>+F z=9_op$Q##%5u3Vs^P*GB5Uf(rMbv1u2?qK#%gb^FA%M^?RO_yY?gc@Ms|o-B+l{dB?Z$6 z&zz0Dw8rL%|xPcITgiii{c zsQs9WLxP`ruY?Utn)tI^hvg!Sr>K&M+pqAL>(%ULF|V`AkL4T1F0@~+;}iF}$?=&* zk1;%VQRk1l(dSSxz~~r>FsyWoNVb4~W(CK4`#8>(Qzn(9nMq~f~7+YChM1sQTAkOmTPjz?n?QHFY9hqoNTgqYzW`APdhtH~81F4f8iV&i z_87JNw)b6KlSBh1{z(vjpI$HS!9~fsFaPIVlw`)3UMCNngautXP@_9}nbB|OjC~`h z=El#oAC*UseC1_`_S)}E67AkBX6N6l*Nj|2AmMS-xVrpc2Zs>??3vwH955c1E)E_R z-P*{RpR<4UvxOW^CbH#hZ!W-0Dyo^;hehE9eR7d4wqU!|oD&JM)w;MS;AEckB#$$m zT`q2l8D>Z4<9M~XLJG9i6(u`6oa`S=kn+qZs79svKd5_T+4l(WO8Q>8SC8nzJ^Cg8 zJ%>AgvEELaba}!yJa_PSOe%T3|N6s0ZDfuewjm(aHt7vo5;fSaPN_C(IY;ihKAzd6 zzWdM(2f~I}AEN9Q9HK0;L|qH#Z-X>Nw%F9@p!HT+cid>jhq;L3ku?BG9`+UK_$n#x zuFKhSd|e>iqFh~WImz98Il3t)i{g9(FGe(Y?UhHkZoc^N@Y}D(hp)Z(@MxTu>!-1h zuG2DAlCsguNx8Z32YmT63$j;6(|1X`ap^uM8J6979v&S{KmbPvuMKK$Ueq;RywLj& zx2_7u%ub$Z$3{Nt`X=>iyP`OG5vqFWe3f6qwnRysj`r+J4sgLdYN#aBpP3_`O%KSuza`3W5rUM~5~YGMBf zE7B+Vn*PMKk>BPJJ8mO-srQUtswEJ}NmL~1S5jG+gh|SvCngT&nl7Cg{=XuCHSL=g z^+N{<&U&_+Uh*ExLOxwUAOE=har5Ky$IG)Wd8B~Kcj(J5$)x@!@5;N|NQ(I1_){pu zu~H(*j&p3VF(zaamLp`}Zg}i_wh3cPc4k+WghozcaK1ags_Jv9=a92p4|ou3rl-5Q zy1Kf$P99=f+G4^e*fFGMfB!q~p+F>6tS8f4Hy2dgN(G1YIRJozGbvqZy!jcjC=U`& zM5{#VQ0^~|yy|vQ{jO$b#ffw*8v82c4lu*Lx=UEnUeoRjZ;+v&vFb*S(ErZ53ea`g zsvl3udM{N}R>ZMSiy3Kq`rtC=>d&AnDao!k@Xynd46)fjxd_{0ty>K_6tKoBheBNv zvf?Dol0a~1l5jX?shysCEJHd%!CW%e$ItNqj|V>86~7ts!`>eM(~wsT5Dc2!E{W6? z?8*n4_Y9gE{2qM=7wA?uT{HZc1Jf2KxLyv1a^z5Z~5T$y-bQ;|X6=mQC=X-0- zgHZW6`1BT$zUoN_*Dcx-O?tck0rstQk+f@fz&8H-8N1;4hvn@Xu=f8p7HlnB(+_-> zaJk}=Pn*`G#vYM_{}^xoZ)NS?P4_Nn>n+?_PO9rDt{Y^EdB)tno^$(N zq-t$N(zbPmB0k+AKKF+^Mv6|yNPuyDj1-k)BwPglXQ!j(6RdB9l1>X_wyaEvQj5WQ zJh{ROG5lh$uGP5uIl3ktq>Uge-#J=@sI6@*Lq$=J-H*+Pr~5rDeRc?36dXyGk{;o{ z=X<$8(YrZSJOY=+jG&guNv$=5zhWadqREe;pBE~U{<;MC@prO6s-NzET6i7zj19R# zx0^(tk+8u;hNS@W24ng&Z;a7xp2YIl^XPdy-TYYFX>5DJ1~{1i~v;yh%O-+)F$KiZXVf%7%4a`nW_=Vn&O?UG@te zbA>k;4W6PyZkC_Y2W9>aLlo=5xVFr^^SVAI*28&UF-E>7*J17wGUdBsaaGQ)r8^!G z&d6)ZdNinmo3qHe4%Z6;Dt2{4FY^U=Lc_>nPSSA3tI|8DJcvD68J{L8Z-+G>h;ZMk z?@xPi&=OZqbXN0XHmRdLoP>yawzZM=wmS0WS$q$)!0GEpc=^!VO>P}2;a{LL4Z2DD zP9k=#l_Z=z-d7!bG*f4+EOk?cAnz$Agus~bhPRQ)bapnoD#^y8)#d%{bOsrnEr{~} z#a#ZS3QMy^PLgp+i3%hG8U$v3$OgsUmomjq$i|L9R zwU;VP>EGWHs)H?iK7WM=Gzcm{HYGIji(ST%L5iu7TE{p)4+qiRZ-ow77dR+1>jNflH7omh`^>tGtw!YvF-+tl1rBf?<3Z)a z-VuFz(i?OlTVa@o9(TUC?CxFCfGD)u79bREBlFZ;EXr~Q#e^z&>CI4F)DG_v0(!Vj zZ-RI1I=)_fKb^Cosy`gu^pB5j{(*l!-kc0>GPq72{Utj-Ci~UN&GGRO{k?s9K3}cr z=he~iBp;nW9lbdD$HR|e)r9*KUR51#UB9{dPonfncz<(`bDbY=UmX5I+1rPSEt*b zbmE&h=0-T)f}a9{A5Q1mcsie~NExy_eo$@mXP-UvJTGumOnoJV5u7Nc{DM@ZNzjvq zgXdoLsQnm4?^<^eB-42YKfQby?8qgNq-@-1I6xFD@WXN9I%QY+3J!1=IqAb(jMUiPEZW?46g4XU>cBe z-znrW+opGqw%`C&v;0+x<;i~bTVV{$b@#X>F_gIGr%=oaTw`R?>Gt4%%RCyCt4;xU z?=~C)U=;j0PU*{KC3`A04eVO{^G-#d*6Klnb65MT>l5UQS1-TfLk6AlDX|7?%vU;o z8esMgn1bCWsZ@XB(u~G}gcry*@C`$4Be+OTy#TkfV zT@L*d)5M6_E2tLexY+*j`0h`(gTR-y$Zu&ra@!uis8{SZYd%iW%QM z9PAzSj@Ku5`$vCa3GeRUcy;)b?aPayP)?8UE*xigyn^l&iqW$*d-nF8zxqRXa{u`A z$B!NiDei9f5&!dOcaJAFBdhaz0bj7*1iYK~uLp=*d}SKAV4c$i;(d^fi~ctv<2UC}1mEB$dxKCttnOeh!oqyM>J%&EHw?_giwIaC{%@2Qka`#t|V&(5W;0`bL`jBJ?H~265^7y&i`)V}> z%)nish`)>YAMz8r=ICbJ6yZ19Qo)pLw`GFZ{;piim*ekj z{6Fl!`Q;LUbz%3r+i+7LdxNL{Abkr_4606zDBZ(l4_GmZ{TwIyd(ivwSM~I z_4BWZP3M>i)$9-xg0PEH&V=<&)i8`I133wcRrSq$Za0jVSKiX?V7*RaLI0lgAV zL2i8I_2ubeh6_^0H8W2cd6V#qM*~S&ZzARK4VP zw)u2ykkANgkDvqQ8~_SeQQTG86@2ICPX_xUD^dw*ihP_E5>*6!61bFeSqS+B5Fq>D z0AOxs6x9sG^Z~N>_ax@?;0YJUz09vAY8u`8;#DShv2~WVpXEISj?X5N)5jd>mNNq( zzS`+{mDgsU8(~S{Sjjx z)86ifJ;%Pl-im0mXApg5E`J0Ld}4I=bf=CSe9{K8s6MsGn)0UNHCsqUsF9GYW2LJnQkC+z4Z0zE9Wv9aFOTUSs}%1YF~CRzRV0pU@XBsQ!-`f? zWhDmVt9kjhIA068&BC-=Bl9I;;dXggHwTfbTnT))3(L@v7cpBZz&7Nt_S^-`DHJQf z7=lALVnp`y7FOg69+vn6CK7UddSxGc_qT7q{95G!q>f#9PoQ9j1WJ;k8w9WYFic_| zRKKJeVn?7UTd1o`AHMM*g=?p5gt3*bc4Y&l;G3bx_NoKA@A7%a`M0z3l<{e8a; z;UUbLSL;!fH|`y^6!b7alJ4WAX79V=V~!cQt(oX009`N7CSNF9ZJi5Ab*3$5<2(Hz zHmw^t+N7`hRbypfHM3?!-dF6#_Rs!J@fu@LL58K6QbgVyYzOz(SE-Gt*F% z>uW@{mC(z~@^xk#aCEyAtAcznU7C*I-@N4m-0{_qfBxjj=Mi_|ah{8XbPf9!i%2uCcn8 zJxN?&PFYsWWv#4SV6ORhabpKwOrl<}p|`=kuYWn6P)7HXoW$SbCSx;Jjn?K`2tqMO zfaBG^UxAT(j??Hnz)ah1O;R$2uk8f-mM0GVq+%K~X1gy87_ix_O@M@dv<_uRJC~AH zacqCs*IJeg_9^I4Y0NqARD5N|%6NnYLZDH1Y*i$_kPQeYzpDf>&wPdTf;f~@{JOm? zHrmjHE{jWc+yQk9c1aIvasDN10{huBGXrYakf*?=ZAMUeUA~?{UFzLC6$Yz#fUDh#u<}6pS2PYA2H_>&fm)T4Q@U78nwCs zj`Nsq>5KL~91qedYqg==qv+Fco5aU1wlit{gnCPsT12}BG}u#@v4h`E;;$ZsQg+3b zlyGmq{q|c?K0+D99SXm;VMh%I=`-0({nDSD?kFwFZ>~tmsg6>b!!Cy#Qb5m;f3xXy z$PT^H8H(Nm&347R#jt#|TT(^}zb>xUg)hwOwUW$2JRY}Nj$@;KsJNm$V+~~p;bp#L zczjK_35ld-4J*BWl01i~LqH$#sT2tYT#WwIxd_lf+~lOg;cAuypKDPdp1$-Ayox4D zbn8@k*nL?QKuq6B1z|b1)boPL@W?by?LHx|quNhs^7hq!TSdO*a(3-F&^e!)%@$8)qL)Lb4_Hk< zD>)30bCPf+nFT&|<9O|3$<>BQMD<k*r8!M`OXox52GFdb{5g z@&PoMQy4@hkS+6KRbLE=#!)n!;!?X{Qvp=16}<%>`4aYZxaO60OQC&L2tERw|1sD6Kog<$jY_?nCZ*eYc?X6{j0V6~Vy}seg{nkNfw!CZ|qI&%n znoMcykpCN;O4u&yLFm+t9oFbv+v8uG5yLBdvfsW!DV_X~WEFJ8yu2VEcu_8R(Xvyw z0Si!&_3qqenwF)>YIa!6dKps)deE(lkDXfaC8fQ?kGGES-Yi5-j$?=UUSHy{z`{d1 z9c(pGW4KI>_MAV>XE?qk21WAw=j1Oc+x+zE6j#upSja1vj?1mq9f2bQ+gK8&XG(}^ z5D(~UD;9imFeV%VI*{ruMvuG)I_(F+UWbO_5YEvPk%Qc@)0fEw!=;rjrfF0{<0pRX+X^ zpq*|8~e##bRV3q^9y<69tFC7m01-o9D5bFMqOPpgVSCGi$zHv;M>@5P;`Ewp9t~k z_|uEo;uK#pXNunh?rEvl?CPpscm?xo0X7HgEMzj0^wC^gOS24eSKc#T%gY(mDG9bh zsk3bx`kR_)=i&;++4tKyL+dZdS+ep8Ju=_;thQM-HGX2n-OM#iH2QYklz2AVb+9o! z+l|9V_w9NhGHJ&?^I3Wgf<~0AzaC-IN`kPOaRZh@J4nf}{`K#ni*d;ndQzOQ*I%rh zYopvv#R;lhn}{2UyR(WW^4FV9B~imxQXRv1*{Z*^y6AKqJdBG34fAslviRB$lid;C z&;_q;kL`NoQNIx12ip1!y%Lp#u=%S@m`b|)=M=LJJTWL->4ldh$nuo#nOkLhDuOOO z3Pm3HAwWIpPU%h5C)1W92kj+g4bWnmmL$Q*Wv%Scd)05R7grz)_OheD(b4<4afWt% zNZhO|cJP!wL`#S}xCWu}VGNNtT6^oaETlGWC%56%N*^?yP6?y(x>-L(-%7^A}$G6ZdBi2 z6@WyBifsASQ~xR~UtrALZoG8FjR)sYka@d_p|gVaTS)mJ3__sx)UeV4 z-bRzH8#2+qHTBm7Nk@LCdyOuo-We>AYa;j5=I;ZSteCo9l2PMwx_-NuMEwTq2XeOF zV_M53w1Ot=_dhqw0=yQNS2NmsfP8d+{HRBX#B%b(N_(erAEKd@E>d2KZtovZYjqQl zE@}(iq{BOHpW+|mr?8bCcM*B4C}&n5)h1rzKIVnq#@M3a(UJ zNUO+epp=7Ab!OyOE))~PZeP8| zKP!Dyyk4-^0I0#p>5@`{wF1^}3Bk4`C%`69G09GU!=IFuZXLz9&beu(^0DH^boCOu ztR;vP)o9PBt7RWDwcAX?q@V&(h!W$J_OQ^0h-vXm-g^%hDfCn(yS0rWn^cfol&VK8 zM8T{-rvODR?$UGq@_=hL3j(?HHS0NboPds#$5h7h`DFll_1$-zykOvR1y(-}V^3+! zp5ir zfZ0u2!&h?CXFw2R(f<_olkDCQF4(FKEGuacj6qR*incr&bJ9<`=0xR!_MB&WtlMlS4AflKs7)RR15|YO9NYcu?z1 znoq82xhm?Dlyp)$4oab!oXb9PpwRzO&RD^b3%j*G{^Em%V;h>2WeSp|tWt+u)^{qr zZ_q(q=s)qK)2`39K@dC#d}HHMC9WrV*bG{e>eYaB#DhQ~q)qhlX19Y;;I;~Q`j45U zf(vV00cq1DeO`DrgSbLS^3PtHNVFhYJs|V_vvgF({8z^$~H8C8&D>IO)j{p zXuC1+&q&k}_Zp$9WWy4hFXU(4>it#s;LMc!(q-qHH|8Chf2-bJI#2Q4BOdsq@nyQ) zSTj@i1-x#P6StDPY2%fnv{a!t%%zt)q82Gr=!3f?yeO6H*$lcsW z@+Fn1S&`M%Rgob<$?z&hUDcL91=pG#oRqeK+vNse1V$17hy)40~OAX~(~MY84%E&NYsJ zP2H{BQ%e1CS>QaBfVZ)|LG=#QWr~s($KV(`G+urO<~PkW)s8LCt`+55t4n^w0(y|k zr2pg3A3eCgCn`}9JqYXt>+jXHCljB~M7$%Mvm$zW^yKklDjoef?#|`al$A5C{fPY? zpra~Pw-OJ-7PxC_VPZ*?l24I1kz>6gSUn74iRMb>ca_37@N)Wjlw@9hFnVH_li9myjm zynwm)FSv7inMg6RrOL&?gb`0G!GbCS^zPj0^|>!r3@wEu*wIUo2~Z;McN6b->AmgX zLGZ&mAZA=4Go#GUPj)hLOL_S4L1t>lI?nVsr)d7bTIN&S4f<&>`^X{{1I|Iz@QzAnH{J zNZ{Sqb0SV4A;l~@Q`PTnO=0v_12!d6Qm3#n%553$eQ zeC9<;wyOh8rD&2Gm(B}`YpNCSllyND;1J4bt-(>qF5h0CBA?KG-i0rMu9~UkUPl_q zB3RmEJrx6(uG71_X*&^BrUHytMg1m7fDVV&71blp6%(~TUX^_8lsBkgBu z8c6EfI6!NjjS86LNBT+Nd1L~#pwkUNO0Hs9pWiQ&=WC}^uuitLHHvYbSITe0RweM& zZdQLui5d_#x?&=V>L2=n+5_Bz={^-dPcvN?tIjGk%wE)xH0{Ma&R*CBLg~C>u8WhU z2#Run;wXNH93Bntu)X6)E|%<2iss#OPO7xY_j`Xk*ctEK=Z#Nk`F+=%p+%qU65CHG zab`bRF&$7^NHnQww!tD6L;o4dth6rMQ;ME2PI4BiZPHk?2c@L*$XBy#7Nk>TdO8Kb z({He-zcgskM(Gj)s5P$6)W5fL@FVP zhz&+|dXja;U_1-cA!@5Kf1D+5CWy-hF1(f%TcDx}(=?#*V02r1z5Cb(=}3zE^==4w z8PC0zwm?1oP9*f3>DntMlioByi@oKwdYW~<<;@qqe>fRRvXxPqOz$WStI~sx?hiTa z!~i9ii%tr5p)7Cq$7JvCC#5pl6ww_pZlo_u7TR`)nfP`@1A%27*{#-oepwF;@wiIM zhmycs7_9Z$`lY(KCB3(R6R;}Nd%u&>H{7t9^ySt>EB`%6gHAGXeUw${*RWXyUy}c3 zYziGREdhefasLp#xdg2S>8J!y#b3%cju(sM@+!%jQIn2!0vmJ!x6QdQOZWbM|# zJcIaPS%G*6g1QS)66q;~JfrsZPF)&S5`EBZ=d&IMrx5-JMEd>Aq$IM=MZP+P@=Uud z#)Y4#no7=vvfqNXNl5TnSd8t3Q!Cqa+scK`4<0!nrxD3_^Hs_Vwbkbqy_@z@ny~J4 zS_jT+U5+`SVN+=BVGsUps%ND)vzrBB396~vQbFIKteqX4IpzVl+XMW@G~_ptJDxl= z18dR5ql`rRB+;pSRQ18Oo%7IjB}J>_ceKQ%GO-cp|6yI%*?z>oSxoPAs16zumu!&j zCyl`0hU+yHb)V=_$rf5ry`UsYUB8ib@8729*hJsqJnn3F2laXHqWITr(BkjXVNm?1 zSr-CmY(KX#@pqXNX*z!3xlors$Q)|34ge~xVb*YaCIL3`&>L&TGDpQdlBuv%}$bCn{3AvthmV`F&Q{};ez?Q!MGclZh8B5v!0_BV6 zJ%>F}#K=$Rh~+o0e5jcj_JVI5bKKh$dC!b`uQmK=OcU(7h9`r636>ZW7UCu~mG*VR z*0u_?r@wppZSRZ|oHQgx>yJi}w?U*@-o)KtvCM8=%3-VBcO-OQg^Whg_tjupIlAq# zrQ@OP6wpQLBd9nz)PGPr@Hd>%A|86cMmEVZQiX|ine?L!y^+;r2@kaFB(5qh zu6Gs~|LKvu2&;ytv7p@hg~&K#m#@fdO?B=GE@UpQy+bt^`Zh^#Ya0y^$1f`Ka&Js_ z$aMLf&cVy^Y7trYYtj%9(vnc`8Qj;G*xBQD>GylG5Va-^H{W;`>5A+T&AgeyW#CV% zS!Lx3`JHEPXWlWbkejfh>_iG6mmf#7#^fuTeaxqN@FIGXEc|!;j z9VnJtMoqQ*x9m^99aGIch<*BGFg8H(0Ad!zb2|J6sUuFAoD}HzI!g1b<4C36nUut$ z(dp>0*(s#Hc1o+uO`R(ogFEb*!Ny1@GF{pFn}hN6Z~Yy3r_V^COsf?gmKs)apu~57 zgdC#5_DeUGl!(7(E2{anqa47WBN(IIzJi%Df-qAW0f09ITvEd^XAggd2W;l8JaW<4 zQoO$Dh?P;R9qey%`4?K`E>g5J78fxgye|BZ8mjZqA@sL%Ec$=nW@4~@knN}i6*T|-9hG}WuQOjgr~hS)H?{-6U{v8*oOGc%!>R0Cpm zx|kpb=P2>&WM>}#0KQE`aYERa0#Ro?od^tre9=zs|pf!~7y}wUa z3vweV7nlCX+e&cCanL0Ju;bWx*tNWYND3ESff*>BaZ;Htd7`hlF*Yze`^eEyuCHfP z`t5&>Cq;>sxTc^Ki?*|}^=l=c_`!UM z?cQp42Yqkf(}WR8xTInu}AT(sZG_AoSbsIf3#e8D7v&*@1mqw zVEl!6DN@6e40F*G(1AhH{I&h!PS8^j-9eBrkwl<0QjD|_lF|NfM3O)YwW3}&zzTmU zGpDa5VL>YfK5n%ZKk}f<+J>NO3S!6;rDF8XnHwU-N>Wxxf0^Nk8;Q2DpJDHBlfS%6 zvDafC^&mbhir@;FXCC38$^s13?iqL(6~L^{F6`IF{`&6VAPhUtomv}5(-D7>$} zSd^nw){HIlQX*T1J^TeeX5(J4+VwO&ZaQT0fy7msoL*e2)HV5vk^#SBo`HtVhY@c7 z@vyZ=Qa;quZH44Twv?1F{HIy-R(7cX1PVhgB=jWEW(dyC*af7IpZteV1c(H$rYn_- zv;gjLns`?|+Z}IwN|1tl=_Qolvun*>4U^)yq;BjLt9&GXb>XFH68f5Vx-Dyk>|GKN zA*&{C*3~3H4qVPX z%;bB6ANvlxm?v4?CaO;(u(vBBM2{|*Q>k@a2q^Xem_l z!kfc}T6|y;z_Ad%$br_6SI01qZFMXn@ewo)fNl-U=74;xE;3o&>Xa5L`=|?A7D?MS z=)cDD(ji^0$z3()EG;0nO2TGlG-RH6pRXotSq6tbEl}L)ngLD95%9qP8NJ7KX7PUf zlx?uz%9$P4U`FU@tSzC8D39;a!-#c8#|KQP6qCb=5yW!NB_4?X!Gqg4Npk)YGcrwq zcRoi|E3E-Aw~Hy-JbLi>@xv$m zcL(pv@smeTdY8)&m5Q6TLzI;mzke`ZtS+`~?Td1Ib$&)b*?&jn^z7$jQUv~({@RKn z#3)tp1qGZ_&Q}-0Ru&)Zl(^(1ya`FRV?9#%eMugjKpN+g(HP3ep=z2jz!?;~bGjwE z@1gSmeczA~_=fyHZ%F$g5z#j$NQiVM0dr+m7_FV8bN^uAC9$Mi6 zp~FEgdZFVUA)vTt1xAblF2*`!9j(uhr(#WAA%y6L!XLCvi4YJhG7uk`*(0 zWhhX*In!H>*|R3tU)@`}c}kJP`sDmk(KWj;p~x()N=AOmd8*&^rsM7vKwtrbcw zL0M)EE7bb^>GtlEM~^>$_?YPgNp0!ce!keUGQMF3!e-b*BxL#eE#=1*V6s>?*Fr4e zRVu(oxQyCrTuXuXzIR*T>sY-A>#OZ62X})K7S3SCvo&=rrVtEVatfPhJ^7%|C~E>( z^+YOimKi1ywZf>H5Nyv(3A*QfbqKhKgMtI{Em;#AwK=JJIS=gCE9@}hz@7+wMtLt^ z$o^Egx4F)Hl8%ULRk|Wx7_M}agDspHPrSW!aGwkmr3u0Yk8mzvYbhu2z1Z4F-k{*G z(B@;}zpTGiYZB0+UOJHzQzm6LwQd|Cf#~4gJ?1A(j=-|{g>@}RdD;ZRc!9S4FzwaQ z!4&59m!LrZ(-s)=Pi%o9Ejj8OK{gUu^+&uNc>v*qR^={&mP#-Iv?!ca(ds6%=ShM2$}Di z^0xZpIhok3tPB$`hfS6qttnS4SIEqV5$CpVN zw4tTM2Gm%2 ykw}WVQgI`dHjiGltEe5|6x21cmO*)WOm$JQ-V#BB8j2`p0?_Wpmu}xqhvSZlL6mPbInLY)>L1^Bo9VLli!_#PHKiOX9p3fVKeuuUIblMu6Ou zBtHJtiDrKtwy71#)=aggIp5kZDMm2o zbVl=tVhWf#@g8o^EZH}8Bw>BPcH|z32#OlpR!vl z1T?0~7NOt|Ok?UC&>pg(73vK+)jvJ$kWZH+F&hhBrlP?2TdQOLIWOfLAW(orA=}bl zq*hKQY^7W~8NLsgDF9J~*(mT9RQ<41Wdjp{jRR!a+E#AW@wKR!bjVBXpbqw0`&TSZ z%z0KEF(${7zuC@F(WpaNX`28W#Rr8nCtu_i;az+59FyfHuD)}f z6v^8Y%6G4PtpgS#vfKc5tvOk0<3N2hCrdwga{4{w`itTn(8s8~TmlsiqV@{a=`hT! z<4iUn0yYfBF{e(E>6{J9&K*ixN1s#LYT(gf6mz_1T>^3w?a_@SXs1ehmsOOzGj|#2 zhDn($DOOmo|5+(oEdYb@yN*E@vdMzh06##$zi&FXMa8RvYcOM9QC~P5AAeVya zJB^VHbLUQPHRau|bL((qZhgXzGRb(XWYd8lDtfcuD5MUV{Ur-5^#`}Vs_bud zQv|RAaL|5F#z&IH80P|g!g)LJNRnG)*GA!At>Pw0PaVjvDm!gRb*kGUtJ{9dLc4B+R#BOdICZP8(l5Qhce+yZpEHrq3aMpM`+RzKnSB0X zOs`X=ts-;n zq!PvV3x5TxrCgyff=cfD+-1!S7cr`X-FGp#ej;+h>ICP_4zsS2gy#ly7x$&bH(gdh z!iFOxxS|Sr0F9JiV|Q3OMn3fqZ^?(ly)iOk)w10-eQsq?dJKgb_v_#jHZ#RmeHJz2Kvvi>cU9`(6 ziC1!K1Qwk`Ow#}h@gX^|zqO1|uejanptoa>Na;J2^6+$<2A)oCtO&g=K0>N3=}}vS zedbQKLURuqRVoq);n02esVE>-c)PBdOOc7ZD4n(5Hl$gH(DU#=>Z7rgv*1u|(`DIf&-onv@xuq7KN<8+$=qvG@%!Gj=d>id;(G4TuoufKPJS+i z@pp>?_Km9*9TP9*!=Mpve7lCha6}ZTJ z!P?1wRQ5yi1rNp?jr!`mpT)NrxE7Bnx@3gDIo8NVK7zs$|d! zR%|LYo(NjWKrLtnW__8$pcv(PL3AIydF zKBt_)8h?vR1F5zbxUK+b;l6P~&1jW*&7%F43}dXc!TMD{qtM3cvt-Q)aN4l6u@ucB zJkr92Ns%?`l4Svp>|5Y5{N*DU7$z>tgnb^(9xGp?rc;ER8arL9i=XO3UD6>(YF5G6 zZ>t(-vPJvbGYHIS@_M}O^K(45BFU5rD(j*kWA{CLo1`g!%x+EX`7jg4s>-UNJQJYb=Vuyk$;rozTy7-c#aPBdn zsTQrPpr(%xTz0rtJh11*=xXW4ki3bdAstT}gRQ#K+O4sGQ1`DPL}{MHjXTUgK%<+1 zu13hbBgg58VbY}s;*J{FN2NaLkxe>qI(ab?2Fz?asf{u`jI+QMHm;R6D zsOkV#e6r4@ZE7#Z{9nx5S8Ia$DqR7iBK%yHZ=;RaErFN0w1~k0`!O&@2d+kl6x0&v?b7nI2WlVVu84QzEIA_xfj%8T5Tcc)OR!`F;eWNq6O^W~o z%LnH|vhU6$Z>e>mMr7h1?A@%JbQWjO#wx!6L-3^@L|;V0r3sm`305Z}r;{e%X_w4c z>{KbaH_OU+EdLIrcZ5>St|s=f97Nm`Bn*2x?E~zAuV4NlWOtm1(SzoPS6b6M)D%LL z6&zcO2g?HRCB062DqY#(MIJj{EQn#M?n2BQ*iRxV@%?C(s%m2Y3iXTou~g0on~;T_ zI1}P*^9!k0&2sE8p^)d8o)A#%x1*Cv(g*H~^tcf!WUv|>9tp5j9i)7N0@H(&WNrp| z?*&Va-G5=|w0}g?IPr^b=Rg}H;^}TK(jrdFrc-d)Zj81l4oa;_!+AMHLdHI>yar~S zudE@%J41qJ z(2#fp2Kn%G+-gq6C~G9DUhT{kCo4g}+90o8U8T!-8uCnK8Bdp=9ZE_KdyRFBTi=bO z+n|EGJZQ|TWDQVXz53>L)__NmD57+!Qn=!JD59G7MHeI!A(_=o6oKoUWOys>D3THU z8PPN+p9^c8%dtBb+nU+-QJJN5;^J^0q_g=~3-WAC|`m}3W__a^XBFHW0= zB3A-rupaB`qX122iw=ClJ7z_x{P; zwKp|V1o8j<6!Fwbq9F(P4!)2>MemL)z*nhd1qcug1d|{{>%P0c?w;rN?CxwpOG_oY z+tbt2^Xlp8$LY=GCGHEyf2I)c-bGT1*A>Imto?!S{}@`*~S3%SRuf znol0NxUNO1CT4rLk1=xUnqEi*t!JTg=01bCVq(y!0#OZMd0`aTu8ZvV-KdD7>SI_W zJB&jQx$=JbhLmE$<43l^7F|hBhnH1bFR%S7{Gq?+8)99$!r$qcYXhrAeXe)3_i}p0 z%6>^>IoILagCzaEmJgwi-*NE&C@n&iGr>Kg)8hc}Dt^1)qJP4d_*{Q>RTXas0OHyT zuymC1irAmH^0*{PKO-KcHJ*Tu%no4KS(3+a2Bn0P7kh{xKI*YhXqMopKb;T+`IbaR zAAh6lLS4&6(1BuqHRUAH&CrGU3B@BvKN;hG&)_vo7|$cHPo;elD z#-m%z2ze*hlY$DR1Ihno)MXOi6g=?s;8_Bh4&sgr63>p4cO5sg7t{HeKzj7>bab}h zA3KMKN7HNmY5#Hs?yG?uPEP0oZRD`T;)8h$T6N4+`|*)>2B$ixBV9Qzqv1Fxfp~pr zxdg;|0{9w^qVlb=0S;#F;|W?oF0%wEPN`xzz8Ifye<&rgMJ8g3K&Ct-!mzOc2Oc5t zEZ;pos?yeaPNRrngY>xau5sOzWUtQe5%gTL1TmygM0YSs78o%+M&6zqEPXVP<4=gB zX6{eiRJoFmo6l*wGGv$&dL;m5lK<_=_&Mek11#i?T6IQbTL3J zBZ-SDWwnzBom)`b41#C6RsSnqB>Fy_Q9%dV`nU^q3GTzNXdi?pA&EN$P-_`DS9u(YV#ZDBaB&@l8QR>Er>@zl7tzk<6t?ePpn`O&`@|) zEG?u)y^;vf$8ni8Ul~2)CdRO_P;*(u+&}d-Gt|d%sjzN-fy!-n)VBK(YoQ+n5g{rV z-Dlu{$wF0b!f-Rpc`->A^!s~mJi}>mJM)cDO*MxHrOwfkhaXsRq%P5G4zlCYtKGQo zc3{?Rg!^vu1O|bmLu%5(rg}W3usE6~3{K>$)q5lj9DIl?jKM@6vuQyz3J_ybT-d1S zaq5sQJ^Wrp8RA?{zUH|3UdW?gO0ZLV!ZUmS!m182jKV=~ZbEO3PTAIn#4t^y-2_F8 zKkqoMv%FDGKXpQ~4N4brN^V`EkvRW+=K$v$#Dk$T8oFv7e(thO;Upr5#v+o>CpbNQ zj!(7KhjBlM?esnPJ#)>=+?~QKYoy-D|DYv2Rb9 zM!e;{shge?QU(1A>-eFp4&Li@CG=WqiFu*2O+*55Y=Wf6rJ0Eny{MkYwZwW^l~YxMQq@FE4FMNCfRqMzg8c=k&-9i`%O6Zh6I* zEM^SMGdbW+Ri(0UMQ1GC20?^Hic^?8(k7W2u}FcLm}zBFsH5hps0PQJ3s`D&eTf5; zo2t;D&#?8(i$$^Njs`N$y;6le3Z=k6j$YX83|1nJ5zBXaEaC(aVn=PVBpeRUpgeEU zgqN#r&yd9w0A>hc`X6I+ZLrf!eV?uAZd^;8l!a(?on>vwA{i06rh77p+;hZW&)QkS zQSeZqxv`JbE(*a$X;%lGa4jqV39@F2yZH^!vVpD^ZLg5gEzum(tAc-MU`64Ds=r!8)1Ys`<( z?b4s0uGv_0K)*{h(2fnF2eyw{`;LhzTSgx~Il&jQBFLlcAU-xZmkq?$vT&Q#C6CD7 zy>W&hZmS;wKwdYWUPc|=YZXuPJ<*(`FEc`q?~6dMi}ivs3CtzXpdXx06K6|Gpc8U5 z8Mr9Gct9pT{=h+|5hddGSG??>oR2>ppMJdg;ra*fSOge*J4UoSB$clVG=boUCuj!m zivA*!E}k5jkB_H|1p*B7g``0ko(cVhHQGbB*f+p0`NSdU2HPorlTeOw!1PhA#|w^f zmblO|*H=VHd>y6czb$CFY9_$Pl#Bt=AHCZ<>)7zL*AQwa{zAYZiD$PHh*Jk3{muVl zzoB~3LK=LsAf>P04P>!zuoR-*_KtHgHQX#U9!4swD_C9L$qML+{4~0z2(-P1QEy?{ zy@M&YqrKK!J`wGHObIe2t6fhXSh|Csk$HD3k5g12aI%-+*??wjCQ=UD1S1Xi5XOKH zT#Md0$f{IdW9mx0RC`J%8X)AR*rZmdPp8F9nL0drgraDgFUp^bWSM)m-8)FO@|wgA z9l_bip{=o;AZg}=jO+zm6+1$0l65>G9DBmzZ^@OF!qcqg>_H=kOG6yw((Eu0xu!wsDXPccL5J}W$olb5bBI(>?p z)9wGek3V?4xxTTKr#$H^&^JUb0EqKUB%% z_urE}swU%bxd8J>G+cIm{nE%E+vo)>PFb9Aw`NwW(%wznnXA4{YNjg{#oD4rF8xH( z`HAQCW0~r|fJn0s==Z{r_I|PL@3x1FXoJlOWQ1 z?d=cV{y_Y(-+TN4FG#`gLnSt%7e#DFkgqApPV-CbW1LhA`xxiFTJ-Ds{~1J${v{0B z$^eD4l&|)uN5U&N8hXTg{Wb@aa5u(e-)3L}v>Kb;MuStDFAGueDyV!kt3fO>m@_r( z*?G+&9&b318~YC7Ik-EGD$oK}xKzrztxUc`olPxO71fE2f?Athy$Q+P!udVxQ@alh zJQsuSN_rOwzFOizx_cCZdm_z5uO>FvG~Pde!%BNavh$eq;{F^CvdSq+>q3;#QH%v* z)FGQ0hwn~LKNrs%Pxry-oWlFgBn>MDCTQD!_QXl&k~v0j@UCz?qDGNnBCQ3dLF8$J zQWF1&rWt{e`Qk{J+;c7P+`V$elFf_=unp((LkbdNU8GocCMX zo^;NkG&~#4jka!zAG7K4&D`R%E6&U`y$=KQ+tG}zY-BeA3btZ(%6eZH*Td?6iw(4m z5n7C|0nl~}(&O5}IKgL}pE(#Tkk-YQhBLAC-Dr6Zr72g) zdq0-p@#W2Bi;hr3&OwEOk|AkqM*tYbJuY}n^g_?NlZnxpUcv(NPhxD?#nKjGrI@c; z&-&KTa6npa5rP5ii6HyhHAEwl5`tbBhEa{c;V;7EIOrfTE1Sc^u0n8`9pB7;A3dg} z6TXDM%^%;6e;+^o_WG2&XU#eRt~pk`MgVKnE^sow@RXS$>Oec?*)Ksp^oN(>iBjIO zvqr7LR2rRFwnFp7SKN*CH9LbjR$VcJFe03fn6Ttm0r2LGX21x>0yZA0ua_fZgs*#C zugA-nAFh$t6dX{B{vEbF^HE9{x#B@kr8dnKM2sBVj~iEy)xuf!)O+3db=w(i;|%Ur zS`2t%9OofA8w9o zVo;GTh|L3+q#lBIEft?0lf;3hM_yXMM8W)!HBe%?`EUvDz=PF`F~|lk8E+pQnnI7d zR24@jv!aas#3BHc4OA2>E`^?vWmG&RL5YRH=5RTddc0S|9C&HB?V&sq-1E*aBW~jL z&GBSBho0zkOxPhrkYIwB(tW%=Jf5=W)x;pdqKkHiWC|GSB36M4!!fQMN8d|=MPUcd zcik9=sCaZL-lE_j*DD!ArY4^;Wz9kxQ8q|)GmySyv2b{dRS(}}JV>zQ6Yd4+muuJG z_S5`=V|y_@!bFi4@YXeMMwCD(;zVV<1p|R|BIvVw-0t(dxxzT2m9ac zJ=uNIdbE9rXDC&_-#hwh|J$P$AP%;lAN|?Ngl=+urUWP!P&zy9Ya8;m!8v zdr$X{e(bfr*gJYoXukm7?beI!gQLBjZ=Y@-v|fCB0LQ6a5b*?Mf&BU2^Dhoi*Y303 z=SO|ijd!ix@9@w%{A&B@Q?79PTQuWCC`rz@Yq9( z4~|^v@AnROd#&w*y+aU8<-a)CML zdJoHmgKPb?vG(3CKleR+9O*{ZU9v=bCYohhc$L1tb$!M)d3B%k#qEJepx{j5r`s}=ncL8h`^nWBy_AT{CsuR-AfNz!Fk4fESEN9ew+ z4mc_&^Y*B%uWt%&aaaXu?)I0P)uAi@9rV$oBt>Ey=-Ra z^6w1^EPNX)w_>$X@jz8J85j>#Ws|XSuPR?=m<6hZl-D1PkJm(Y-n$_^=SW#|H&`YM zdsw{~IhpXCDPW^Yp{!XV=I!ttYy2(UtKfM~gsrl^8b;8@Y`mg=G99tT^^={l3_$w^ zzY>>t5wZU&8{@qd)N4j2Wu(n07sA#jLCZp(WUC~ilQG8mx zv7o4?Y~EOB1wp6+zyToeTC+5kv^eLgsmmISZ_z_JA3Zj(`LR^ecf+h_Q!#J)GuSRUjBM0$$r&6G$wq-jf`eJgQ zs7ux;kfOawutAB`<~%;IK$^9oOKKbadb`P(z8VQS*^BG7jybz>+H+T{C3Krs!&caf zR?yf5-8!C!L!ef(7j%KZYE5>y@om*;vE&%lMD{OLSIwy)Z^5yCYQ!n7`nU&_xP=t5 z@!hUSL#(@McUL$s)o$OZt-F5Pt{uO=mGw(Z&Z$+gyWwOq-O;IE>=v`%`Ie*2QSv@| zO#g3p$=pt^ecb&|d%-v{z!GbrTzDl#RaC%smT4gt9d!cJD{_2KelOhbV0nS{?_$)> zi1DGjm1rsDV|3Am=lI?Y5;JB0kn4ZqXcUqWpCP4j_FKE&3y{8OfB+C*loWY}*Y4U0 zTS-W7-n~nVPT#`3ENN)*>Srs(0coW(^^r<_W4%GCn6^r+fy3P+VpHv#<4t?E_~-~gm+PHkm)U1iuZ_T%jr$)lx#ev z%TAXo;0s|%;zE|9y3Y1IK*nY(!xPXeRwSI&$W=X@a|IInYSE8wq_NchiaDUdK8Sk< z1~shfaDf$1&hdOKc8U1T50e6jbM{{ErG0(Y)8XNO&qm(@!s-wdI{XAiQq;EBiDPJ> z8?;ezZaV2~-L@EwViJep7AA>JFo^e_eJLYYA6w}hgsu+`nf+Iq97oBFXQd-4(P51s8{f2tB#efd^RI}33*X}aY+JSKpFztknC=wog;WE#JKTkyUV+!SuwhO za)#}wTX8)I+!?!Y;8cC@o)xV7&L-O;p!Uhon(MC`AgXQ2CZv~zSk}@aKBQW{crK6V z7C|cUTY5wHi`T7ymYzd`AVutM6utRMy120N9g|psm`&XJq_RaoU^p7}17Hf>38Bji zVXemyzzjO6!YK*_T~a!O1KcSKXG+*oi@yzwiN(KG+;U7f=NAQg2a||zo5qV9UN+FO zSK8@bbuB=DDpt6U3c5USJ=L{Y;9*ZsnqP%Y1wh3H!~OQg`uZDf$9;J$WAI;l6!w15 zdV9lcpv|^kn=9oEr%*u2Ce@Dlty*+(I(e`bwWR?tqj`ICUDbpGPHh#n15Y(wbML+N zbrmE1cydA}J@vs;G88xAdf}~wBogEBnnGQwP}p&{$=9P1?uS$_?2Y26x2v5B>K+bT z{48PYkoN}cW9S?z5xnR|+ePKFQ86FF_H0IreW4wr_e?X?=!kk>59uHMn9hkb?v~de zBq=`+VO1Ybd_KU2XWp0zxP+Ep&?9bk3oI#ols2p)GsEO^jS+RV@T|V7L5~0zVMK0L z)Q~Ev6RO1`Q&2XRC0p6pH<8_eT+#zRmc=YRKcQ6|{3@*L5nTW?$MOhpU*5%_cWf2k zYc0*+JE%GF#Qzt)E}qO^QEQ%>9lDoLo}rM$M91-^2TStt+2U7vji%>o()95ik7+Af zcG1$OS5iNjkBWu-5q0a;NMSJMtvGWoqzi*wT&Kfpa$o2ue~xYempveyjwt8u*P}D| zP%NQxfVbuZxz^Vb?i}OcwnW#vL=jGETBTI1G7Lc8@k#jCg8 zirTE(E+ynxYD)h!{-xBIB?5;PDvY1~tF6k4#&gpRJTW>R(U^{?7}nLfrhRGEBE@-9 zIc_hE6N;}1y=Ii#?V7~XF|97@=}!*TFRjRQcB^5cYW!md-A|6`z!_GYYc1rpeimil z4_h4EG>K%r3>RugZTQ)^Okl0mk=HsXIB$Y)Yo}zjH_|VzGgm%G1BzTBaj=UbMAI0~#?szCl>i5g0HWfLx z6+A5ZCnnD|2APV9xsu^U?k!F;2EI%MUQn+>S!|Fo^rYUXm}W~>%?3WFQtKM>F@9Oq z+wPyd)w1`*DO13Ca|Lp%0?m)vXnx$PV!RQENo9nY|-4rd(My+KRZ zcayG}iFE;0J*IghqBae#h6dP*DnV6ybjj~n?w!oVt*N(|P>xz8RDaeCVQ@P9gt$zn{LP6cRBC6Evq+MySVr#R3}H2I4A;HmJwW9I`A385LgY z!dPM-D^ttJSl}+I6VIy7(t^uG!3`={RpSf>xU`O}VVNm`xFEp+5Li^oa0~&$ZtFvw zD`vOdGE6btMHw7ofc!e6o&h)^e@sQwuy>dU%cYoIm+W4KsUNEwf5msZLciJCSkD=t z7W=XuJ3!1n(+GROijT|~E~{lpRh0QMqL-QdZyF?9CCp@oqpJ1Rr?l^^p&&wf^QK-A zeiY?CQq9+xb*sG@aX2u5kH;fcBHLzPQa78MW@ui5W+21iL3tX#%;t`K+{SD4}p5VR*mQSv4NV* z*jUz*FJPH%P)&H)7Uam397F9KSv}uaQ+JteVxS5%9Iz%k^c-d;W&Lc&J1C{SuYNX> zR4bsh9br*_LMv%DY68vWkRPmkBB||e9`t&OOLdJVW{7evALT36?E1)e9d0-4dJZ*% zaZP$|Ew|?cb(5Z3`%ijK=&EINlb*{&nKL`<_f)D4>;jvb?6%D|K3hj?&24>+_eM0X z`KCY&1zWM4HrXzkt=zT_+c;F#cyWJO67XGeRO}!B)hJY1cSD2)pT*XP$=JaBv$2t{kBsJ@lxDfJW`RgdaU$OEqUfB&=(Ro)o=-kJhSM zwN%G!;_qf2TUn7jqTMHF74@Bhmn-0Not^*TcWCX zLDg*lnH6ows>*it-LMCoJy6+0@m0H3)C;)^TJA+MFReQQFA1pb6pXOTi($!(5epo4 zICN4V*Gx&hsI}SxE#9@C@@DgvE!P^z=3}0-G%MV}37VFcrlq1uE7JiT(!@LK z($hpMta;AUb23qoE1bq6MH>cX1hWE(VR1)k{5qS7WJ={!Gpc`u-Uw!eZVrpP-i}}A zGZP;VPl`=iD_!R>ll*scdE3l&`sUEjKfy7htPsb#`5M zo3(NpFFbY$6VQtO6YvT~2tY1<%gtI*%hCtX8eyxBzGZXz?l$uIx8dkpq59eel+BTR z{{7qZts>2`(6q8NYcUV=Htg6uNry}rmR@r%>ElNFBN{x;2(ZrF7?vn*7G}9ekIkv>BaimxNv^mx^eTG-eI@#+F1vS)MEnw+_^xplEZv~YaB7*9@TBjq!bd%BmMa}eyH zy%Ly%;q4%lz7?FOd*FY1D7|A2g5MfWdSoDfORBWp6!(_~lY`j6{4Jr(4w*qPb{vo% zy1t`V^*nLor$kTS0cv#xLmGZDu@|SKYm|HYeRG7@(WmC(->dZsyo{$ma-iU2)R_K? z6qHhW?l;4tTl0$<#|gBVjM8(!NPbKwM?A~Z<$)K-wfAqRL|nhSSQh^S?UBz(Z)1K4J2V9tTrgzWY zF$ya*s*RpY5=yv#~Acrc`YJVrMK4)OipDC!tI;RS(aOWt)F#S-~1 z#)3>Rk=UAfU0loqlW>{sWEI{^ACNe}Q8e;+Wr81mu8a^@6;8OUN!ONg?QU6zU-(c& zns$jO0vM|>#Lv8rlnx>s_v)c1yxul&jIs4^|Ec4E!!ICmY zl{K*&CgYsA4W=|KBq>aI-_ELh+0Qkwf;%9%8kH7RC=3V>FU)5V^IrnZs5l<)5+wa2fgeS z%?AC04R~3^i)|H>9(sp6UJV2GGf(mUa#{)Pb?J;FcFV5I58gzic`NsJRk>)HDRAXZckhEFr(=G4L}NZQe-iM9H6mhUCui zc`5P21sQ}zXbF&1K6&Myw0_Y}w%(+B$z(wNJr1#mZ$wvP(MA?)HcFYHuh{f@B3YsR zf|9Y{l@1)kiA?rU^SuUCPjao{p*rfr7G#qwy7Fd3dxG^y)7>iJ%MN%)yH5k7)EqY% zvGOuGfDwF87O3&18-?+oB}OGFq~)FCru~^m95MgT5?1?|sZrlGpVqQWXH-&g!CjlX zYSk{CUgfS|j<-yvCcz5vO*@Z7U_Nk4okxumW4z?sYupJ?L%Lo_|>n>8q`aDbZK@myV(upPrg9?gWc2^_ODGS#%`l?32 zR*h`$g5$rpuIX=l_aY5!cK0Imt8;&SNOZ0X#VVK5M)&OIY&?h`d)2q{`n#3t2KGn& zUABfWHVZ*)$?C&53t)Kx9bI<10J)5&unOI;auyIsbf)~siaCk4y<>wy2isScrYFHQrMxmrd6~KXV*15w3UwN-E4ivimE$hC_`UOP%1qxCqh;XV*Y!J}-pC&icYw>k?&muTnSUJ{p4MXf~m|3u!`YY2lfW7 zRuK0YNh+}{Eh3Uqw%2N~R;%ddWgLmZ|7#|oV*NSZJpRQg#f$TOCVVjx`M){;?M{+Q zE7$ARjv}cmU)}j^$(gr1Soe#<=pv(XonqSUl4X^+U9sbL!@k+_I))GC1+)kDP5oJ> ze=JTjR7rO$?~GEMXan`8O4Rp1bM0YcDbl5RE)^slM20N+`tPIV<+*i^9baAFEI4h+ z$B$;i)A95XSutiL%sZo%7pL0v#dmvcV{`rb&VJW!X6=nle2)2{t+0et%73HB2)^CU zhS&d!MXSm=SMDd)G5qY7$<8)0cdp7c)D;2sVYRuX)ULG2NtiQ;SP!XwoL+rCxtZmz zU_!+`Rm7*$=Qq#-cCf!SGeXJEF=AwkAPoFZRMRiD-gEICKQ_|5s5UE$cPsJl8d}d0 z24ilgfpw&uTg)aXgv)Y}ayeQI@c{na_v!-w1o_N3u?9aA-9S~~b2tZ-TCatJa7~DSQx%*+N9-^iXvT9m) z4ZBBO@2uz6b>Esc-ydWpI^wx66Sf;nTze6G4+=i44IxjX`Cm8|yt3NPVb)@TV(qtG z7NE+f6?_(D&P>P}F%GtWc2 zxbbGH%$-Ov@IO}+Eens^FZNoOV##J@OnqPwFM_M#rP@Sv-eTiHEM;nvG~;84J7_~p zzoyC<2Ek_^Aq`1iK+ymcap~Md!|G`NONOZq?0>h(Fq@Tl1mjtsl-cYm;1I^Ea$(0bX1s@aqYE=7jO00`*i^;xLL_* zNX+ZDxuWSTd9j3MV^1O@UYOJI(SB&aduEs@;a8C%1@u`sJ*Da|x}@jc0y-oIZ>`BQ z))&`rY4xY?B~ao`ttHN6r^8r)1UM0!o`!UZ9@F<|jAxm~v#i6jS)^w(P0wZxp0|ti zB=KO5RO*KX{F9GcAAZ>XK=**2Kfv3>8^qV~5f!Zo8zO_9tcInL6;fe5mhT^Ag3Wod zqDs_S^Mq}eoU|RkEq)v&q^(P~Y0G)5!KNuUU)F};V;LojwY8#v>%z_q|I;!+X?Oob z@R2Og;y1GMhi^6&Ot7nyqTr#gGknKKxA&{@h1xpNe5rA}n9#=Bnt&VBz-p%p0BWWxbrgjVmQIr+JkYDr?k03Y;Lr<@x9qN4fgpYrqK>6)B18 zYgY@0;xiV1V>ziuT!?tFc$)2eErfu$3PSW?zsED9N+Op4Ej|G z+SeUjo$;;nG#p=aOF)N<1!gaL0=m)?^2NW}N z#LI%3OivsP2lNyE-(U^U(bcf9gwgg=m#3FY{*KB{O2Qa!y;AS!X3Ti!T!3D7x_GTz z$*O$fh*<9rmlqM!5dTWHKU}>pTmwHi(!^#RjHqd{ArxAGd2gCfL>2V9>S(no4<|~l zvc~bE`fM$3q3)j}!Rg2s20I}L zRiwi@=d~m&AZu-uM4=#zPdMORxmQ~BdxIOpeV(jAkL#^$vDB^2K<9u;w^vqwIA0O3KqE$K$HTpJeC_)Uubpc-vOTk&(p zehyF1Y;n&DOiS+D03(H)kwc-;#~1)^(Ai^i9}aYBa+8boE0yPiYO0*291#<|-;8?| zRg0ppn`#RySOCEDx;4YIa4;Gd=hwwJZ!l6b3<)M4hjyDGH?{}w@Oh@l>6;R5; zH^f7UND~sdY&x8#T*CJe8TM8Cv4SvRLFk{xMrUEP;(*sA&-x>?r~y68CB1TGuEY{+ zq?EwoT~#0HFuBclVJ&A9giQ@r23L-C)r?V?O5&r}b;@n{oQdW*U9ROEtb)NMxgZh4 zTD4fB4zA!fTP1a7~G1o_>|P0h>+^FB=`3+ zyZkZ)puX)LN7!H({F(_Uocd2`yRTqH44yzTt7PYMrO|_($vG&O@ zgX7%fe;KotlGI=PbdxVutzx;tXFSUTE){npuG*^dRFeCoMJ^$H(tk__VKR|K8h05! z1op>k4F2qCEN=S!yZ{UH#X^>$!7&Yh5wi_=DGG}-8HPiEs=S-mb28~a8RdMYGxjOb z9Au%^EhPN2n9@KR1-EvxX&L(1JV_S=VYLr14*3blZzhKbdX9X2mPVnF$WtntAp^qU z-;`jsyCTs|6%Xe{#0TlvhIFvcgIJ8?PGR?NC0idy-G;8XvmzhM{1=ni1*|zaoFG@a z1mZog8CWv~8u>Bn#xMDj!WlI>)$`5uc&k|D+PT@H4CnQ9SuQU)z8>Y$rv#wrpdgVM z)e*w(T(bg_!$#h~X#-Jvyj`m4#+kxHEvnu1bAE8&{Y#HDoqhhX3tg_i@rt~Qyx=}p zFYmCNCkqN8O=&LX9Nd9cqL3DGf#4Cp{Tpl0)YIK5ZMzoqE2m$#^lK`=bIy|Ax4RnK z7~Zo}g(ZfTOKY|Rdl%)DNw>EFMHw219=DfW2_`RMAG@TYRJ$P>aMW#mmQrDFW()LK zR}<}KNDrqWJlHU}6(zhp4g18+FdixJ7+JMB#hD2|%+)xl;tZ4tGs3+JnSKlSh(DtP zNQn&xHti>fI z5yvTqjEPbIs+;b^^d*qdayjp{+b>=cWI9`1wvmeeC^TR3h1ckUPAB<#Hku|h&|FgH zr#Be*KzcrLj#*Ul4~|FM{ve>t07(a2gWZG@Te<72)c+)w!y=OO&}pV77;;n&$*Ug0O!YqvP5 zmcou4FYC3WM&~V`JOR(=6P&Jn2|i#m49hFNG73?!90bdM0JcydklOyEe)_z%ch>me zdGSvD`C#vPdh&emPNUrvj2ZcxX!Gmm&vt2tEnD&u?wVXSX!C+53tp*Q=2Kal3Z=`N z`2^er5&`-Vqm6v02q=2W*nxX~G9KVABgYv;I#Jn+)iSR+Ze7opE3r5w<<8_VfhA0xM`5BimJoFx zg^1Zy!gNr=gxy9uGU1THJOSMXk4k}{gwV#EMPfB)M`*@o&JJ?oTCu$)MYePSNHK@w z=4{6}A&Y5>b#j^04@T%QN#s%Z@GHtYk(3UzRShSI9Tyye7WTVi&UHpq93Cpy9Sta7 z4c<{;%TooO4fyKGX1QvQV$m7aB2X;alu}a4JxTy(&(;RSrTPvVUj_)tL7PKWrZb)e z03_GK!i5Q|8$nSSjA_`3ZqR@ekAtg_w#=shrhN#-NpH`9!w?DKGeo8=?ErL5krV<} zZ`mZfp4Vm1s+mwZ8ceW@P<%wbhtH^UWoTmCoMZqPU3Z@HW6H_2q0en6Mbp9powAq! zBEtTR+D{&!L<_+IBqYK2&MVV!bmSx+>uk}v@yKi`=-`6FM19I~V4)3)z-C?|b`kv_-|0zBlbB0*4Z zYHyi{VYzaqI|mmT`mquxq0{4DHYwJ^Qbwsv8`C(&M82rZOxHZ5+u~zG@l1EaT7)kd zwV|il6-p8$1-0ut;)CV}d_om^O1+Cc84ciPUcT~MLLh6k1_1MpVbn3IP&tk$VlaMi zN$$o`i~*%d`f|%dd-?YOTW_d`^vJTQ52Y=b92xBPu`XHZR)u|z`H5`$^=TJ|;U;YL z?^CK=w zjmKjtNorZDKOVOVe<1<_UmrJqTZiZEVx7;RU+l3CB&SWRzwwCqfTv2asX)sXRT_|3 zyxBtCLhE&KE2p~;d5$;v*eNcsDeLaOiDyH=CIB~_-2nqkKYLNbYc1A)sTh4Z)BH|| zGZ9K~Y)is&PEyjI*A_(}K?^iDsXP2DUn1DD*s>gR{JcPi(+&hC~;64{HQzlB1lOlB==s zW?-|J+V1g@pg`I%k*xIo7z;e%JQNB>-P=gImVM+Y87^mYD=Bu9Z^Ojkn?^#G-r~dH zImFnFr0G0MZ4MC&uI_m}wZfI-F;QNKjWrxtEjCgT=D9J&@Q{g6&g^id^t940Z-&zs zs)OIWZ<8y9%^a|NlLL)p#{zU{?YspYHNIwwmZYa?>41t$M9pp9^zG-p&JwIL7-`taMI*Ye7^r1Hv9np| zhRC1mD3r3P6!kJ^dE=lWHy6AT!vKKjB z=3+TAc7R71J$G&8)PJtEQ z=%I!GhS~i0DeWTu~w$f zZQncq>19d%qBqu?Gr&*@Y}E@HH)s_(1Ou4~Vl=_LlC&R6KnkDWM5Er^cVD~RojLhmO;;K;olBBqt1K5R_I zbx1}FH6yW0HQEK4zkOzqpgn_ojfkTcr?=Kv!4l>W8ODy`1l%=@+vM*-fGZo~TSbhm z%1}IFY_=^Vd_c|gjwIJ4tsu(AqPvde%JADWR}svwx{xzx@XT>MnUZ|JU+rnBI73ky z@Z}P5!mmS#DzolT)n2m!;7O)^+HJ)r_R#|Ig9PZp&jqr>pr+-UV21xMu#1A_=Ys865(;xR(b=dIg_EV+c zSmwZk&`t7#Q21U%JumE9&tadQc#D@}gJ1*hCJ{GGc#%o1B%?!@nEAB77}uMD&o4W4 zMVIPPma~=^JlPCMKDB6wJ{MUkQAJ?AFJwhD-4))3e-`D%UE8VsHsoZGjJR<^QjLWa?dG7EVq;Qw$I z5Yd{_EbxKZ@}g{>3p@|)5YoX-qgOiLwvD|KnsA^uD<%fcXy=_K{K(ARfVxm%-e_fj z@pdqLHDvvu1LmmZ@#$T5ZmVEd{jPfHE?IB(d1<%X<-XxS9t5y!F%ft?cSY5em`~h( zLC*yYSALOT|G~(I1f{UI_-xRjP+NW91kxUmdH8zs;(eX_So=cYCo}~3L0;Z9Yx0%3 z-FZ6F;Wv!Ib0aYzaieU;(3$tVatARZoIKGPseMAij`!4qtK8DF9Iu5fLm zv3hXh@=iwskHHN?DkX5k#qFr!_d0Ebx#2~LYzbA;1T^;!kOZYsopcOzm>6yeft@ky z8VvjyHS6L;OJ-?&MQN!SqYS?zJId5Y@EWgHO>?Z}W91Ll0tucStcS(xFmiXB!_8tt z`@8U?Am_PiBNpU0d>LsRF6kx&%xh|i`s>y9IuY*fXELlp)!V&3eL+@g^UUtX_Nxm6 zx1aG~?s&-3T60grz|f_>PnaMxOB9H5LZ5o8KOgb!n2ubS>BwhlNo%?Eeq1Qa6=&S{ z9~~~(HbOFuPgEVZ&5Onq936dmjYQNhzG~G=glgY)bkZ%CR~D2Y)@LS>Eqi!Ds~$S1 z&N3m?S^9a{Ge~3>SPLKKMF~G@#lhr&6!@5oLQNrLnp%u!?OdwAzL*|*0NXD;YL4A{!6f-b!?|Ne@7ol8C>&&E_|9I1X z5rW0dW`f>s{M+GrLhvA3dKfc-ZJqj_$>sB0Hbk|rzOB%Wu}aJh6lcn_<$x*EGgQ|Y zsxu8f>vDAVY_z`Y98S_xxi2TBW~>$*46j^#feaL6w)q9`zm}30!6@~m;HOQfw=IDb@c00TMis;R_Hgs{``qM(qZ>Fbxf zvXKTNK!n*2y2|dBLW+kNzOJ)jWq0wn3X&Djg#3G|R(ZWW#n&gXkThEdg+%_ufkKkZ z0-tRTId8Fj3H(o7%jdynA+$)!`jMmkp|?_H=sIiWJUMpBcZrPH4M*S?TA6HmTgPJt z2Gjm#V0Vlb++@}v3w|!~tE+(PUWT*%(G)Q`kf>}^`gYCxDJa+Q28Rmq^#-;t~8w{I!&o?Nyq3>WR3v_O# zshaSVZ@O34Tgb$GQn-k@hJ5p}gADP^snN{)~;mRt&{d@8z&y= zL`RnX2l*Yqd-EGNz8171#_$^gS-mZc(1TC4FhB%x_{2i_g?C8csIKhk}b-5}v zT1xfk&uN4D1H^6eRiZHk#+O&O*wOY7Aqw!cB0FVDq&M0FJW9bQkjr*bkUV!bqsvZgIkb(5`$7mjFWHkG}br3UnrpYI zwqP3@6I(_nkg=JGJ>yeh*xw8L9g9^E!vX*$F987D{}%q^SOyEb8eEOZ7^dU7hv08q z&w>^9PR2BkT$@K>dUtXnbFND6{l$Ofc$dtjk?jZ1s%#$$ued`ltx^Saz5e61`zN8xUj*{IBd@E!g{AHtWq z(egiE1YxiH;?&+%&Y4W{XFVh{Ih_dKEd#4htKT%mJ)7+{TM~u62Q3{x<3n&fBjJ<8M7$Y`lJJHmV$0Bu8%~g zF{91&Wk2>H-Kn2#hE??dX~a9CWIrt{6<(k&kN*Pf5Xz61HR#|rYahj9m;$Gi1p~6u z+OQl)DDLg^@0bbJSwu<|2;Rw+zVC+;CDGf~Ak)Oo&?bY{o8DE!1G|hRUl%{4C!v!j zRrzL#mpiSLsoadmaZ^8vR(=n2Oq)It02azJ=Rcs)BWq-Me|L9qKQjszEYS}cKI}d{ z!w}QJna7+8AtR)p@|zsKaoI;Fz^|uT#YF7iaD~Uo*IKWb0T9i!Pj!*Fgps5J+Elu* zfpRNMsh$VN27X=Dpoz{s7CjrH<>d)9-RG+^l?T;P94zS<=skPvkX@96R!i6^(Gdp2 zn$`AxGFW3%AgaYJJu{({%b9|Uc@qdwx1D(&sW9}Jvl|Frkhd-l>C)_yq0#UYrW|5&uPxFXI6F&{4?Cvw1;*Z|W5envAu*kw8b5VbUhdOkt6-gU~U5jkp|Yhi|GI*az1bfcvs>t6V)C z>FbtdyV}Zh@W^Ps{?08|5w3xO+du^_^hQ?e^?nc z*^Rws=ohekK5S56+@f~dMAbBEAJenMX=4lTI6E!9IWWmP>Por2h6lW{GU;ssJtHZ( zOi4r*nvU%XJ#qYR@fA3iBIYf^uHF+H-(z@C7+5{H(K?U!gtN zNUugiFamA3*+%_P%PhmDP!K1J6m}hQr}tXk*(`Cmx2=FLZ?O?pHYC{YKgzo9wW61) zmVeckhaXr(xePuRMD@%NjDr4-x+YF4yDua(aE{9WE;T7*T3A?Y;%O?7*TtoM(}kpr z8uzZSgNZ&ERaCD${7~VJ+1GvSJr9;1lXKTDWlTrmH;cz>#5{WCQwz#;(ZYj=$S2Xk z(?I2m#Cy)8gR9N}h&viOp3kmJ@U}L#56skF--QGRf?z!ia3&lCGo3{{i-_Fsa0cWOPhG803lM5cGEBw^(Yz6(l^CMd zG(0WBSv`JG-z=MB>Em!1=tCd%kjly9gfy+6R8cg<6Yh-yDK!n6+5%mD(Xz}lp%UBW z9spma*D@{a;ozcY%@7aib4{Lfs8{kqGVP%Ep`n*T!S{CPDS4gNU9;F1@8rC4_*V0Q zOXf6Pg0VhZ%uBVzW@)705Pi0_rvY@2i``$LDoiIoy^w;v4M)j(QNtIW)1S-Q_EHWEnOCC!E$YR`xoUQeB7TEDm$~e{ zbsp>6OBZ};SJ>Jk;{L8x6XR$pYzJBg@0dP5J3&c9sw>KJa&p5TkmT_EYbgagxLg^; zK62VABvuFO%|5m75FMNIPu#cCw{|WFen?_eknHc~Onp}zWvH89>o8yHF1#EZk;6Ca zVkBy(UCr^8WBZJ$sjI&wJMX3>ay0=Br8<_wPwh#0pgb{eF)bmKagnNO!NBJcro!ez zl!N>Vv*<$<9yw#zVYvLfW#$dn#UeLq=3aTPcfNC4^~%|Z<(ZwDw%&8=5p0khMWx9P z8AGaDiay7t8?CCWAqx1a{QVAZky|%wW;@2UNJd%l47B2^L2&brO=y0%RGq2VS~Y(R=UOJtWmg z+o2TpR)T1UwwXWD?iyGxpNMWTDxifcKGt zNdIaD6~5zx6D1YG(OCie?l8>7Grnw8{Gp9V4@&WX`u=@Ju&KcmgBkV15$BVv_^$@} zg{-hQd23^3U~gjgyBdN2U99{jU4~#-J&7N`{kD@o?*Ec5e;xLuOU&)xTJaf!9Epvr z4D9UqNhRMJn3;(F6g;E?e2kAj3H<*xL;Ej;1L$7@i6kJHGU6EkfC2{q5d5`LCeEt@CCc;Nd06{3;Nsiat!R5O<^7IUCChNV@C!6P+oY4_tcv!JG$ea4tbg^O|2 zZUlnxE92?~SaLJviZYt?ie;dsfT|tnBG}xGCes;RIjfi54No7xlD}#qaH=ayB?A=_ zRBT8inNzSTpvPB||Y3jYVzjH^WKG1~ouB^ROdd*DM7o6aw1w`w#Tr}ua@v#7QI$eUxOLmx0`3D9$BX8+b>+r;^N zDnyBmr_tuiIDi8I0yAnC&2+>iGkOnm47zJN#I8CmE8>FPw==^>_?~$5k}Z>^p?@*o zIw4yZ$%`P3Rdh5>o$ei)A?P;c0w<)X!FPoG2s%c<*J#vD9r=qw4I}|PEukcrg4PAl zWWfP>P*omvb!4IE%={XfcOdp*+bBNYnba0v@#4}hEYAtz$nc_t-J+Pm-F2W{CN+zI zMqxcM-mh&y{&5x23;SL)k#8*V#oh4>!&aM}wnqhHT>h^LT+-1WXDB!PXoHmP3a8S6 z+x0?}wF`#~+c@EO1`8f}n)b_lVCd0~h9Linmac!FU$}yw#&+sq#zoS$e}-uI9x(lF z5?6^ZCI;E25V9WKYO3G7VuX;ZX>|~$kE8kit~MI`VDrOM%l|3$BQtc^n;u)RBoF|2 z@ynJh^;=VBFaw$Tg$q6h8sPU5EpCOEJ40|5?L`O4OhiS;zL1mJPP%h}$tma!FQpo6 zKwHYgDW(YF`J^MY?76en;CDK8AFt=$mH~D@_0wjVUIoBV0Mz6Cn4w4DxYVQLq&Sr0 z(UlgrNybCgATk)E(`7t4bE@td?Noywq%SBY0%4;=U2b*D<_0J2YG73Sg>7n`XUCQc zOIn4^#$dyn0%)xWr{97_>x4yyx+(BDbl#qOUDhxY_}?4(&!5jw+(ZA9vsBUDbloG@ z$Vbl4AFYjnk>z8CU~qnG*e2`ugz}rkb?M*X;sxKr*toSu*6AS6i2`8jWiV30KXeSdFrjnU~9HC;LER({AS07`#qk~Ux7S1f3kmp{I{b(_!H!}>gzp1KY>_*41Y=C z`rXf}Z%X}|0=gsYE1qB=Aa)8Gfd8lW-zWtA%e%!p2NPQtJwpd;V=I%#;qI@vJfS_= z|HTFQPqg2-+(!Wa z6Y9zS1@+&!;QoV)SK@!5{_2;1#me62CzPW0Px}+<|LgSs&Z_=@K|S&NO#=Kc*eCe^ z#SrZu3|}PuhvB0v_!UOl^-oGqf%^;NXTbg`9{x^E`j;3_oF1jb|AKph{Wsh{GyLD- zFjId;>Cb%sE3lODpWL48zrp^QTK^6Pmj?WMqWzWgVxk|v=bR_2APoim*o*-PkFPI~ M0Km?p3jpB%0J!G%ssI20 diff --git a/dist/ImageCrop.mpk b/dist/ImageCrop.mpk deleted file mode 100644 index 53160883bd32f1971f0ef649e831ba1a9a035486..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 165565 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 dos^^| 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 E1>3eHuK)l5 diff --git a/package.json b/package.json deleted file mode 100644 index 1ef8435..0000000 --- a/package.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "name": "Cropper", - "version": "1.2.0", - "description": "", - "license": "", - "author": "", - "private": true, - "dependencies": {}, - "devDependencies": { - "del": "^2.2.2", - "gulp": "^3.9.1", - "gulp-if": "^2.0.1", - "gulp-intercept": "^0.1.0", - "gulp-json-transform": "^0.4.2", - "gulp-newer": "^1.3.0", - "gulp-util": "^3.0.7", - "gulp-zip": "^3.2.0", - "gulp-jsvalidate": "^3.0.0", - "widgetbuilder-gulp-helper": "https://github.com/JelteMX/widgetbuilder-gulp-helper/archive/1.0.1.tar.gz", - "yargs": "^6.0.0" - }, - "engines": { - "node": ">=5" - }, - "generatorVersion": "2.0.4", - "paths": { - "testProjectFolder": "./test/", - "testProjectFileName": "Test.mpr" - }, - "scripts": { - "build": "node ./node_modules/gulp/bin/gulp build", - "version": "node ./node_modules/gulp/bin/gulp version", - "icon": "node ./node_modules/gulp/bin/gulp icon", - "folders": "node ./node_modules/gulp/bin/gulp folders", - "modeler": "node ./node_modules/gulp/bin/gulp modeler" - } -} \ No newline at end of file diff --git a/src/cropper/cropper.xml b/src/cropper/cropper.xml deleted file mode 100644 index 9f59069..0000000 --- a/src/cropper/cropper.xml +++ /dev/null @@ -1,55 +0,0 @@ - - - Image Cropper - Image cropper. - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAFo9M/3AAAAGXRFWHRTb2Z0d2Fy - ZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAnJJREFUeNpi/P//PwMIMIGI4hV3/wME - ECNMhKVk9f3/jy4fYwAIILDIuruf/zMxszLcPHOcASzw7NkzsLpPzBIMAAEE1wMD - LF++/vi/5+VvBmYWDobJPRs/MvHycDIEKvMx+MmzAeX/Q+x7+vQpWPm/fwwMAAEE - NuPu/fv/xMUkGf+BBBkYwRL/gKrj6zZ/YAGpFAZK7n0JEvrP8Ofvf4ZQNV6GlqVb - GH7/ZWAEKxAE2gMzFgau3P2B8CMIxLUd/SgtLQ2mQfzXL/995GNnWAAQQBj+QAdM - kVVrXn7+8uX/Z6D/PgDx+y8//7/5/PP/y/efwDqZnrz9y96/8TDDvlf/GA68+s8g - xMvBIMrHwcDAyIZwAxMjiAR57zfc6H///0KCDkTURnsxFK+6BxIFCxYtvwMMNIj7 - Wf4hhRxYEsiecAIUqFBHgoMNDSRZSwJVMEJMkBRgmQX0f6lz9iqw//dODeMHsdlZ - GRi29ocyAAQYOBxialb3/v3DGP3u21+OLz+xBAaaJZzsDAx8nAzz13WHF4I98frT - v+TVrd782f2LGQxkBRjYmf8x/P0PVMXEDw4BMAYSzEBcG+HC8Orjd4bomi2JQK0Q - A76BbGViYdDR0mDQtXIAuh81drxlmMH01id/GTpW72P4Cw6t/4hgBAFgImF49voe - g+gjDYbf//6Aw/nTz5cMv/7KMDTvegJW8+TuNYbP758z/EfyEgvMi6DALPf3hJrM - DMWycIWgoP/0WYjh8Qt2BmT3gQ34D9KNP00xPL56HEy/enAVqNYLHntgA/g5mT7+ - +/OdH58B0wq8oSwfhj9/fjKwszKCrSSYnAkBAI6BFI36e9AtAAAAAElFTkSuQmCC - - - - - Max width - Appearance - The maximum width that the crop screen will stretch to. USe 0 for no maximum width. - - - Max height - Appearance - The maximum height that the crop screen will stretch to. USe 0 for no maximum height. - - - Aspect Ratio - Crop selection - The aspect ratio to enforce on the selection box. - - - - - - - Start height - Crop selection - The height the crop selection box will start off at. - - - Start width - Crop selection - The width the crop selection box will start off at. - - - \ No newline at end of file diff --git a/src/cropper/lib/jquery_bundle.js b/src/cropper/lib/jquery_bundle.js deleted file mode 100644 index 448ccec..0000000 --- a/src/cropper/lib/jquery_bundle.js +++ /dev/null @@ -1,12508 +0,0 @@ -/*! - * jQuery JavaScript Library v1.11.3 - * http://jquery.com/ - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * - * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2015-04-28T16:19Z - */ - -(function(global, factory) { - - if (typeof module === "object" && typeof module.exports === "object") { - // For CommonJS and CommonJS-like environments where a proper window is present, - // execute the factory and get jQuery - // For environments that do not inherently posses a window with a document - // (such as Node.js), expose a jQuery-making factory as module.exports - // This accentuates the need for the creation of a real window - // e.g. var jQuery = require("jquery")(window); - // See ticket #14549 for more info - module.exports = global.document ? factory(global, true) : function(w) { - if (!w.document) { - throw new Error("jQuery requires a window with a document"); - } - return factory(w); - }; - } else { - factory(global); - } - - // Pass this if window is not defined yet -}(typeof window !== "undefined" ? window : this, function(window, noGlobal) { - - // Can't do this because several apps including ASP.NET trace - // the stack via arguments.caller.callee and Firefox dies if - // you try to trace through "use strict" call chains. (#13335) - // Support: Firefox 18+ - // - - var deletedIds = []; - - var slice = deletedIds.slice; - - var concat = deletedIds.concat; - - var push = deletedIds.push; - - var indexOf = deletedIds.indexOf; - - var class2type = {}; - - var toString = class2type.toString; - - var hasOwn = class2type.hasOwnProperty; - - var support = {}; - - - - var - version = "1.11.3", - - // Define a local copy of jQuery - jQuery = function(selector, context) { - // The jQuery object is actually just the init constructor 'enhanced' - // Need init if jQuery is called (just allow error to be thrown if not included) - return new jQuery.fn.init(selector, context); - }, - - // Support: Android<4.1, IE<9 - // Make sure we trim BOM and NBSP - rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, - - // Matches dashed string for camelizing - rmsPrefix = /^-ms-/, - rdashAlpha = /-([\da-z])/gi, - - // Used by jQuery.camelCase as callback to replace() - fcamelCase = function(all, letter) { - return letter.toUpperCase(); - }; - - jQuery.fn = jQuery.prototype = { - // The current version of jQuery being used - jquery: version, - - constructor: jQuery, - - // Start with an empty selector - selector: "", - - // The default length of a jQuery object is 0 - length: 0, - - toArray: function() { - return slice.call(this); - }, - - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function(num) { - return num != null ? - - // Return just the one element from the set - (num < 0 ? this[num + this.length] : this[num]) : - - // Return all the elements in a clean array - slice.call(this); - }, - - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function(elems) { - - // Build a new jQuery matched element set - var ret = jQuery.merge(this.constructor(), elems); - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - ret.context = this.context; - - // Return the newly-formed element set - return ret; - }, - - // Execute a callback for every element in the matched set. - // (You can seed the arguments with an array of args, but this is - // only used internally.) - each: function(callback, args) { - return jQuery.each(this, callback, args); - }, - - map: function(callback) { - return this.pushStack(jQuery.map(this, function(elem, i) { - return callback.call(elem, i, elem); - })); - }, - - slice: function() { - return this.pushStack(slice.apply(this, arguments)); - }, - - first: function() { - return this.eq(0); - }, - - last: function() { - return this.eq(-1); - }, - - eq: function(i) { - var len = this.length, - j = +i + (i < 0 ? len : 0); - return this.pushStack(j >= 0 && j < len ? [this[j]] : []); - }, - - end: function() { - return this.prevObject || this.constructor(null); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: push, - sort: deletedIds.sort, - splice: deletedIds.splice - }; - - jQuery.extend = jQuery.fn.extend = function() { - var src, copyIsArray, copy, name, options, clone, - target = arguments[0] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if (typeof target === "boolean") { - deep = target; - - // skip the boolean and the target - target = arguments[i] || {}; - i++; - } - - // Handle case when target is a string or something (possible in deep copy) - if (typeof target !== "object" && !jQuery.isFunction(target)) { - target = {}; - } - - // extend jQuery itself if only one argument is passed - if (i === length) { - target = this; - i--; - } - - for (; i < length; i++) { - // Only deal with non-null/undefined values - if ((options = arguments[i]) != null) { - // Extend the base object - for (name in options) { - src = target[name]; - copy = options[name]; - - // Prevent never-ending loop - if (target === copy) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if (deep && copy && (jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)))) { - if (copyIsArray) { - copyIsArray = false; - clone = src && jQuery.isArray(src) ? src : []; - - } else { - clone = src && jQuery.isPlainObject(src) ? src : {}; - } - - // Never move original objects, clone them - target[name] = jQuery.extend(deep, clone, copy); - - // Don't bring in undefined values - } else if (copy !== undefined) { - target[name] = copy; - } - } - } - } - - // Return the modified object - return target; - }; - - jQuery.extend({ - // Unique for each copy of jQuery on the page - expando: "jQuery" + (version + Math.random()).replace(/\D/g, ""), - - // Assume jQuery is ready without the ready module - isReady: true, - - error: function(msg) { - throw new Error(msg); - }, - - noop: function() {}, - - // See test/unit/core.js for details concerning isFunction. - // Since version 1.3, DOM methods and functions like alert - // aren't supported. They return false on IE (#2968). - isFunction: function(obj) { - return jQuery.type(obj) === "function"; - }, - - isArray: Array.isArray || function(obj) { - return jQuery.type(obj) === "array"; - }, - - isWindow: function(obj) { - /* jshint eqeqeq: false */ - return obj != null && obj == obj.window; - }, - - isNumeric: function(obj) { - // parseFloat NaNs numeric-cast false positives (null|true|false|"") - // ...but misinterprets leading-number strings, particularly hex literals ("0x...") - // subtraction forces infinities to NaN - // adding 1 corrects loss of precision from parseFloat (#15100) - return !jQuery.isArray(obj) && (obj - parseFloat(obj) + 1) >= 0; - }, - - isEmptyObject: function(obj) { - var name; - for (name in obj) { - return false; - } - return true; - }, - - isPlainObject: function(obj) { - var key; - - // Must be an Object. - // Because of IE, we also have to check the presence of the constructor property. - // Make sure that DOM nodes and window objects don't pass through, as well - if (!obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow(obj)) { - return false; - } - - try { - // Not own constructor property must be Object - if (obj.constructor && !hasOwn.call(obj, "constructor") && !hasOwn.call(obj.constructor.prototype, "isPrototypeOf")) { - return false; - } - } catch (e) { - // IE8,9 Will throw exceptions on certain host objects #9897 - return false; - } - - // Support: IE<9 - // Handle iteration over inherited properties before own properties. - if (support.ownLast) { - for (key in obj) { - return hasOwn.call(obj, key); - } - } - - // Own properties are enumerated firstly, so to speed up, - // if last one is own, then all properties are own. - for (key in obj) {} - - return key === undefined || hasOwn.call(obj, key); - }, - - type: function(obj) { - if (obj == null) { - return obj + ""; - } - return typeof obj === "object" || typeof obj === "function" ? class2type[toString.call(obj)] || "object" : typeof obj; - }, - - // Evaluates a script in a global context - // Workarounds based on findings by Jim Driscoll - // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context - globalEval: function(data) { - if (data && jQuery.trim(data)) { - // We use execScript on Internet Explorer - // We use an anonymous function so that context is window - // rather than jQuery in Firefox - (window.execScript || function(data) { - window["eval"].call(window, data); - })(data); - } - }, - - // Convert dashed to camelCase; used by the css and data modules - // Microsoft forgot to hump their vendor prefix (#9572) - camelCase: function(string) { - return string.replace(rmsPrefix, "ms-").replace(rdashAlpha, fcamelCase); - }, - - nodeName: function(elem, name) { - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); - }, - - // args is for internal usage only - each: function(obj, callback, args) { - var value, - i = 0, - length = obj.length, - isArray = isArraylike(obj); - - if (args) { - if (isArray) { - for (; i < length; i++) { - value = callback.apply(obj[i], args); - - if (value === false) { - break; - } - } - } else { - for (i in obj) { - value = callback.apply(obj[i], args); - - if (value === false) { - break; - } - } - } - - // A special, fast, case for the most common use of each - } else { - if (isArray) { - for (; i < length; i++) { - value = callback.call(obj[i], i, obj[i]); - - if (value === false) { - break; - } - } - } else { - for (i in obj) { - value = callback.call(obj[i], i, obj[i]); - - if (value === false) { - break; - } - } - } - } - - return obj; - }, - - // Support: Android<4.1, IE<9 - trim: function(text) { - return text == null ? "" : (text + "").replace(rtrim, ""); - }, - - // results is for internal usage only - makeArray: function(arr, results) { - var ret = results || []; - - if (arr != null) { - if (isArraylike(Object(arr))) { - jQuery.merge(ret, - typeof arr === "string" ? [arr] : arr); - } else { - push.call(ret, arr); - } - } - - return ret; - }, - - inArray: function(elem, arr, i) { - var len; - - if (arr) { - if (indexOf) { - return indexOf.call(arr, elem, i); - } - - len = arr.length; - i = i ? i < 0 ? Math.max(0, len + i) : i : 0; - - for (; i < len; i++) { - // Skip accessing in sparse arrays - if (i in arr && arr[i] === elem) { - return i; - } - } - } - - return -1; - }, - - merge: function(first, second) { - var len = +second.length, - j = 0, - i = first.length; - - while (j < len) { - first[i++] = second[j++]; - } - - // Support: IE<9 - // Workaround casting of .length to NaN on otherwise arraylike objects (e.g., NodeLists) - if (len !== len) { - while (second[j] !== undefined) { - first[i++] = second[j++]; - } - } - - first.length = i; - - return first; - }, - - grep: function(elems, callback, invert) { - var callbackInverse, - matches = [], - i = 0, - length = elems.length, - callbackExpect = !invert; - - // Go through the array, only saving the items - // that pass the validator function - for (; i < length; i++) { - callbackInverse = !callback(elems[i], i); - if (callbackInverse !== callbackExpect) { - matches.push(elems[i]); - } - } - - return matches; - }, - - // arg is for internal usage only - map: function(elems, callback, arg) { - var value, - i = 0, - length = elems.length, - isArray = isArraylike(elems), - ret = []; - - // Go through the array, translating each of the items to their new values - if (isArray) { - for (; i < length; i++) { - value = callback(elems[i], i, arg); - - if (value != null) { - ret.push(value); - } - } - - // Go through every key on the object, - } else { - for (i in elems) { - value = callback(elems[i], i, arg); - - if (value != null) { - ret.push(value); - } - } - } - - // Flatten any nested arrays - return concat.apply([], ret); - }, - - // A global GUID counter for objects - guid: 1, - - // Bind a function to a context, optionally partially applying any - // arguments. - proxy: function(fn, context) { - var args, proxy, tmp; - - if (typeof context === "string") { - tmp = fn[context]; - context = fn; - fn = tmp; - } - - // Quick check to determine if target is callable, in the spec - // this throws a TypeError, but we will just return undefined. - if (!jQuery.isFunction(fn)) { - return undefined; - } - - // Simulated bind - args = slice.call(arguments, 2); - proxy = function() { - return fn.apply(context || this, args.concat(slice.call(arguments))); - }; - - // Set the guid of unique handler to the same of original handler, so it can be removed - proxy.guid = fn.guid = fn.guid || jQuery.guid++; - - return proxy; - }, - - now: function() { - return +(new Date()); - }, - - // jQuery.support is not used in Core but other projects attach their - // properties to it so it needs to exist. - support: support - }); - - // Populate the class2type map - jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) { - class2type["[object " + name + "]"] = name.toLowerCase(); - }); - - function isArraylike(obj) { - - // Support: iOS 8.2 (not reproducible in simulator) - // `in` check used to prevent JIT error (gh-2145) - // hasOwn isn't used here due to false negatives - // regarding Nodelist length in IE - var length = "length" in obj && obj.length, - type = jQuery.type(obj); - - if (type === "function" || jQuery.isWindow(obj)) { - return false; - } - - if (obj.nodeType === 1 && length) { - return true; - } - - return type === "array" || length === 0 || typeof length === "number" && length > 0 && (length - 1) in obj; - } - var Sizzle = - /*! - * Sizzle CSS Selector Engine v2.2.0-pre - * http://sizzlejs.com/ - * - * Copyright 2008, 2014 jQuery Foundation, Inc. and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2014-12-16 - */ (function(window) { - - var i, - support, - Expr, - getText, - isXML, - tokenize, - compile, - select, - outermostContext, - sortInput, - hasDuplicate, - - // Local document vars - setDocument, - document, - docElem, - documentIsHTML, - rbuggyQSA, - rbuggyMatches, - matches, - contains, - - // Instance-specific data - expando = "sizzle" + 1 * new Date(), - preferredDoc = window.document, - dirruns = 0, - done = 0, - classCache = createCache(), - tokenCache = createCache(), - compilerCache = createCache(), - sortOrder = function(a, b) { - if (a === b) { - hasDuplicate = true; - } - return 0; - }, - - // General-purpose constants - MAX_NEGATIVE = 1 << 31, - - // Instance methods - hasOwn = ({}).hasOwnProperty, - arr = [], - pop = arr.pop, - push_native = arr.push, - push = arr.push, - slice = arr.slice, - // Use a stripped-down indexOf as it's faster than native - // http://jsperf.com/thor-indexof-vs-for/5 - indexOf = function(list, elem) { - var i = 0, - len = list.length; - for (; i < len; i++) { - if (list[i] === elem) { - return i; - } - } - return -1; - }, - - booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", - - // Regular expressions - - // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace - whitespace = "[\\x20\\t\\r\\n\\f]", - // http://www.w3.org/TR/css3-syntax/#characters - characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", - - // Loosely modeled on CSS identifier characters - // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors - // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier - identifier = characterEncoding.replace("w", "w#"), - - // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors - attributes = "\\[" + whitespace + "*(" + characterEncoding + ")(?:" + whitespace + - // Operator (capture 2) - "*([*^$|!~]?=)" + whitespace + - // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" - "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + "*\\]", - - pseudos = ":(" + characterEncoding + ")(?:\\((" + - // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: - // 1. quoted (capture 3; capture 4 or capture 5) - "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + - // 2. simple (capture 6) - "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + - // 3. anything else (capture 2) - ".*" + ")\\)|)", - - // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter - rwhitespace = new RegExp(whitespace + "+", "g"), - rtrim = new RegExp("^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g"), - - rcomma = new RegExp("^" + whitespace + "*," + whitespace + "*"), - rcombinators = new RegExp("^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*"), - - rattributeQuotes = new RegExp("=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g"), - - rpseudo = new RegExp(pseudos), - ridentifier = new RegExp("^" + identifier + "$"), - - matchExpr = { - "ID": new RegExp("^#(" + characterEncoding + ")"), - "CLASS": new RegExp("^\\.(" + characterEncoding + ")"), - "TAG": new RegExp("^(" + characterEncoding.replace("w", "w*") + ")"), - "ATTR": new RegExp("^" + attributes), - "PSEUDO": new RegExp("^" + pseudos), - "CHILD": new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i"), - "bool": new RegExp("^(?:" + booleans + ")$", "i"), - // For use in libraries implementing .is() - // We use this for POS matching in `select` - "needsContext": new RegExp("^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i") - }, - - rinputs = /^(?:input|select|textarea|button)$/i, - rheader = /^h\d$/i, - - rnative = /^[^{]+\{\s*\[native \w/, - - // Easily-parseable/retrievable ID or TAG or CLASS selectors - rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, - - rsibling = /[+~]/, - rescape = /'|\\/g, - - // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters - runescape = new RegExp("\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig"), - funescape = function(_, escaped, escapedWhitespace) { - var high = "0x" + escaped - 0x10000; - // NaN means non-codepoint - // Support: Firefox<24 - // Workaround erroneous numeric interpretation of +"0x" - return high !== high || escapedWhitespace ? escaped : high < 0 ? - // BMP codepoint - String.fromCharCode(high + 0x10000) : - // Supplemental Plane codepoint (surrogate pair) - String.fromCharCode(high >> 10 | 0xD800, high & 0x3FF | 0xDC00); - }, - - // Used for iframes - // See setDocument() - // Removing the function wrapper causes a "Permission Denied" - // error in IE - unloadHandler = function() { - setDocument(); - }; - - // Optimize for push.apply( _, NodeList ) - try { - push.apply( - (arr = slice.call(preferredDoc.childNodes)), - preferredDoc.childNodes); - // Support: Android<4.0 - // Detect silently failing push.apply - arr[preferredDoc.childNodes.length].nodeType; - } catch (e) { - push = { - apply: arr.length ? - - // Leverage slice if possible - function(target, els) { - push_native.apply(target, slice.call(els)); - } : - - // Support: IE<9 - // Otherwise append directly - function(target, els) { - var j = target.length, - i = 0; - // Can't trust NodeList.length - while ((target[j++] = els[i++])) {} - target.length = j - 1; - } - }; - } - - function Sizzle(selector, context, results, seed) { - var match, elem, m, nodeType, - // QSA vars - i, groups, old, nid, newContext, newSelector; - - if ((context ? context.ownerDocument || context : preferredDoc) !== document) { - setDocument(context); - } - - context = context || document; - results = results || []; - nodeType = context.nodeType; - - if (typeof selector !== "string" || !selector || nodeType !== 1 && nodeType !== 9 && nodeType !== 11) { - - return results; - } - - if (!seed && documentIsHTML) { - - // Try to shortcut find operations when possible (e.g., not under DocumentFragment) - if (nodeType !== 11 && (match = rquickExpr.exec(selector))) { - // Speed-up: Sizzle("#ID") - if ((m = match[1])) { - if (nodeType === 9) { - elem = context.getElementById(m); - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document (jQuery #6963) - if (elem && elem.parentNode) { - // Handle the case where IE, Opera, and Webkit return items - // by name instead of ID - if (elem.id === m) { - results.push(elem); - return results; - } - } else { - return results; - } - } else { - // Context is not a document - if (context.ownerDocument && (elem = context.ownerDocument.getElementById(m)) && contains(context, elem) && elem.id === m) { - results.push(elem); - return results; - } - } - - // Speed-up: Sizzle("TAG") - } else if (match[2]) { - push.apply(results, context.getElementsByTagName(selector)); - return results; - - // Speed-up: Sizzle(".CLASS") - } else if ((m = match[3]) && support.getElementsByClassName) { - push.apply(results, context.getElementsByClassName(m)); - return results; - } - } - - // QSA path - if (support.qsa && (!rbuggyQSA || !rbuggyQSA.test(selector))) { - nid = old = expando; - newContext = context; - newSelector = nodeType !== 1 && selector; - - // qSA works strangely on Element-rooted queries - // We can work around this by specifying an extra ID on the root - // and working up from there (Thanks to Andrew Dupont for the technique) - // IE 8 doesn't work on object elements - if (nodeType === 1 && context.nodeName.toLowerCase() !== "object") { - groups = tokenize(selector); - - if ((old = context.getAttribute("id"))) { - nid = old.replace(rescape, "\\$&"); - } else { - context.setAttribute("id", nid); - } - nid = "[id='" + nid + "'] "; - - i = groups.length; - while (i--) { - groups[i] = nid + toSelector(groups[i]); - } - newContext = rsibling.test(selector) && testContext(context.parentNode) || context; - newSelector = groups.join(","); - } - - if (newSelector) { - try { - push.apply(results, - newContext.querySelectorAll(newSelector)); - return results; - } catch (qsaError) {} finally { - if (!old) { - context.removeAttribute("id"); - } - } - } - } - } - - // All others - return select(selector.replace(rtrim, "$1"), context, results, seed); - } - - /** - * Create key-value caches of limited size - * @returns {Function(string, Object)} Returns the Object data after storing it on itself with - * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) - * deleting the oldest entry - */ - function createCache() { - var keys = []; - - function cache(key, value) { - // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) - if (keys.push(key + " ") > Expr.cacheLength) { - // Only keep the most recent entries - delete cache[keys.shift()]; - } - return (cache[key + " "] = value); - } - return cache; - } - - /** - * Mark a function for special use by Sizzle - * @param {Function} fn The function to mark - */ - function markFunction(fn) { - fn[expando] = true; - return fn; - } - - /** - * Support testing using an element - * @param {Function} fn Passed the created div and expects a boolean result - */ - function assert(fn) { - var div = document.createElement("div"); - - try { - return !!fn(div); - } catch (e) { - return false; - } finally { - // Remove from its parent by default - if (div.parentNode) { - div.parentNode.removeChild(div); - } - // release memory in IE - div = null; - } - } - - /** - * Adds the same handler for all of the specified attrs - * @param {String} attrs Pipe-separated list of attributes - * @param {Function} handler The method that will be applied - */ - function addHandle(attrs, handler) { - var arr = attrs.split("|"), - i = attrs.length; - - while (i--) { - Expr.attrHandle[arr[i]] = handler; - } - } - - /** - * Checks document order of two siblings - * @param {Element} a - * @param {Element} b - * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b - */ - function siblingCheck(a, b) { - var cur = b && a, - diff = cur && a.nodeType === 1 && b.nodeType === 1 && (~b.sourceIndex || MAX_NEGATIVE) - (~a.sourceIndex || MAX_NEGATIVE); - - // Use IE sourceIndex if available on both nodes - if (diff) { - return diff; - } - - // Check if b follows a - if (cur) { - while ((cur = cur.nextSibling)) { - if (cur === b) { - return -1; - } - } - } - - return a ? 1 : -1; - } - - /** - * Returns a function to use in pseudos for input types - * @param {String} type - */ - function createInputPseudo(type) { - return function(elem) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === type; - }; - } - - /** - * Returns a function to use in pseudos for buttons - * @param {String} type - */ - function createButtonPseudo(type) { - return function(elem) { - var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && elem.type === type; - }; - } - - /** - * Returns a function to use in pseudos for positionals - * @param {Function} fn - */ - function createPositionalPseudo(fn) { - return markFunction(function(argument) { - argument = +argument; - return markFunction(function(seed, matches) { - var j, - matchIndexes = fn([], seed.length, argument), - i = matchIndexes.length; - - // Match elements found at the specified indexes - while (i--) { - if (seed[(j = matchIndexes[i])]) { - seed[j] = !(matches[j] = seed[j]); - } - } - }); - }); - } - - /** - * Checks a node for validity as a Sizzle context - * @param {Element|Object=} context - * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value - */ - function testContext(context) { - return context && typeof context.getElementsByTagName !== "undefined" && context; - } - - // Expose support vars for convenience - support = Sizzle.support = {}; - - /** - * Detects XML nodes - * @param {Element|Object} elem An element or a document - * @returns {Boolean} True iff elem is a non-HTML XML node - */ - isXML = Sizzle.isXML = function(elem) { - // documentElement is verified for cases where it doesn't yet exist - // (such as loading iframes in IE - #4833) - var documentElement = elem && (elem.ownerDocument || elem).documentElement; - return documentElement ? documentElement.nodeName !== "HTML" : false; - }; - - /** - * Sets document-related variables once based on the current document - * @param {Element|Object} [doc] An element or document object to use to set the document - * @returns {Object} Returns the current document - */ - setDocument = Sizzle.setDocument = function(node) { - var hasCompare, parent, - doc = node ? node.ownerDocument || node : preferredDoc; - - // If no document and documentElement is available, return - if (doc === document || doc.nodeType !== 9 || !doc.documentElement) { - return document; - } - - // Set our document - document = doc; - docElem = doc.documentElement; - parent = doc.defaultView; - - // Support: IE>8 - // If iframe document is assigned to "document" variable and if iframe has been reloaded, - // IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936 - // IE6-8 do not support the defaultView property so parent will be undefined - if (parent && parent !== parent.top) { - // IE11 does not have attachEvent, so all must suffer - if (parent.addEventListener) { - parent.addEventListener("unload", unloadHandler, false); - } else if (parent.attachEvent) { - parent.attachEvent("onunload", unloadHandler); - } - } - - /* Support tests - ---------------------------------------------------------------------- */ - documentIsHTML = !isXML(doc); - - /* Attributes - ---------------------------------------------------------------------- */ - - // Support: IE<8 - // Verify that getAttribute really returns attributes and not properties - // (excepting IE8 booleans) - support.attributes = assert(function(div) { - div.className = "i"; - return !div.getAttribute("className"); - }); - - /* getElement(s)By* - ---------------------------------------------------------------------- */ - - // Check if getElementsByTagName("*") returns only elements - support.getElementsByTagName = assert(function(div) { - div.appendChild(doc.createComment("")); - return !div.getElementsByTagName("*").length; - }); - - // Support: IE<9 - support.getElementsByClassName = rnative.test(doc.getElementsByClassName); - - // Support: IE<10 - // Check if getElementById returns elements by name - // The broken getElementById methods don't pick up programatically-set names, - // so use a roundabout getElementsByName test - support.getById = assert(function(div) { - docElem.appendChild(div).id = expando; - return !doc.getElementsByName || !doc.getElementsByName(expando).length; - }); - - // ID find and filter - if (support.getById) { - Expr.find["ID"] = function(id, context) { - if (typeof context.getElementById !== "undefined" && documentIsHTML) { - var m = context.getElementById(id); - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - return m && m.parentNode ? [m] : []; - } - }; - Expr.filter["ID"] = function(id) { - var attrId = id.replace(runescape, funescape); - return function(elem) { - return elem.getAttribute("id") === attrId; - }; - }; - } else { - // Support: IE6/7 - // getElementById is not reliable as a find shortcut - delete Expr.find["ID"]; - - Expr.filter["ID"] = function(id) { - var attrId = id.replace(runescape, funescape); - return function(elem) { - var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); - return node && node.value === attrId; - }; - }; - } - - // Tag - Expr.find["TAG"] = support.getElementsByTagName ? function(tag, context) { - if (typeof context.getElementsByTagName !== "undefined") { - return context.getElementsByTagName(tag); - - // DocumentFragment nodes don't have gEBTN - } else if (support.qsa) { - return context.querySelectorAll(tag); - } - } : - - function(tag, context) { - var elem, - tmp = [], - i = 0, - // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too - results = context.getElementsByTagName(tag); - - // Filter out possible comments - if (tag === "*") { - while ((elem = results[i++])) { - if (elem.nodeType === 1) { - tmp.push(elem); - } - } - - return tmp; - } - return results; - }; - - // Class - Expr.find["CLASS"] = support.getElementsByClassName && function(className, context) { - if (documentIsHTML) { - return context.getElementsByClassName(className); - } - }; - - /* QSA/matchesSelector - ---------------------------------------------------------------------- */ - - // QSA and matchesSelector support - - // matchesSelector(:active) reports false when true (IE9/Opera 11.5) - rbuggyMatches = []; - - // qSa(:focus) reports false when true (Chrome 21) - // We allow this because of a bug in IE8/9 that throws an error - // whenever `document.activeElement` is accessed on an iframe - // So, we allow :focus to pass through QSA all the time to avoid the IE error - // See http://bugs.jquery.com/ticket/13378 - rbuggyQSA = []; - - if ((support.qsa = rnative.test(doc.querySelectorAll))) { - // Build QSA regex - // Regex strategy adopted from Diego Perini - assert(function(div) { - // Select is set to empty string on purpose - // This is to test IE's treatment of not explicitly - // setting a boolean content attribute, - // since its presence should be enough - // http://bugs.jquery.com/ticket/12359 - docElem.appendChild(div).innerHTML = "" + ""; - - // Support: IE8, Opera 11-12.16 - // Nothing should be selected when empty strings follow ^= or $= or *= - // The test attribute must be unknown in Opera but "safe" for WinRT - // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section - if (div.querySelectorAll("[msallowcapture^='']").length) { - rbuggyQSA.push("[*^$]=" + whitespace + "*(?:''|\"\")"); - } - - // Support: IE8 - // Boolean attributes and "value" are not treated correctly - if (!div.querySelectorAll("[selected]").length) { - rbuggyQSA.push("\\[" + whitespace + "*(?:value|" + booleans + ")"); - } - - // Support: Chrome<29, Android<4.2+, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.7+ - if (!div.querySelectorAll("[id~=" + expando + "-]").length) { - rbuggyQSA.push("~="); - } - - // Webkit/Opera - :checked should return selected option elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - // IE8 throws error here and will not see later tests - if (!div.querySelectorAll(":checked").length) { - rbuggyQSA.push(":checked"); - } - - // Support: Safari 8+, iOS 8+ - // https://bugs.webkit.org/show_bug.cgi?id=136851 - // In-page `selector#id sibing-combinator selector` fails - if (!div.querySelectorAll("a#" + expando + "+*").length) { - rbuggyQSA.push(".#.+[+~]"); - } - }); - - assert(function(div) { - // Support: Windows 8 Native Apps - // The type and name attributes are restricted during .innerHTML assignment - var input = doc.createElement("input"); - input.setAttribute("type", "hidden"); - div.appendChild(input).setAttribute("name", "D"); - - // Support: IE8 - // Enforce case-sensitivity of name attribute - if (div.querySelectorAll("[name=d]").length) { - rbuggyQSA.push("name" + whitespace + "*[*^$|!~]?="); - } - - // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) - // IE8 throws error here and will not see later tests - if (!div.querySelectorAll(":enabled").length) { - rbuggyQSA.push(":enabled", ":disabled"); - } - - // Opera 10-11 does not throw on post-comma invalid pseudos - div.querySelectorAll("*,:x"); - rbuggyQSA.push(",.*:"); - }); - } - - if ((support.matchesSelector = rnative.test((matches = docElem.matches || docElem.webkitMatchesSelector || docElem.mozMatchesSelector || docElem.oMatchesSelector || docElem.msMatchesSelector)))) { - - assert(function(div) { - // Check to see if it's possible to do matchesSelector - // on a disconnected node (IE 9) - support.disconnectedMatch = matches.call(div, "div"); - - // This should fail with an exception - // Gecko does not error, returns false instead - matches.call(div, "[s!='']:x"); - rbuggyMatches.push("!=", pseudos); - }); - } - - rbuggyQSA = rbuggyQSA.length && new RegExp(rbuggyQSA.join("|")); - rbuggyMatches = rbuggyMatches.length && new RegExp(rbuggyMatches.join("|")); - - /* Contains - ---------------------------------------------------------------------- */ - hasCompare = rnative.test(docElem.compareDocumentPosition); - - // Element contains another - // Purposefully does not implement inclusive descendent - // As in, an element does not contain itself - contains = hasCompare || rnative.test(docElem.contains) ? function(a, b) { - var adown = a.nodeType === 9 ? a.documentElement : a, - bup = b && b.parentNode; - return a === bup || !! (bup && bup.nodeType === 1 && ( - adown.contains ? adown.contains(bup) : a.compareDocumentPosition && a.compareDocumentPosition(bup) & 16)); - } : function(a, b) { - if (b) { - while ((b = b.parentNode)) { - if (b === a) { - return true; - } - } - } - return false; - }; - - /* Sorting - ---------------------------------------------------------------------- */ - - // Document order sorting - sortOrder = hasCompare ? function(a, b) { - - // Flag for duplicate removal - if (a === b) { - hasDuplicate = true; - return 0; - } - - // Sort on method existence if only one input has compareDocumentPosition - var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; - if (compare) { - return compare; - } - - // Calculate position if both inputs belong to the same document - compare = (a.ownerDocument || a) === (b.ownerDocument || b) ? a.compareDocumentPosition(b) : - - // Otherwise we know they are disconnected - 1; - - // Disconnected nodes - if (compare & 1 || (!support.sortDetached && b.compareDocumentPosition(a) === compare)) { - - // Choose the first element that is related to our preferred document - if (a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a)) { - return -1; - } - if (b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b)) { - return 1; - } - - // Maintain original order - return sortInput ? (indexOf(sortInput, a) - indexOf(sortInput, b)) : 0; - } - - return compare & 4 ? -1 : 1; - } : function(a, b) { - // Exit early if the nodes are identical - if (a === b) { - hasDuplicate = true; - return 0; - } - - var cur, - i = 0, - aup = a.parentNode, - bup = b.parentNode, - ap = [a], - bp = [b]; - - // Parentless nodes are either documents or disconnected - if (!aup || !bup) { - return a === doc ? -1 : b === doc ? 1 : aup ? -1 : bup ? 1 : sortInput ? (indexOf(sortInput, a) - indexOf(sortInput, b)) : 0; - - // If the nodes are siblings, we can do a quick check - } else if (aup === bup) { - return siblingCheck(a, b); - } - - // Otherwise we need full lists of their ancestors for comparison - cur = a; - while ((cur = cur.parentNode)) { - ap.unshift(cur); - } - cur = b; - while ((cur = cur.parentNode)) { - bp.unshift(cur); - } - - // Walk down the tree looking for a discrepancy - while (ap[i] === bp[i]) { - i++; - } - - return i ? - // Do a sibling check if the nodes have a common ancestor - siblingCheck(ap[i], bp[i]) : - - // Otherwise nodes in our document sort first - ap[i] === preferredDoc ? -1 : bp[i] === preferredDoc ? 1 : 0; - }; - - return doc; - }; - - Sizzle.matches = function(expr, elements) { - return Sizzle(expr, null, null, elements); - }; - - Sizzle.matchesSelector = function(elem, expr) { - // Set document vars if needed - if ((elem.ownerDocument || elem) !== document) { - setDocument(elem); - } - - // Make sure that attribute selectors are quoted - expr = expr.replace(rattributeQuotes, "='$1']"); - - if (support.matchesSelector && documentIsHTML && (!rbuggyMatches || !rbuggyMatches.test(expr)) && (!rbuggyQSA || !rbuggyQSA.test(expr))) { - - try { - var ret = matches.call(elem, expr); - - // IE 9's matchesSelector returns false on disconnected nodes - if (ret || support.disconnectedMatch || - // As well, disconnected nodes are said to be in a document - // fragment in IE 9 - elem.document && elem.document.nodeType !== 11) { - return ret; - } - } catch (e) {} - } - - return Sizzle(expr, document, null, [elem]).length > 0; - }; - - Sizzle.contains = function(context, elem) { - // Set document vars if needed - if ((context.ownerDocument || context) !== document) { - setDocument(context); - } - return contains(context, elem); - }; - - Sizzle.attr = function(elem, name) { - // Set document vars if needed - if ((elem.ownerDocument || elem) !== document) { - setDocument(elem); - } - - var fn = Expr.attrHandle[name.toLowerCase()], - // Don't get fooled by Object.prototype properties (jQuery #13807) - val = fn && hasOwn.call(Expr.attrHandle, name.toLowerCase()) ? fn(elem, name, !documentIsHTML) : undefined; - - return val !== undefined ? val : support.attributes || !documentIsHTML ? elem.getAttribute(name) : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null; - }; - - Sizzle.error = function(msg) { - throw new Error("Syntax error, unrecognized expression: " + msg); - }; - - /** - * Document sorting and removing duplicates - * @param {ArrayLike} results - */ - Sizzle.uniqueSort = function(results) { - var elem, - duplicates = [], - j = 0, - i = 0; - - // Unless we *know* we can detect duplicates, assume their presence - hasDuplicate = !support.detectDuplicates; - sortInput = !support.sortStable && results.slice(0); - results.sort(sortOrder); - - if (hasDuplicate) { - while ((elem = results[i++])) { - if (elem === results[i]) { - j = duplicates.push(i); - } - } - while (j--) { - results.splice(duplicates[j], 1); - } - } - - // Clear input after sorting to release objects - // See https://github.com/jquery/sizzle/pull/225 - sortInput = null; - - return results; - }; - - /** - * Utility function for retrieving the text value of an array of DOM nodes - * @param {Array|Element} elem - */ - getText = Sizzle.getText = function(elem) { - var node, - ret = "", - i = 0, - nodeType = elem.nodeType; - - if (!nodeType) { - // If no nodeType, this is expected to be an array - while ((node = elem[i++])) { - // Do not traverse comment nodes - ret += getText(node); - } - } else if (nodeType === 1 || nodeType === 9 || nodeType === 11) { - // Use textContent for elements - // innerText usage removed for consistency of new lines (jQuery #11153) - if (typeof elem.textContent === "string") { - return elem.textContent; - } else { - // Traverse its children - for (elem = elem.firstChild; elem; elem = elem.nextSibling) { - ret += getText(elem); - } - } - } else if (nodeType === 3 || nodeType === 4) { - return elem.nodeValue; - } - // Do not include comment or processing instruction nodes - - return ret; - }; - - Expr = Sizzle.selectors = { - - // Can be adjusted by the user - cacheLength: 50, - - createPseudo: markFunction, - - match: matchExpr, - - attrHandle: {}, - - find: {}, - - relative: { - ">": { - dir: "parentNode", - first: true - }, - " ": { - dir: "parentNode" - }, - "+": { - dir: "previousSibling", - first: true - }, - "~": { - dir: "previousSibling" - } - }, - - preFilter: { - "ATTR": function(match) { - match[1] = match[1].replace(runescape, funescape); - - // Move the given value to match[3] whether quoted or unquoted - match[3] = (match[3] || match[4] || match[5] || "").replace(runescape, funescape); - - if (match[2] === "~=") { - match[3] = " " + match[3] + " "; - } - - return match.slice(0, 4); - }, - - "CHILD": function(match) { - /* matches from matchExpr["CHILD"] - 1 type (only|nth|...) - 2 what (child|of-type) - 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) - 4 xn-component of xn+y argument ([+-]?\d*n|) - 5 sign of xn-component - 6 x of xn-component - 7 sign of y-component - 8 y of y-component - */ - match[1] = match[1].toLowerCase(); - - if (match[1].slice(0, 3) === "nth") { - // nth-* requires argument - if (!match[3]) { - Sizzle.error(match[0]); - } - - // numeric x and y parameters for Expr.filter.CHILD - // remember that false/true cast respectively to 0/1 - match[4] = +(match[4] ? match[5] + (match[6] || 1) : 2 * (match[3] === "even" || match[3] === "odd")); - match[5] = +((match[7] + match[8]) || match[3] === "odd"); - - // other types prohibit arguments - } else if (match[3]) { - Sizzle.error(match[0]); - } - - return match; - }, - - "PSEUDO": function(match) { - var excess, - unquoted = !match[6] && match[2]; - - if (matchExpr["CHILD"].test(match[0])) { - return null; - } - - // Accept quoted arguments as-is - if (match[3]) { - match[2] = match[4] || match[5] || ""; - - // Strip excess characters from unquoted arguments - } else if (unquoted && rpseudo.test(unquoted) && - // Get excess from tokenize (recursively) - (excess = tokenize(unquoted, true)) && - // advance to the next closing parenthesis - (excess = unquoted.indexOf(")", unquoted.length - excess) - unquoted.length)) { - - // excess is a negative index - match[0] = match[0].slice(0, excess); - match[2] = unquoted.slice(0, excess); - } - - // Return only captures needed by the pseudo filter method (type and argument) - return match.slice(0, 3); - } - }, - - filter: { - - "TAG": function(nodeNameSelector) { - var nodeName = nodeNameSelector.replace(runescape, funescape).toLowerCase(); - return nodeNameSelector === "*" ? function() { - return true; - } : function(elem) { - return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; - }; - }, - - "CLASS": function(className) { - var pattern = classCache[className + " "]; - - return pattern || (pattern = new RegExp("(^|" + whitespace + ")" + className + "(" + whitespace + "|$)")) && classCache(className, function(elem) { - return pattern.test(typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || ""); - }); - }, - - "ATTR": function(name, operator, check) { - return function(elem) { - var result = Sizzle.attr(elem, name); - - if (result == null) { - return operator === "!="; - } - if (!operator) { - return true; - } - - result += ""; - - return operator === "=" ? result === check : operator === "!=" ? result !== check : operator === "^=" ? check && result.indexOf(check) === 0 : operator === "*=" ? check && result.indexOf(check) > -1 : operator === "$=" ? check && result.slice(-check.length) === check : operator === "~=" ? (" " + result.replace(rwhitespace, " ") + " ").indexOf(check) > -1 : operator === "|=" ? result === check || result.slice(0, check.length + 1) === check + "-" : false; - }; - }, - - "CHILD": function(type, what, argument, first, last) { - var simple = type.slice(0, 3) !== "nth", - forward = type.slice(-4) !== "last", - ofType = what === "of-type"; - - return first === 1 && last === 0 ? - - // Shortcut for :nth-*(n) - function(elem) { - return !!elem.parentNode; - } : - - function(elem, context, xml) { - var cache, outerCache, node, diff, nodeIndex, start, - dir = simple !== forward ? "nextSibling" : "previousSibling", - parent = elem.parentNode, - name = ofType && elem.nodeName.toLowerCase(), - useCache = !xml && !ofType; - - if (parent) { - - // :(first|last|only)-(child|of-type) - if (simple) { - while (dir) { - node = elem; - while ((node = node[dir])) { - if (ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1) { - return false; - } - } - // Reverse direction for :only-* (if we haven't yet done so) - start = dir = type === "only" && !start && "nextSibling"; - } - return true; - } - - start = [forward ? parent.firstChild : parent.lastChild]; - - // non-xml :nth-child(...) stores cache data on `parent` - if (forward && useCache) { - // Seek `elem` from a previously-cached index - outerCache = parent[expando] || (parent[expando] = {}); - cache = outerCache[type] || []; - nodeIndex = cache[0] === dirruns && cache[1]; - diff = cache[0] === dirruns && cache[2]; - node = nodeIndex && parent.childNodes[nodeIndex]; - - while ((node = ++nodeIndex && node && node[dir] || - - // Fallback to seeking `elem` from the start - (diff = nodeIndex = 0) || start.pop())) { - - // When found, cache indexes on `parent` and break - if (node.nodeType === 1 && ++diff && node === elem) { - outerCache[type] = [dirruns, nodeIndex, diff]; - break; - } - } - - // Use previously-cached element index if available - } else if (useCache && (cache = (elem[expando] || (elem[expando] = {}))[type]) && cache[0] === dirruns) { - diff = cache[1]; - - // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...) - } else { - // Use the same loop as above to seek `elem` from the start - while ((node = ++nodeIndex && node && node[dir] || (diff = nodeIndex = 0) || start.pop())) { - - if ((ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1) && ++diff) { - // Cache the index of each encountered element - if (useCache) { - (node[expando] || (node[expando] = {}))[type] = [dirruns, diff]; - } - - if (node === elem) { - break; - } - } - } - } - - // Incorporate the offset, then check against cycle size - diff -= last; - return diff === first || (diff % first === 0 && diff / first >= 0); - } - }; - }, - - "PSEUDO": function(pseudo, argument) { - // pseudo-class names are case-insensitive - // http://www.w3.org/TR/selectors/#pseudo-classes - // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters - // Remember that setFilters inherits from pseudos - var args, - fn = Expr.pseudos[pseudo] || Expr.setFilters[pseudo.toLowerCase()] || Sizzle.error("unsupported pseudo: " + pseudo); - - // The user may use createPseudo to indicate that - // arguments are needed to create the filter function - // just as Sizzle does - if (fn[expando]) { - return fn(argument); - } - - // But maintain support for old signatures - if (fn.length > 1) { - args = [pseudo, pseudo, "", argument]; - return Expr.setFilters.hasOwnProperty(pseudo.toLowerCase()) ? markFunction(function(seed, matches) { - var idx, - matched = fn(seed, argument), - i = matched.length; - while (i--) { - idx = indexOf(seed, matched[i]); - seed[idx] = !(matches[idx] = matched[i]); - } - }) : function(elem) { - return fn(elem, 0, args); - }; - } - - return fn; - } - }, - - pseudos: { - // Potentially complex pseudos - "not": markFunction(function(selector) { - // Trim the selector passed to compile - // to avoid treating leading and trailing - // spaces as combinators - var input = [], - results = [], - matcher = compile(selector.replace(rtrim, "$1")); - - return matcher[expando] ? markFunction(function(seed, matches, context, xml) { - var elem, - unmatched = matcher(seed, null, xml, []), - i = seed.length; - - // Match elements unmatched by `matcher` - while (i--) { - if ((elem = unmatched[i])) { - seed[i] = !(matches[i] = elem); - } - } - }) : function(elem, context, xml) { - input[0] = elem; - matcher(input, null, xml, results); - // Don't keep the element (issue #299) - input[0] = null; - return !results.pop(); - }; - }), - - "has": markFunction(function(selector) { - return function(elem) { - return Sizzle(selector, elem).length > 0; - }; - }), - - "contains": markFunction(function(text) { - text = text.replace(runescape, funescape); - return function(elem) { - return (elem.textContent || elem.innerText || getText(elem)).indexOf(text) > -1; - }; - }), - - // "Whether an element is represented by a :lang() selector - // is based solely on the element's language value - // being equal to the identifier C, - // or beginning with the identifier C immediately followed by "-". - // The matching of C against the element's language value is performed case-insensitively. - // The identifier C does not have to be a valid language name." - // http://www.w3.org/TR/selectors/#lang-pseudo - "lang": markFunction(function(lang) { - // lang value must be a valid identifier - if (!ridentifier.test(lang || "")) { - Sizzle.error("unsupported lang: " + lang); - } - lang = lang.replace(runescape, funescape).toLowerCase(); - return function(elem) { - var elemLang; - do { - if ((elemLang = documentIsHTML ? elem.lang : elem.getAttribute("xml:lang") || elem.getAttribute("lang"))) { - - elemLang = elemLang.toLowerCase(); - return elemLang === lang || elemLang.indexOf(lang + "-") === 0; - } - } while ((elem = elem.parentNode) && elem.nodeType === 1); - return false; - }; - }), - - // Miscellaneous - "target": function(elem) { - var hash = window.location && window.location.hash; - return hash && hash.slice(1) === elem.id; - }, - - "root": function(elem) { - return elem === docElem; - }, - - "focus": function(elem) { - return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !! (elem.type || elem.href || ~elem.tabIndex); - }, - - // Boolean properties - "enabled": function(elem) { - return elem.disabled === false; - }, - - "disabled": function(elem) { - return elem.disabled === true; - }, - - "checked": function(elem) { - // In CSS3, :checked should return both checked and selected elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - var nodeName = elem.nodeName.toLowerCase(); - return (nodeName === "input" && !! elem.checked) || (nodeName === "option" && !! elem.selected); - }, - - "selected": function(elem) { - // Accessing this property makes selected-by-default - // options in Safari work properly - if (elem.parentNode) { - elem.parentNode.selectedIndex; - } - - return elem.selected === true; - }, - - // Contents - "empty": function(elem) { - // http://www.w3.org/TR/selectors/#empty-pseudo - // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), - // but not by others (comment: 8; processing instruction: 7; etc.) - // nodeType < 6 works because attributes (2) do not appear as children - for (elem = elem.firstChild; elem; elem = elem.nextSibling) { - if (elem.nodeType < 6) { - return false; - } - } - return true; - }, - - "parent": function(elem) { - return !Expr.pseudos["empty"](elem); - }, - - // Element/input types - "header": function(elem) { - return rheader.test(elem.nodeName); - }, - - "input": function(elem) { - return rinputs.test(elem.nodeName); - }, - - "button": function(elem) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === "button" || name === "button"; - }, - - "text": function(elem) { - var attr; - return elem.nodeName.toLowerCase() === "input" && elem.type === "text" && - - // Support: IE<8 - // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" - ((attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text"); - }, - - // Position-in-collection - "first": createPositionalPseudo(function() { - return [0]; - }), - - "last": createPositionalPseudo(function(matchIndexes, length) { - return [length - 1]; - }), - - "eq": createPositionalPseudo(function(matchIndexes, length, argument) { - return [argument < 0 ? argument + length : argument]; - }), - - "even": createPositionalPseudo(function(matchIndexes, length) { - var i = 0; - for (; i < length; i += 2) { - matchIndexes.push(i); - } - return matchIndexes; - }), - - "odd": createPositionalPseudo(function(matchIndexes, length) { - var i = 1; - for (; i < length; i += 2) { - matchIndexes.push(i); - } - return matchIndexes; - }), - - "lt": createPositionalPseudo(function(matchIndexes, length, argument) { - var i = argument < 0 ? argument + length : argument; - for (; --i >= 0;) { - matchIndexes.push(i); - } - return matchIndexes; - }), - - "gt": createPositionalPseudo(function(matchIndexes, length, argument) { - var i = argument < 0 ? argument + length : argument; - for (; ++i < length;) { - matchIndexes.push(i); - } - return matchIndexes; - }) - } - }; - - Expr.pseudos["nth"] = Expr.pseudos["eq"]; - - // Add button/input type pseudos - for (i in { - radio: true, - checkbox: true, - file: true, - password: true, - image: true - }) { - Expr.pseudos[i] = createInputPseudo(i); - } - for (i in { - submit: true, - reset: true - }) { - Expr.pseudos[i] = createButtonPseudo(i); - } - - // Easy API for creating new setFilters - function setFilters() {} - setFilters.prototype = Expr.filters = Expr.pseudos; - Expr.setFilters = new setFilters(); - - tokenize = Sizzle.tokenize = function(selector, parseOnly) { - var matched, match, tokens, type, - soFar, groups, preFilters, - cached = tokenCache[selector + " "]; - - if (cached) { - return parseOnly ? 0 : cached.slice(0); - } - - soFar = selector; - groups = []; - preFilters = Expr.preFilter; - - while (soFar) { - - // Comma and first run - if (!matched || (match = rcomma.exec(soFar))) { - if (match) { - // Don't consume trailing commas as valid - soFar = soFar.slice(match[0].length) || soFar; - } - groups.push((tokens = [])); - } - - matched = false; - - // Combinators - if ((match = rcombinators.exec(soFar))) { - matched = match.shift(); - tokens.push({ - value: matched, - // Cast descendant combinators to space - type: match[0].replace(rtrim, " ") - }); - soFar = soFar.slice(matched.length); - } - - // Filters - for (type in Expr.filter) { - if ((match = matchExpr[type].exec(soFar)) && (!preFilters[type] || (match = preFilters[type](match)))) { - matched = match.shift(); - tokens.push({ - value: matched, - type: type, - matches: match - }); - soFar = soFar.slice(matched.length); - } - } - - if (!matched) { - break; - } - } - - // Return the length of the invalid excess - // if we're just parsing - // Otherwise, throw an error or return tokens - return parseOnly ? soFar.length : soFar ? Sizzle.error(selector) : - // Cache the tokens - tokenCache(selector, groups).slice(0); - }; - - function toSelector(tokens) { - var i = 0, - len = tokens.length, - selector = ""; - for (; i < len; i++) { - selector += tokens[i].value; - } - return selector; - } - - function addCombinator(matcher, combinator, base) { - var dir = combinator.dir, - checkNonElements = base && dir === "parentNode", - doneName = done++; - - return combinator.first ? - // Check against closest ancestor/preceding element - function(elem, context, xml) { - while ((elem = elem[dir])) { - if (elem.nodeType === 1 || checkNonElements) { - return matcher(elem, context, xml); - } - } - } : - - // Check against all ancestor/preceding elements - function(elem, context, xml) { - var oldCache, outerCache, - newCache = [dirruns, doneName]; - - // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching - if (xml) { - while ((elem = elem[dir])) { - if (elem.nodeType === 1 || checkNonElements) { - if (matcher(elem, context, xml)) { - return true; - } - } - } - } else { - while ((elem = elem[dir])) { - if (elem.nodeType === 1 || checkNonElements) { - outerCache = elem[expando] || (elem[expando] = {}); - if ((oldCache = outerCache[dir]) && oldCache[0] === dirruns && oldCache[1] === doneName) { - - // Assign to newCache so results back-propagate to previous elements - return (newCache[2] = oldCache[2]); - } else { - // Reuse newcache so results back-propagate to previous elements - outerCache[dir] = newCache; - - // A match means we're done; a fail means we have to keep checking - if ((newCache[2] = matcher(elem, context, xml))) { - return true; - } - } - } - } - } - }; - } - - function elementMatcher(matchers) { - return matchers.length > 1 ? function(elem, context, xml) { - var i = matchers.length; - while (i--) { - if (!matchers[i](elem, context, xml)) { - return false; - } - } - return true; - } : matchers[0]; - } - - function multipleContexts(selector, contexts, results) { - var i = 0, - len = contexts.length; - for (; i < len; i++) { - Sizzle(selector, contexts[i], results); - } - return results; - } - - function condense(unmatched, map, filter, context, xml) { - var elem, - newUnmatched = [], - i = 0, - len = unmatched.length, - mapped = map != null; - - for (; i < len; i++) { - if ((elem = unmatched[i])) { - if (!filter || filter(elem, context, xml)) { - newUnmatched.push(elem); - if (mapped) { - map.push(i); - } - } - } - } - - return newUnmatched; - } - - function setMatcher(preFilter, selector, matcher, postFilter, postFinder, postSelector) { - if (postFilter && !postFilter[expando]) { - postFilter = setMatcher(postFilter); - } - if (postFinder && !postFinder[expando]) { - postFinder = setMatcher(postFinder, postSelector); - } - return markFunction(function(seed, results, context, xml) { - var temp, i, elem, - preMap = [], - postMap = [], - preexisting = results.length, - - // Get initial elements from seed or context - elems = seed || multipleContexts(selector || "*", context.nodeType ? [context] : context, []), - - // Prefilter to get matcher input, preserving a map for seed-results synchronization - matcherIn = preFilter && (seed || !selector) ? condense(elems, preMap, preFilter, context, xml) : elems, - - matcherOut = matcher ? - // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, - postFinder || (seed ? preFilter : preexisting || postFilter) ? - - // ...intermediate processing is necessary - [] : - - // ...otherwise use results directly - results : matcherIn; - - // Find primary matches - if (matcher) { - matcher(matcherIn, matcherOut, context, xml); - } - - // Apply postFilter - if (postFilter) { - temp = condense(matcherOut, postMap); - postFilter(temp, [], context, xml); - - // Un-match failing elements by moving them back to matcherIn - i = temp.length; - while (i--) { - if ((elem = temp[i])) { - matcherOut[postMap[i]] = !(matcherIn[postMap[i]] = elem); - } - } - } - - if (seed) { - if (postFinder || preFilter) { - if (postFinder) { - // Get the final matcherOut by condensing this intermediate into postFinder contexts - temp = []; - i = matcherOut.length; - while (i--) { - if ((elem = matcherOut[i])) { - // Restore matcherIn since elem is not yet a final match - temp.push((matcherIn[i] = elem)); - } - } - postFinder(null, (matcherOut = []), temp, xml); - } - - // Move matched elements from seed to results to keep them synchronized - i = matcherOut.length; - while (i--) { - if ((elem = matcherOut[i]) && (temp = postFinder ? indexOf(seed, elem) : preMap[i]) > -1) { - - seed[temp] = !(results[temp] = elem); - } - } - } - - // Add elements to results, through postFinder if defined - } else { - matcherOut = condense( - matcherOut === results ? matcherOut.splice(preexisting, matcherOut.length) : matcherOut); - if (postFinder) { - postFinder(null, results, matcherOut, xml); - } else { - push.apply(results, matcherOut); - } - } - }); - } - - function matcherFromTokens(tokens) { - var checkContext, matcher, j, - len = tokens.length, - leadingRelative = Expr.relative[tokens[0].type], - implicitRelative = leadingRelative || Expr.relative[" "], - i = leadingRelative ? 1 : 0, - - // The foundational matcher ensures that elements are reachable from top-level context(s) - matchContext = addCombinator(function(elem) { - return elem === checkContext; - }, implicitRelative, true), - matchAnyContext = addCombinator(function(elem) { - return indexOf(checkContext, elem) > -1; - }, implicitRelative, true), - matchers = [function(elem, context, xml) { - var ret = (!leadingRelative && (xml || context !== outermostContext)) || ( - (checkContext = context).nodeType ? matchContext(elem, context, xml) : matchAnyContext(elem, context, xml)); - // Avoid hanging onto element (issue #299) - checkContext = null; - return ret; - }]; - - for (; i < len; i++) { - if ((matcher = Expr.relative[tokens[i].type])) { - matchers = [addCombinator(elementMatcher(matchers), matcher)]; - } else { - matcher = Expr.filter[tokens[i].type].apply(null, tokens[i].matches); - - // Return special upon seeing a positional matcher - if (matcher[expando]) { - // Find the next relative operator (if any) for proper handling - j = ++i; - for (; j < len; j++) { - if (Expr.relative[tokens[j].type]) { - break; - } - } - return setMatcher( - i > 1 && elementMatcher(matchers), - i > 1 && toSelector( - // If the preceding token was a descendant combinator, insert an implicit any-element `*` - tokens.slice(0, i - 1).concat({ - value: tokens[i - 2].type === " " ? "*" : "" - })).replace(rtrim, "$1"), - matcher, - i < j && matcherFromTokens(tokens.slice(i, j)), - j < len && matcherFromTokens((tokens = tokens.slice(j))), - j < len && toSelector(tokens)); - } - matchers.push(matcher); - } - } - - return elementMatcher(matchers); - } - - function matcherFromGroupMatchers(elementMatchers, setMatchers) { - var bySet = setMatchers.length > 0, - byElement = elementMatchers.length > 0, - superMatcher = function(seed, context, xml, results, outermost) { - var elem, j, matcher, - matchedCount = 0, - i = "0", - unmatched = seed && [], - setMatched = [], - contextBackup = outermostContext, - // We must always have either seed elements or outermost context - elems = seed || byElement && Expr.find["TAG"]("*", outermost), - // Use integer dirruns iff this is the outermost matcher - dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), - len = elems.length; - - if (outermost) { - outermostContext = context !== document && context; - } - - // Add elements passing elementMatchers directly to results - // Keep `i` a string if there are no elements so `matchedCount` will be "00" below - // Support: IE<9, Safari - // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id - for (; i !== len && (elem = elems[i]) != null; i++) { - if (byElement && elem) { - j = 0; - while ((matcher = elementMatchers[j++])) { - if (matcher(elem, context, xml)) { - results.push(elem); - break; - } - } - if (outermost) { - dirruns = dirrunsUnique; - } - } - - // Track unmatched elements for set filters - if (bySet) { - // They will have gone through all possible matchers - if ((elem = !matcher && elem)) { - matchedCount--; - } - - // Lengthen the array for every element, matched or not - if (seed) { - unmatched.push(elem); - } - } - } - - // Apply set filters to unmatched elements - matchedCount += i; - if (bySet && i !== matchedCount) { - j = 0; - while ((matcher = setMatchers[j++])) { - matcher(unmatched, setMatched, context, xml); - } - - if (seed) { - // Reintegrate element matches to eliminate the need for sorting - if (matchedCount > 0) { - while (i--) { - if (!(unmatched[i] || setMatched[i])) { - setMatched[i] = pop.call(results); - } - } - } - - // Discard index placeholder values to get only actual matches - setMatched = condense(setMatched); - } - - // Add matches to results - push.apply(results, setMatched); - - // Seedless set matches succeeding multiple successful matchers stipulate sorting - if (outermost && !seed && setMatched.length > 0 && (matchedCount + setMatchers.length) > 1) { - - Sizzle.uniqueSort(results); - } - } - - // Override manipulation of globals by nested matchers - if (outermost) { - dirruns = dirrunsUnique; - outermostContext = contextBackup; - } - - return unmatched; - }; - - return bySet ? markFunction(superMatcher) : superMatcher; - } - - compile = Sizzle.compile = function(selector, match /* Internal Use Only */ ) { - var i, - setMatchers = [], - elementMatchers = [], - cached = compilerCache[selector + " "]; - - if (!cached) { - // Generate a function of recursive functions that can be used to check each element - if (!match) { - match = tokenize(selector); - } - i = match.length; - while (i--) { - cached = matcherFromTokens(match[i]); - if (cached[expando]) { - setMatchers.push(cached); - } else { - elementMatchers.push(cached); - } - } - - // Cache the compiled function - cached = compilerCache(selector, matcherFromGroupMatchers(elementMatchers, setMatchers)); - - // Save selector and tokenization - cached.selector = selector; - } - return cached; - }; - - /** - * A low-level selection function that works with Sizzle's compiled - * selector functions - * @param {String|Function} selector A selector or a pre-compiled - * selector function built with Sizzle.compile - * @param {Element} context - * @param {Array} [results] - * @param {Array} [seed] A set of elements to match against - */ - select = Sizzle.select = function(selector, context, results, seed) { - var i, tokens, token, type, find, - compiled = typeof selector === "function" && selector, - match = !seed && tokenize((selector = compiled.selector || selector)); - - results = results || []; - - // Try to minimize operations if there is no seed and only one group - if (match.length === 1) { - - // Take a shortcut and set the context if the root selector is an ID - tokens = match[0] = match[0].slice(0); - if (tokens.length > 2 && (token = tokens[0]).type === "ID" && support.getById && context.nodeType === 9 && documentIsHTML && Expr.relative[tokens[1].type]) { - - context = (Expr.find["ID"](token.matches[0].replace(runescape, funescape), context) || [])[0]; - if (!context) { - return results; - - // Precompiled matchers will still verify ancestry, so step up a level - } else if (compiled) { - context = context.parentNode; - } - - selector = selector.slice(tokens.shift().value.length); - } - - // Fetch a seed set for right-to-left matching - i = matchExpr["needsContext"].test(selector) ? 0 : tokens.length; - while (i--) { - token = tokens[i]; - - // Abort if we hit a combinator - if (Expr.relative[(type = token.type)]) { - break; - } - if ((find = Expr.find[type])) { - // Search, expanding context for leading sibling combinators - if ((seed = find( - token.matches[0].replace(runescape, funescape), - rsibling.test(tokens[0].type) && testContext(context.parentNode) || context))) { - - // If seed is empty or no tokens remain, we can return early - tokens.splice(i, 1); - selector = seed.length && toSelector(tokens); - if (!selector) { - push.apply(results, seed); - return results; - } - - break; - } - } - } - } - - // Compile and execute a filtering function if one is not provided - // Provide `match` to avoid retokenization if we modified the selector above - (compiled || compile(selector, match))( - seed, - context, !documentIsHTML, - results, - rsibling.test(selector) && testContext(context.parentNode) || context); - return results; - }; - - // One-time assignments - - // Sort stability - support.sortStable = expando.split("").sort(sortOrder).join("") === expando; - - // Support: Chrome 14-35+ - // Always assume duplicates if they aren't passed to the comparison function - support.detectDuplicates = !! hasDuplicate; - - // Initialize against the default document - setDocument(); - - // Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) - // Detached nodes confoundingly follow *each other* - support.sortDetached = assert(function(div1) { - // Should return 1, but returns 4 (following) - return div1.compareDocumentPosition(document.createElement("div")) & 1; - }); - - // Support: IE<8 - // Prevent attribute/property "interpolation" - // http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx - if (!assert(function(div) { - div.innerHTML = ""; - return div.firstChild.getAttribute("href") === "#"; - })) { - addHandle("type|href|height|width", function(elem, name, isXML) { - if (!isXML) { - return elem.getAttribute(name, name.toLowerCase() === "type" ? 1 : 2); - } - }); - } - - // Support: IE<9 - // Use defaultValue in place of getAttribute("value") - if (!support.attributes || !assert(function(div) { - div.innerHTML = ""; - div.firstChild.setAttribute("value", ""); - return div.firstChild.getAttribute("value") === ""; - })) { - addHandle("value", function(elem, name, isXML) { - if (!isXML && elem.nodeName.toLowerCase() === "input") { - return elem.defaultValue; - } - }); - } - - // Support: IE<9 - // Use getAttributeNode to fetch booleans when getAttribute lies - if (!assert(function(div) { - return div.getAttribute("disabled") == null; - })) { - addHandle(booleans, function(elem, name, isXML) { - var val; - if (!isXML) { - return elem[name] === true ? name.toLowerCase() : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null; - } - }); - } - - return Sizzle; - - })(window); - - - - jQuery.find = Sizzle; - jQuery.expr = Sizzle.selectors; - jQuery.expr[":"] = jQuery.expr.pseudos; - jQuery.unique = Sizzle.uniqueSort; - jQuery.text = Sizzle.getText; - jQuery.isXMLDoc = Sizzle.isXML; - jQuery.contains = Sizzle.contains; - - - - var rneedsContext = jQuery.expr.match.needsContext; - - var rsingleTag = (/^<(\w+)\s*\/?>(?:<\/\1>|)$/); - - - - var risSimple = /^.[^:#\[\.,]*$/; - - // Implement the identical functionality for filter and not - function winnow(elements, qualifier, not) { - if (jQuery.isFunction(qualifier)) { - return jQuery.grep(elements, function(elem, i) { - /* jshint -W018 */ - return !!qualifier.call(elem, i, elem) !== not; - }); - - } - - if (qualifier.nodeType) { - return jQuery.grep(elements, function(elem) { - return (elem === qualifier) !== not; - }); - - } - - if (typeof qualifier === "string") { - if (risSimple.test(qualifier)) { - return jQuery.filter(qualifier, elements, not); - } - - qualifier = jQuery.filter(qualifier, elements); - } - - return jQuery.grep(elements, function(elem) { - return (jQuery.inArray(elem, qualifier) >= 0) !== not; - }); - } - - jQuery.filter = function(expr, elems, not) { - var elem = elems[0]; - - if (not) { - expr = ":not(" + expr + ")"; - } - - return elems.length === 1 && elem.nodeType === 1 ? jQuery.find.matchesSelector(elem, expr) ? [elem] : [] : jQuery.find.matches(expr, jQuery.grep(elems, function(elem) { - return elem.nodeType === 1; - })); - }; - - jQuery.fn.extend({ - find: function(selector) { - var i, - ret = [], - self = this, - len = self.length; - - if (typeof selector !== "string") { - return this.pushStack(jQuery(selector).filter(function() { - for (i = 0; i < len; i++) { - if (jQuery.contains(self[i], this)) { - return true; - } - } - })); - } - - for (i = 0; i < len; i++) { - jQuery.find(selector, self[i], ret); - } - - // Needed because $( selector, context ) becomes $( context ).find( selector ) - ret = this.pushStack(len > 1 ? jQuery.unique(ret) : ret); - ret.selector = this.selector ? this.selector + " " + selector : selector; - return ret; - }, - filter: function(selector) { - return this.pushStack(winnow(this, selector || [], false)); - }, - not: function(selector) { - return this.pushStack(winnow(this, selector || [], true)); - }, - is: function(selector) { - return !!winnow( - this, - - // If this is a positional/relative selector, check membership in the returned set - // so $("p:first").is("p:last") won't return true for a doc with two "p". - typeof selector === "string" && rneedsContext.test(selector) ? jQuery(selector) : selector || [], - false).length; - } - }); - - - // Initialize a jQuery object - - - // A central reference to the root jQuery(document) - var rootjQuery, - - // Use the correct document accordingly with window argument (sandbox) - document = window.document, - - // A simple way to check for HTML strings - // Prioritize #id over to avoid XSS via location.hash (#9521) - // Strict HTML recognition (#11290: must start with <) - rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, - - init = jQuery.fn.init = function(selector, context) { - var match, elem; - - // HANDLE: $(""), $(null), $(undefined), $(false) - if (!selector) { - return this; - } - - // Handle HTML strings - if (typeof selector === "string") { - if (selector.charAt(0) === "<" && selector.charAt(selector.length - 1) === ">" && selector.length >= 3) { - // Assume that strings that start and end with <> are HTML and skip the regex check - match = [null, selector, null]; - - } else { - match = rquickExpr.exec(selector); - } - - // Match html or make sure no context is specified for #id - if (match && (match[1] || !context)) { - - // HANDLE: $(html) -> $(array) - if (match[1]) { - context = context instanceof jQuery ? context[0] : context; - - // scripts is true for back-compat - // Intentionally let the error be thrown if parseHTML is not present - jQuery.merge(this, jQuery.parseHTML( - match[1], - context && context.nodeType ? context.ownerDocument || context : document, - true)); - - // HANDLE: $(html, props) - if (rsingleTag.test(match[1]) && jQuery.isPlainObject(context)) { - for (match in context) { - // Properties of context are called as methods if possible - if (jQuery.isFunction(this[match])) { - this[match](context[match]); - - // ...and otherwise set as attributes - } else { - this.attr(match, context[match]); - } - } - } - - return this; - - // HANDLE: $(#id) - } else { - elem = document.getElementById(match[2]); - - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - if (elem && elem.parentNode) { - // Handle the case where IE and Opera return items - // by name instead of ID - if (elem.id !== match[2]) { - return rootjQuery.find(selector); - } - - // Otherwise, we inject the element directly into the jQuery object - this.length = 1; - this[0] = elem; - } - - this.context = document; - this.selector = selector; - return this; - } - - // HANDLE: $(expr, $(...)) - } else if (!context || context.jquery) { - return (context || rootjQuery).find(selector); - - // HANDLE: $(expr, context) - // (which is just equivalent to: $(context).find(expr) - } else { - return this.constructor(context).find(selector); - } - - // HANDLE: $(DOMElement) - } else if (selector.nodeType) { - this.context = this[0] = selector; - this.length = 1; - return this; - - // HANDLE: $(function) - // Shortcut for document ready - } else if (jQuery.isFunction(selector)) { - return typeof rootjQuery.ready !== "undefined" ? rootjQuery.ready(selector) : - // Execute immediately if ready is not present - selector(jQuery); - } - - if (selector.selector !== undefined) { - this.selector = selector.selector; - this.context = selector.context; - } - - return jQuery.makeArray(selector, this); - }; - - // Give the init function the jQuery prototype for later instantiation - init.prototype = jQuery.fn; - - // Initialize central reference - rootjQuery = jQuery(document); - - - var rparentsprev = /^(?:parents|prev(?:Until|All))/, - // methods guaranteed to produce a unique set when starting from a unique set - guaranteedUnique = { - children: true, - contents: true, - next: true, - prev: true - }; - - jQuery.extend({ - dir: function(elem, dir, until) { - var matched = [], - cur = elem[dir]; - - while (cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery(cur).is(until))) { - if (cur.nodeType === 1) { - matched.push(cur); - } - cur = cur[dir]; - } - return matched; - }, - - sibling: function(n, elem) { - var r = []; - - for (; n; n = n.nextSibling) { - if (n.nodeType === 1 && n !== elem) { - r.push(n); - } - } - - return r; - } - }); - - jQuery.fn.extend({ - has: function(target) { - var i, - targets = jQuery(target, this), - len = targets.length; - - return this.filter(function() { - for (i = 0; i < len; i++) { - if (jQuery.contains(this, targets[i])) { - return true; - } - } - }); - }, - - closest: function(selectors, context) { - var cur, - i = 0, - l = this.length, - matched = [], - pos = rneedsContext.test(selectors) || typeof selectors !== "string" ? jQuery(selectors, context || this.context) : 0; - - for (; i < l; i++) { - for (cur = this[i]; cur && cur !== context; cur = cur.parentNode) { - // Always skip document fragments - if (cur.nodeType < 11 && (pos ? pos.index(cur) > -1 : - - // Don't pass non-elements to Sizzle - cur.nodeType === 1 && jQuery.find.matchesSelector(cur, selectors))) { - - matched.push(cur); - break; - } - } - } - - return this.pushStack(matched.length > 1 ? jQuery.unique(matched) : matched); - }, - - // Determine the position of an element within - // the matched set of elements - index: function(elem) { - - // No argument, return index in parent - if (!elem) { - return (this[0] && this[0].parentNode) ? this.first().prevAll().length : -1; - } - - // index in selector - if (typeof elem === "string") { - return jQuery.inArray(this[0], jQuery(elem)); - } - - // Locate the position of the desired element - return jQuery.inArray( - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[0] : elem, this); - }, - - add: function(selector, context) { - return this.pushStack( - jQuery.unique( - jQuery.merge(this.get(), jQuery(selector, context)))); - }, - - addBack: function(selector) { - return this.add(selector == null ? this.prevObject : this.prevObject.filter(selector)); - } - }); - - function sibling(cur, dir) { - do { - cur = cur[dir]; - } while (cur && cur.nodeType !== 1); - - return cur; - } - - jQuery.each({ - parent: function(elem) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function(elem) { - return jQuery.dir(elem, "parentNode"); - }, - parentsUntil: function(elem, i, until) { - return jQuery.dir(elem, "parentNode", until); - }, - next: function(elem) { - return sibling(elem, "nextSibling"); - }, - prev: function(elem) { - return sibling(elem, "previousSibling"); - }, - nextAll: function(elem) { - return jQuery.dir(elem, "nextSibling"); - }, - prevAll: function(elem) { - return jQuery.dir(elem, "previousSibling"); - }, - nextUntil: function(elem, i, until) { - return jQuery.dir(elem, "nextSibling", until); - }, - prevUntil: function(elem, i, until) { - return jQuery.dir(elem, "previousSibling", until); - }, - siblings: function(elem) { - return jQuery.sibling((elem.parentNode || {}).firstChild, elem); - }, - children: function(elem) { - return jQuery.sibling(elem.firstChild); - }, - contents: function(elem) { - return jQuery.nodeName(elem, "iframe") ? elem.contentDocument || elem.contentWindow.document : jQuery.merge([], elem.childNodes); - } - }, function(name, fn) { - jQuery.fn[name] = function(until, selector) { - var ret = jQuery.map(this, fn, until); - - if (name.slice(-5) !== "Until") { - selector = until; - } - - if (selector && typeof selector === "string") { - ret = jQuery.filter(selector, ret); - } - - if (this.length > 1) { - // Remove duplicates - if (!guaranteedUnique[name]) { - ret = jQuery.unique(ret); - } - - // Reverse order for parents* and prev-derivatives - if (rparentsprev.test(name)) { - ret = ret.reverse(); - } - } - - return this.pushStack(ret); - }; - }); - var rnotwhite = (/\S+/g); - - - - // String to Object options format cache - var optionsCache = {}; - - // Convert String-formatted options into Object-formatted ones and store in cache - function createOptions(options) { - var object = optionsCache[options] = {}; - jQuery.each(options.match(rnotwhite) || [], function(_, flag) { - object[flag] = true; - }); - return object; - } - - /* - * Create a callback list using the following parameters: - * - * options: an optional list of space-separated options that will change how - * the callback list behaves or a more traditional option object - * - * By default a callback list will act like an event callback list and can be - * "fired" multiple times. - * - * Possible options: - * - * once: will ensure the callback list can only be fired once (like a Deferred) - * - * memory: will keep track of previous values and will call any callback added - * after the list has been fired right away with the latest "memorized" - * values (like a Deferred) - * - * unique: will ensure a callback can only be added once (no duplicate in the list) - * - * stopOnFalse: interrupt callings when a callback returns false - * - */ - jQuery.Callbacks = function(options) { - - // Convert options from String-formatted to Object-formatted if needed - // (we check in cache first) - options = typeof options === "string" ? (optionsCache[options] || createOptions(options)) : jQuery.extend({}, options); - - var // Flag to know if list is currently firing - firing, - // Last fire value (for non-forgettable lists) - memory, - // Flag to know if list was already fired - fired, - // End of the loop when firing - firingLength, - // Index of currently firing callback (modified by remove if needed) - firingIndex, - // First callback to fire (used internally by add and fireWith) - firingStart, - // Actual callback list - list = [], - // Stack of fire calls for repeatable lists - stack = !options.once && [], - // Fire callbacks - fire = function(data) { - memory = options.memory && data; - fired = true; - firingIndex = firingStart || 0; - firingStart = 0; - firingLength = list.length; - firing = true; - for (; list && firingIndex < firingLength; firingIndex++) { - if (list[firingIndex].apply(data[0], data[1]) === false && options.stopOnFalse) { - memory = false; // To prevent further calls using add - break; - } - } - firing = false; - if (list) { - if (stack) { - if (stack.length) { - fire(stack.shift()); - } - } else if (memory) { - list = []; - } else { - self.disable(); - } - } - }, - // Actual Callbacks object - self = { - // Add a callback or a collection of callbacks to the list - add: function() { - if (list) { - // First, we save the current length - var start = list.length; - (function add(args) { - jQuery.each(args, function(_, arg) { - var type = jQuery.type(arg); - if (type === "function") { - if (!options.unique || !self.has(arg)) { - list.push(arg); - } - } else if (arg && arg.length && type !== "string") { - // Inspect recursively - add(arg); - } - }); - })(arguments); - // Do we need to add the callbacks to the - // current firing batch? - if (firing) { - firingLength = list.length; - // With memory, if we're not firing then - // we should call right away - } else if (memory) { - firingStart = start; - fire(memory); - } - } - return this; - }, - // Remove a callback from the list - remove: function() { - if (list) { - jQuery.each(arguments, function(_, arg) { - var index; - while ((index = jQuery.inArray(arg, list, index)) > -1) { - list.splice(index, 1); - // Handle firing indexes - if (firing) { - if (index <= firingLength) { - firingLength--; - } - if (index <= firingIndex) { - firingIndex--; - } - } - } - }); - } - return this; - }, - // Check if a given callback is in the list. - // If no argument is given, return whether or not list has callbacks attached. - has: function(fn) { - return fn ? jQuery.inArray(fn, list) > -1 : !! (list && list.length); - }, - // Remove all callbacks from the list - empty: function() { - list = []; - firingLength = 0; - return this; - }, - // Have the list do nothing anymore - disable: function() { - list = stack = memory = undefined; - return this; - }, - // Is it disabled? - disabled: function() { - return !list; - }, - // Lock the list in its current state - lock: function() { - stack = undefined; - if (!memory) { - self.disable(); - } - return this; - }, - // Is it locked? - locked: function() { - return !stack; - }, - // Call all callbacks with the given context and arguments - fireWith: function(context, args) { - if (list && (!fired || stack)) { - args = args || []; - args = [context, args.slice ? args.slice() : args]; - if (firing) { - stack.push(args); - } else { - fire(args); - } - } - return this; - }, - // Call all the callbacks with the given arguments - fire: function() { - self.fireWith(this, arguments); - return this; - }, - // To know if the callbacks have already been called at least once - fired: function() { - return !!fired; - } - }; - - return self; - }; - - - jQuery.extend({ - - Deferred: function(func) { - var tuples = [ - // action, add listener, listener list, final state - ["resolve", "done", jQuery.Callbacks("once memory"), "resolved"], - ["reject", "fail", jQuery.Callbacks("once memory"), "rejected"], - ["notify", "progress", jQuery.Callbacks("memory")] - ], - state = "pending", - promise = { - state: function() { - return state; - }, - always: function() { - deferred.done(arguments).fail(arguments); - return this; - }, - then: function( /* fnDone, fnFail, fnProgress */ ) { - var fns = arguments; - return jQuery.Deferred(function(newDefer) { - jQuery.each(tuples, function(i, tuple) { - var fn = jQuery.isFunction(fns[i]) && fns[i]; - // deferred[ done | fail | progress ] for forwarding actions to newDefer - deferred[tuple[1]](function() { - var returned = fn && fn.apply(this, arguments); - if (returned && jQuery.isFunction(returned.promise)) { - returned.promise() - .done(newDefer.resolve) - .fail(newDefer.reject) - .progress(newDefer.notify); - } else { - newDefer[tuple[0] + "With"](this === promise ? newDefer.promise() : this, fn ? [returned] : arguments); - } - }); - }); - fns = null; - }).promise(); - }, - // Get a promise for this deferred - // If obj is provided, the promise aspect is added to the object - promise: function(obj) { - return obj != null ? jQuery.extend(obj, promise) : promise; - } - }, - deferred = {}; - - // Keep pipe for back-compat - promise.pipe = promise.then; - - // Add list-specific methods - jQuery.each(tuples, function(i, tuple) { - var list = tuple[2], - stateString = tuple[3]; - - // promise[ done | fail | progress ] = list.add - promise[tuple[1]] = list.add; - - // Handle state - if (stateString) { - list.add(function() { - // state = [ resolved | rejected ] - state = stateString; - - // [ reject_list | resolve_list ].disable; progress_list.lock - }, tuples[i ^ 1][2].disable, tuples[2][2].lock); - } - - // deferred[ resolve | reject | notify ] - deferred[tuple[0]] = function() { - deferred[tuple[0] + "With"](this === deferred ? promise : this, arguments); - return this; - }; - deferred[tuple[0] + "With"] = list.fireWith; - }); - - // Make the deferred a promise - promise.promise(deferred); - - // Call given func if any - if (func) { - func.call(deferred, deferred); - } - - // All done! - return deferred; - }, - - // Deferred helper - when: function(subordinate /* , ..., subordinateN */ ) { - var i = 0, - resolveValues = slice.call(arguments), - length = resolveValues.length, - - // the count of uncompleted subordinates - remaining = length !== 1 || (subordinate && jQuery.isFunction(subordinate.promise)) ? length : 0, - - // the master Deferred. If resolveValues consist of only a single Deferred, just use that. - deferred = remaining === 1 ? subordinate : jQuery.Deferred(), - - // Update function for both resolve and progress values - updateFunc = function(i, contexts, values) { - return function(value) { - contexts[i] = this; - values[i] = arguments.length > 1 ? slice.call(arguments) : value; - if (values === progressValues) { - deferred.notifyWith(contexts, values); - - } else if (!(--remaining)) { - deferred.resolveWith(contexts, values); - } - }; - }, - - progressValues, progressContexts, resolveContexts; - - // add listeners to Deferred subordinates; treat others as resolved - if (length > 1) { - progressValues = new Array(length); - progressContexts = new Array(length); - resolveContexts = new Array(length); - for (; i < length; i++) { - if (resolveValues[i] && jQuery.isFunction(resolveValues[i].promise)) { - resolveValues[i].promise() - .done(updateFunc(i, resolveContexts, resolveValues)) - .fail(deferred.reject) - .progress(updateFunc(i, progressContexts, progressValues)); - } else { - --remaining; - } - } - } - - // if we're not waiting on anything, resolve the master - if (!remaining) { - deferred.resolveWith(resolveContexts, resolveValues); - } - - return deferred.promise(); - } - }); - - - // The deferred used on DOM ready - var readyList; - - jQuery.fn.ready = function(fn) { - // Add the callback - jQuery.ready.promise().done(fn); - - return this; - }; - - jQuery.extend({ - // Is the DOM ready to be used? Set to true once it occurs. - isReady: false, - - // A counter to track how many items to wait for before - // the ready event fires. See #6781 - readyWait: 1, - - // Hold (or release) the ready event - holdReady: function(hold) { - if (hold) { - jQuery.readyWait++; - } else { - jQuery.ready(true); - } - }, - - // Handle when the DOM is ready - ready: function(wait) { - - // Abort if there are pending holds or we're already ready - if (wait === true ? --jQuery.readyWait : jQuery.isReady) { - return; - } - - // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). - if (!document.body) { - return setTimeout(jQuery.ready); - } - - // Remember that the DOM is ready - jQuery.isReady = true; - - // If a normal DOM Ready event fired, decrement, and wait if need be - if (wait !== true && --jQuery.readyWait > 0) { - return; - } - - // If there are functions bound, to execute - readyList.resolveWith(document, [jQuery]); - - // Trigger any bound ready events - if (jQuery.fn.triggerHandler) { - jQuery(document).triggerHandler("ready"); - jQuery(document).off("ready"); - } - } - }); - - /** - * Clean-up method for dom ready events - */ - function detach() { - if (document.addEventListener) { - document.removeEventListener("DOMContentLoaded", completed, false); - window.removeEventListener("load", completed, false); - - } else { - document.detachEvent("onreadystatechange", completed); - window.detachEvent("onload", completed); - } - } - - /** - * The ready event handler and self cleanup method - */ - function completed() { - // readyState === "complete" is good enough for us to call the dom ready in oldIE - if (document.addEventListener || event.type === "load" || document.readyState === "complete") { - detach(); - jQuery.ready(); - } - } - - jQuery.ready.promise = function(obj) { - if (!readyList) { - - readyList = jQuery.Deferred(); - - // Catch cases where $(document).ready() is called after the browser event has already occurred. - // we once tried to use readyState "interactive" here, but it caused issues like the one - // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15 - if (document.readyState === "complete") { - // Handle it asynchronously to allow scripts the opportunity to delay ready - setTimeout(jQuery.ready); - - // Standards-based browsers support DOMContentLoaded - } else if (document.addEventListener) { - // Use the handy event callback - document.addEventListener("DOMContentLoaded", completed, false); - - // A fallback to window.onload, that will always work - window.addEventListener("load", completed, false); - - // If IE event model is used - } else { - // Ensure firing before onload, maybe late but safe also for iframes - document.attachEvent("onreadystatechange", completed); - - // A fallback to window.onload, that will always work - window.attachEvent("onload", completed); - - // If IE and not a frame - // continually check to see if the document is ready - var top = false; - - try { - top = window.frameElement == null && document.documentElement; - } catch (e) {} - - if (top && top.doScroll) { - (function doScrollCheck() { - if (!jQuery.isReady) { - - try { - // Use the trick by Diego Perini - // http://javascript.nwbox.com/IEContentLoaded/ - top.doScroll("left"); - } catch (e) { - return setTimeout(doScrollCheck, 50); - } - - // detach all dom ready events - detach(); - - // and execute any waiting functions - jQuery.ready(); - } - })(); - } - } - } - return readyList.promise(obj); - }; - - - var strundefined = typeof undefined; - - - - // Support: IE<9 - // Iteration over object's inherited properties before its own - var i; - for (i in jQuery(support)) { - break; - } - support.ownLast = i !== "0"; - - // Note: most support tests are defined in their respective modules. - // false until the test is run - support.inlineBlockNeedsLayout = false; - - // Execute ASAP in case we need to set body.style.zoom - jQuery(function() { - // Minified: var a,b,c,d - var val, div, body, container; - - body = document.getElementsByTagName("body")[0]; - if (!body || !body.style) { - // Return for frameset docs that don't have a body - return; - } - - // Setup - div = document.createElement("div"); - container = document.createElement("div"); - container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px"; - body.appendChild(container).appendChild(div); - - if (typeof div.style.zoom !== strundefined) { - // Support: IE<8 - // Check if natively block-level elements act like inline-block - // elements when setting their display to 'inline' and giving - // them layout - div.style.cssText = "display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1"; - - support.inlineBlockNeedsLayout = val = div.offsetWidth === 3; - if (val) { - // Prevent IE 6 from affecting layout for positioned elements #11048 - // Prevent IE from shrinking the body in IE 7 mode #12869 - // Support: IE<8 - body.style.zoom = 1; - } - } - - body.removeChild(container); - }); - - - - - (function() { - var div = document.createElement("div"); - - // Execute the test only if not already executed in another module. - if (support.deleteExpando == null) { - // Support: IE<9 - support.deleteExpando = true; - try { - delete div.test; - } catch (e) { - support.deleteExpando = false; - } - } - - // Null elements to avoid leaks in IE. - div = null; - })(); - - - /** - * Determines whether an object can have data - */ - jQuery.acceptData = function(elem) { - var noData = jQuery.noData[(elem.nodeName + " ").toLowerCase()], - nodeType = +elem.nodeType || 1; - - // Do not set data on non-element DOM nodes because it will not be cleared (#8335). - return nodeType !== 1 && nodeType !== 9 ? false : - - // Nodes accept data unless otherwise specified; rejection can be conditional - !noData || noData !== true && elem.getAttribute("classid") === noData; - }; - - - var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, - rmultiDash = /([A-Z])/g; - - function dataAttr(elem, key, data) { - // If nothing was found internally, try to fetch any - // data from the HTML5 data-* attribute - if (data === undefined && elem.nodeType === 1) { - - var name = "data-" + key.replace(rmultiDash, "-$1").toLowerCase(); - - data = elem.getAttribute(name); - - if (typeof data === "string") { - try { - data = data === "true" ? true : data === "false" ? false : data === "null" ? null : - // Only convert to a number if it doesn't change the string - + - data + "" === data ? +data : rbrace.test(data) ? jQuery.parseJSON(data) : data; - } catch (e) {} - - // Make sure we set the data so it isn't changed later - jQuery.data(elem, key, data); - - } else { - data = undefined; - } - } - - return data; - } - - // checks a cache object for emptiness - function isEmptyDataObject(obj) { - var name; - for (name in obj) { - - // if the public data object is empty, the private is still empty - if (name === "data" && jQuery.isEmptyObject(obj[name])) { - continue; - } - if (name !== "toJSON") { - return false; - } - } - - return true; - } - - function internalData(elem, name, data, pvt /* Internal Use Only */ ) { - if (!jQuery.acceptData(elem)) { - return; - } - - var ret, thisCache, - internalKey = jQuery.expando, - - // We have to handle DOM nodes and JS objects differently because IE6-7 - // can't GC object references properly across the DOM-JS boundary - isNode = elem.nodeType, - - // Only DOM nodes need the global jQuery cache; JS object data is - // attached directly to the object so GC can occur automatically - cache = isNode ? jQuery.cache : elem, - - // Only defining an ID for JS objects if its cache already exists allows - // the code to shortcut on the same path as a DOM node with no cache - id = isNode ? elem[internalKey] : elem[internalKey] && internalKey; - - // Avoid doing any more work than we need to when trying to get data on an - // object that has no data at all - if ((!id || !cache[id] || (!pvt && !cache[id].data)) && data === undefined && typeof name === "string") { - return; - } - - if (!id) { - // Only DOM nodes need a new unique ID for each element since their data - // ends up in the global cache - if (isNode) { - id = elem[internalKey] = deletedIds.pop() || jQuery.guid++; - } else { - id = internalKey; - } - } - - if (!cache[id]) { - // Avoid exposing jQuery metadata on plain JS objects when the object - // is serialized using JSON.stringify - cache[id] = isNode ? {} : { - toJSON: jQuery.noop - }; - } - - // An object can be passed to jQuery.data instead of a key/value pair; this gets - // shallow copied over onto the existing cache - if (typeof name === "object" || typeof name === "function") { - if (pvt) { - cache[id] = jQuery.extend(cache[id], name); - } else { - cache[id].data = jQuery.extend(cache[id].data, name); - } - } - - thisCache = cache[id]; - - // jQuery data() is stored in a separate object inside the object's internal data - // cache in order to avoid key collisions between internal data and user-defined - // data. - if (!pvt) { - if (!thisCache.data) { - thisCache.data = {}; - } - - thisCache = thisCache.data; - } - - if (data !== undefined) { - thisCache[jQuery.camelCase(name)] = data; - } - - // Check for both converted-to-camel and non-converted data property names - // If a data property was specified - if (typeof name === "string") { - - // First Try to find as-is property data - ret = thisCache[name]; - - // Test for null|undefined property data - if (ret == null) { - - // Try to find the camelCased property - ret = thisCache[jQuery.camelCase(name)]; - } - } else { - ret = thisCache; - } - - return ret; - } - - function internalRemoveData(elem, name, pvt) { - if (!jQuery.acceptData(elem)) { - return; - } - - var thisCache, i, - isNode = elem.nodeType, - - // See jQuery.data for more information - cache = isNode ? jQuery.cache : elem, - id = isNode ? elem[jQuery.expando] : jQuery.expando; - - // If there is already no cache entry for this object, there is no - // purpose in continuing - if (!cache[id]) { - return; - } - - if (name) { - - thisCache = pvt ? cache[id] : cache[id].data; - - if (thisCache) { - - // Support array or space separated string names for data keys - if (!jQuery.isArray(name)) { - - // try the string as a key before any manipulation - if (name in thisCache) { - name = [name]; - } else { - - // split the camel cased version by spaces unless a key with the spaces exists - name = jQuery.camelCase(name); - if (name in thisCache) { - name = [name]; - } else { - name = name.split(" "); - } - } - } else { - // If "name" is an array of keys... - // When data is initially created, via ("key", "val") signature, - // keys will be converted to camelCase. - // Since there is no way to tell _how_ a key was added, remove - // both plain key and camelCase key. #12786 - // This will only penalize the array argument path. - name = name.concat(jQuery.map(name, jQuery.camelCase)); - } - - i = name.length; - while (i--) { - delete thisCache[name[i]]; - } - - // If there is no data left in the cache, we want to continue - // and let the cache object itself get destroyed - if (pvt ? !isEmptyDataObject(thisCache) : !jQuery.isEmptyObject(thisCache)) { - return; - } - } - } - - // See jQuery.data for more information - if (!pvt) { - delete cache[id].data; - - // Don't destroy the parent cache unless the internal data object - // had been the only thing left in it - if (!isEmptyDataObject(cache[id])) { - return; - } - } - - // Destroy the cache - if (isNode) { - jQuery.cleanData([elem], true); - - // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080) - /* jshint eqeqeq: false */ - } else if (support.deleteExpando || cache != cache.window) { - /* jshint eqeqeq: true */ - delete cache[id]; - - // When all else fails, null - } else { - cache[id] = null; - } - } - - jQuery.extend({ - cache: {}, - - // The following elements (space-suffixed to avoid Object.prototype collisions) - // throw uncatchable exceptions if you attempt to set expando properties - noData: { - "applet ": true, - "embed ": true, - // ...but Flash objects (which have this classid) *can* handle expandos - "object ": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" - }, - - hasData: function(elem) { - elem = elem.nodeType ? jQuery.cache[elem[jQuery.expando]] : elem[jQuery.expando]; - return !!elem && !isEmptyDataObject(elem); - }, - - data: function(elem, name, data) { - return internalData(elem, name, data); - }, - - removeData: function(elem, name) { - return internalRemoveData(elem, name); - }, - - // For internal use only. - _data: function(elem, name, data) { - return internalData(elem, name, data, true); - }, - - _removeData: function(elem, name) { - return internalRemoveData(elem, name, true); - } - }); - - jQuery.fn.extend({ - data: function(key, value) { - var i, name, data, - elem = this[0], - attrs = elem && elem.attributes; - - // Special expections of .data basically thwart jQuery.access, - // so implement the relevant behavior ourselves - - // Gets all values - if (key === undefined) { - if (this.length) { - data = jQuery.data(elem); - - if (elem.nodeType === 1 && !jQuery._data(elem, "parsedAttrs")) { - i = attrs.length; - while (i--) { - - // Support: IE11+ - // The attrs elements can be null (#14894) - if (attrs[i]) { - name = attrs[i].name; - if (name.indexOf("data-") === 0) { - name = jQuery.camelCase(name.slice(5)); - dataAttr(elem, name, data[name]); - } - } - } - jQuery._data(elem, "parsedAttrs", true); - } - } - - return data; - } - - // Sets multiple values - if (typeof key === "object") { - return this.each(function() { - jQuery.data(this, key); - }); - } - - return arguments.length > 1 ? - - // Sets one value - this.each(function() { - jQuery.data(this, key, value); - }) : - - // Gets one value - // Try to fetch any internally stored data first - elem ? dataAttr(elem, key, jQuery.data(elem, key)) : undefined; - }, - - removeData: function(key) { - return this.each(function() { - jQuery.removeData(this, key); - }); - } - }); - - - jQuery.extend({ - queue: function(elem, type, data) { - var queue; - - if (elem) { - type = (type || "fx") + "queue"; - queue = jQuery._data(elem, type); - - // Speed up dequeue by getting out quickly if this is just a lookup - if (data) { - if (!queue || jQuery.isArray(data)) { - queue = jQuery._data(elem, type, jQuery.makeArray(data)); - } else { - queue.push(data); - } - } - return queue || []; - } - }, - - dequeue: function(elem, type) { - type = type || "fx"; - - var queue = jQuery.queue(elem, type), - startLength = queue.length, - fn = queue.shift(), - hooks = jQuery._queueHooks(elem, type), - next = function() { - jQuery.dequeue(elem, type); - }; - - // If the fx queue is dequeued, always remove the progress sentinel - if (fn === "inprogress") { - fn = queue.shift(); - startLength--; - } - - if (fn) { - - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if (type === "fx") { - queue.unshift("inprogress"); - } - - // clear up the last queue stop function - delete hooks.stop; - fn.call(elem, next, hooks); - } - - if (!startLength && hooks) { - hooks.empty.fire(); - } - }, - - // not intended for public consumption - generates a queueHooks object, or returns the current one - _queueHooks: function(elem, type) { - var key = type + "queueHooks"; - return jQuery._data(elem, key) || jQuery._data(elem, key, { - empty: jQuery.Callbacks("once memory").add(function() { - jQuery._removeData(elem, type + "queue"); - jQuery._removeData(elem, key); - }) - }); - } - }); - - jQuery.fn.extend({ - queue: function(type, data) { - var setter = 2; - - if (typeof type !== "string") { - data = type; - type = "fx"; - setter--; - } - - if (arguments.length < setter) { - return jQuery.queue(this[0], type); - } - - return data === undefined ? this : this.each(function() { - var queue = jQuery.queue(this, type, data); - - // ensure a hooks for this queue - jQuery._queueHooks(this, type); - - if (type === "fx" && queue[0] !== "inprogress") { - jQuery.dequeue(this, type); - } - }); - }, - dequeue: function(type) { - return this.each(function() { - jQuery.dequeue(this, type); - }); - }, - clearQueue: function(type) { - return this.queue(type || "fx", []); - }, - // Get a promise resolved when queues of a certain type - // are emptied (fx is the type by default) - promise: function(type, obj) { - var tmp, - count = 1, - defer = jQuery.Deferred(), - elements = this, - i = this.length, - resolve = function() { - if (!(--count)) { - defer.resolveWith(elements, [elements]); - } - }; - - if (typeof type !== "string") { - obj = type; - type = undefined; - } - type = type || "fx"; - - while (i--) { - tmp = jQuery._data(elements[i], type + "queueHooks"); - if (tmp && tmp.empty) { - count++; - tmp.empty.add(resolve); - } - } - resolve(); - return defer.promise(obj); - } - }); - var pnum = (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source; - - var cssExpand = ["Top", "Right", "Bottom", "Left"]; - - var isHidden = function(elem, el) { - // isHidden might be called from jQuery#filter function; - // in that case, element will be second argument - elem = el || elem; - return jQuery.css(elem, "display") === "none" || !jQuery.contains(elem.ownerDocument, elem); - }; - - - - // Multifunctional method to get and set values of a collection - // The value/s can optionally be executed if it's a function - var access = jQuery.access = function(elems, fn, key, value, chainable, emptyGet, raw) { - var i = 0, - length = elems.length, - bulk = key == null; - - // Sets many values - if (jQuery.type(key) === "object") { - chainable = true; - for (i in key) { - jQuery.access(elems, fn, i, key[i], true, emptyGet, raw); - } - - // Sets one value - } else if (value !== undefined) { - chainable = true; - - if (!jQuery.isFunction(value)) { - raw = true; - } - - if (bulk) { - // Bulk operations run against the entire set - if (raw) { - fn.call(elems, value); - fn = null; - - // ...except when executing function values - } else { - bulk = fn; - fn = function(elem, key, value) { - return bulk.call(jQuery(elem), value); - }; - } - } - - if (fn) { - for (; i < length; i++) { - fn(elems[i], key, raw ? value : value.call(elems[i], i, fn(elems[i], key))); - } - } - } - - return chainable ? elems : - - // Gets - bulk ? fn.call(elems) : length ? fn(elems[0], key) : emptyGet; - }; - var rcheckableType = (/^(?:checkbox|radio)$/i); - - - - (function() { - // Minified: var a,b,c - var input = document.createElement("input"), - div = document.createElement("div"), - fragment = document.createDocumentFragment(); - - // Setup - div.innerHTML = "
a"; - - // IE strips leading whitespace when .innerHTML is used - support.leadingWhitespace = div.firstChild.nodeType === 3; - - // Make sure that tbody elements aren't automatically inserted - // IE will insert them into empty tables - support.tbody = !div.getElementsByTagName("tbody").length; - - // Make sure that link elements get serialized correctly by innerHTML - // This requires a wrapper element in IE - support.htmlSerialize = !! div.getElementsByTagName("link").length; - - // Makes sure cloning an html5 element does not cause problems - // Where outerHTML is undefined, this still works - support.html5Clone = document.createElement("nav").cloneNode(true).outerHTML !== "<:nav>"; - - // Check if a disconnected checkbox will retain its checked - // value of true after appended to the DOM (IE6/7) - input.type = "checkbox"; - input.checked = true; - fragment.appendChild(input); - support.appendChecked = input.checked; - - // Make sure textarea (and checkbox) defaultValue is properly cloned - // Support: IE6-IE11+ - div.innerHTML = ""; - support.noCloneChecked = !! div.cloneNode(true).lastChild.defaultValue; - - // #11217 - WebKit loses check when the name is after the checked attribute - fragment.appendChild(div); - div.innerHTML = ""; - - // Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3 - // old WebKit doesn't clone checked state correctly in fragments - support.checkClone = div.cloneNode(true).cloneNode(true).lastChild.checked; - - // Support: IE<9 - // Opera does not clone events (and typeof div.attachEvent === undefined). - // IE9-10 clones events bound via attachEvent, but they don't trigger with .click() - support.noCloneEvent = true; - if (div.attachEvent) { - div.attachEvent("onclick", function() { - support.noCloneEvent = false; - }); - - div.cloneNode(true).click(); - } - - // Execute the test only if not already executed in another module. - if (support.deleteExpando == null) { - // Support: IE<9 - support.deleteExpando = true; - try { - delete div.test; - } catch (e) { - support.deleteExpando = false; - } - } - })(); - - - (function() { - var i, eventName, - div = document.createElement("div"); - - // Support: IE<9 (lack submit/change bubble), Firefox 23+ (lack focusin event) - for (i in { - submit: true, - change: true, - focusin: true - }) { - eventName = "on" + i; - - if (!(support[i + "Bubbles"] = eventName in window)) { - // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP) - div.setAttribute(eventName, "t"); - support[i + "Bubbles"] = div.attributes[eventName].expando === false; - } - } - - // Null elements to avoid leaks in IE. - div = null; - })(); - - - var rformElems = /^(?:input|select|textarea)$/i, - rkeyEvent = /^key/, - rmouseEvent = /^(?:mouse|pointer|contextmenu)|click/, - rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, - rtypenamespace = /^([^.]*)(?:\.(.+)|)$/; - - function returnTrue() { - return true; - } - - function returnFalse() { - return false; - } - - function safeActiveElement() { - try { - return document.activeElement; - } catch (err) {} - } - - /* - * Helper functions for managing events -- not part of the public interface. - * Props to Dean Edwards' addEvent library for many of the ideas. - */ - jQuery.event = { - - global: {}, - - add: function(elem, types, handler, data, selector) { - var tmp, events, t, handleObjIn, - special, eventHandle, handleObj, - handlers, type, namespaces, origType, - elemData = jQuery._data(elem); - - // Don't attach events to noData or text/comment nodes (but allow plain objects) - if (!elemData) { - return; - } - - // Caller can pass in an object of custom data in lieu of the handler - if (handler.handler) { - handleObjIn = handler; - handler = handleObjIn.handler; - selector = handleObjIn.selector; - } - - // Make sure that the handler has a unique ID, used to find/remove it later - if (!handler.guid) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure and main handler, if this is the first - if (!(events = elemData.events)) { - events = elemData.events = {}; - } - if (!(eventHandle = elemData.handle)) { - eventHandle = elemData.handle = function(e) { - // Discard the second event of a jQuery.event.trigger() and - // when an event is called after a page has unloaded - return typeof jQuery !== strundefined && (!e || jQuery.event.triggered !== e.type) ? jQuery.event.dispatch.apply(eventHandle.elem, arguments) : undefined; - }; - // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events - eventHandle.elem = elem; - } - - // Handle multiple events separated by a space - types = (types || "").match(rnotwhite) || [""]; - t = types.length; - while (t--) { - tmp = rtypenamespace.exec(types[t]) || []; - type = origType = tmp[1]; - namespaces = (tmp[2] || "").split(".").sort(); - - // There *must* be a type, no attaching namespace-only handlers - if (!type) { - continue; - } - - // If event changes its type, use the special event handlers for the changed type - special = jQuery.event.special[type] || {}; - - // If selector defined, determine special event api type, otherwise given type - type = (selector ? special.delegateType : special.bindType) || type; - - // Update special based on newly reset type - special = jQuery.event.special[type] || {}; - - // handleObj is passed to all event handlers - handleObj = jQuery.extend({ - type: type, - origType: origType, - data: data, - handler: handler, - guid: handler.guid, - selector: selector, - needsContext: selector && jQuery.expr.match.needsContext.test(selector), - namespace: namespaces.join(".") - }, handleObjIn); - - // Init the event handler queue if we're the first - if (!(handlers = events[type])) { - handlers = events[type] = []; - handlers.delegateCount = 0; - - // Only use addEventListener/attachEvent if the special events handler returns false - if (!special.setup || special.setup.call(elem, data, namespaces, eventHandle) === false) { - // Bind the global event handler to the element - if (elem.addEventListener) { - elem.addEventListener(type, eventHandle, false); - - } else if (elem.attachEvent) { - elem.attachEvent("on" + type, eventHandle); - } - } - } - - if (special.add) { - special.add.call(elem, handleObj); - - if (!handleObj.handler.guid) { - handleObj.handler.guid = handler.guid; - } - } - - // Add to the element's handler list, delegates in front - if (selector) { - handlers.splice(handlers.delegateCount++, 0, handleObj); - } else { - handlers.push(handleObj); - } - - // Keep track of which events have ever been used, for event optimization - jQuery.event.global[type] = true; - } - - // Nullify elem to prevent memory leaks in IE - elem = null; - }, - - // Detach an event or set of events from an element - remove: function(elem, types, handler, selector, mappedTypes) { - var j, handleObj, tmp, - origCount, t, events, - special, handlers, type, - namespaces, origType, - elemData = jQuery.hasData(elem) && jQuery._data(elem); - - if (!elemData || !(events = elemData.events)) { - return; - } - - // Once for each type.namespace in types; type may be omitted - types = (types || "").match(rnotwhite) || [""]; - t = types.length; - while (t--) { - tmp = rtypenamespace.exec(types[t]) || []; - type = origType = tmp[1]; - namespaces = (tmp[2] || "").split(".").sort(); - - // Unbind all events (on this namespace, if provided) for the element - if (!type) { - for (type in events) { - jQuery.event.remove(elem, type + types[t], handler, selector, true); - } - continue; - } - - special = jQuery.event.special[type] || {}; - type = (selector ? special.delegateType : special.bindType) || type; - handlers = events[type] || []; - tmp = tmp[2] && new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)"); - - // Remove matching events - origCount = j = handlers.length; - while (j--) { - handleObj = handlers[j]; - - if ((mappedTypes || origType === handleObj.origType) && (!handler || handler.guid === handleObj.guid) && (!tmp || tmp.test(handleObj.namespace)) && (!selector || selector === handleObj.selector || selector === "**" && handleObj.selector)) { - handlers.splice(j, 1); - - if (handleObj.selector) { - handlers.delegateCount--; - } - if (special.remove) { - special.remove.call(elem, handleObj); - } - } - } - - // Remove generic event handler if we removed something and no more handlers exist - // (avoids potential for endless recursion during removal of special event handlers) - if (origCount && !handlers.length) { - if (!special.teardown || special.teardown.call(elem, namespaces, elemData.handle) === false) { - jQuery.removeEvent(elem, type, elemData.handle); - } - - delete events[type]; - } - } - - // Remove the expando if it's no longer used - if (jQuery.isEmptyObject(events)) { - delete elemData.handle; - - // removeData also checks for emptiness and clears the expando if empty - // so use it instead of delete - jQuery._removeData(elem, "events"); - } - }, - - trigger: function(event, data, elem, onlyHandlers) { - var handle, ontype, cur, - bubbleType, special, tmp, i, - eventPath = [elem || document], - type = hasOwn.call(event, "type") ? event.type : event, - namespaces = hasOwn.call(event, "namespace") ? event.namespace.split(".") : []; - - cur = tmp = elem = elem || document; - - // Don't do events on text and comment nodes - if (elem.nodeType === 3 || elem.nodeType === 8) { - return; - } - - // focus/blur morphs to focusin/out; ensure we're not firing them right now - if (rfocusMorph.test(type + jQuery.event.triggered)) { - return; - } - - if (type.indexOf(".") >= 0) { - // Namespaced trigger; create a regexp to match event type in handle() - namespaces = type.split("."); - type = namespaces.shift(); - namespaces.sort(); - } - ontype = type.indexOf(":") < 0 && "on" + type; - - // Caller can pass in a jQuery.Event object, Object, or just an event type string - event = event[jQuery.expando] ? event : new jQuery.Event(type, typeof event === "object" && event); - - // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) - event.isTrigger = onlyHandlers ? 2 : 3; - event.namespace = namespaces.join("."); - event.namespace_re = event.namespace ? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)") : null; - - // Clean up the event in case it is being reused - event.result = undefined; - if (!event.target) { - event.target = elem; - } - - // Clone any incoming data and prepend the event, creating the handler arg list - data = data == null ? [event] : jQuery.makeArray(data, [event]); - - // Allow special events to draw outside the lines - special = jQuery.event.special[type] || {}; - if (!onlyHandlers && special.trigger && special.trigger.apply(elem, data) === false) { - return; - } - - // Determine event propagation path in advance, per W3C events spec (#9951) - // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) - if (!onlyHandlers && !special.noBubble && !jQuery.isWindow(elem)) { - - bubbleType = special.delegateType || type; - if (!rfocusMorph.test(bubbleType + type)) { - cur = cur.parentNode; - } - for (; cur; cur = cur.parentNode) { - eventPath.push(cur); - tmp = cur; - } - - // Only add window if we got to document (e.g., not plain obj or detached DOM) - if (tmp === (elem.ownerDocument || document)) { - eventPath.push(tmp.defaultView || tmp.parentWindow || window); - } - } - - // Fire handlers on the event path - i = 0; - while ((cur = eventPath[i++]) && !event.isPropagationStopped()) { - - event.type = i > 1 ? bubbleType : special.bindType || type; - - // jQuery handler - handle = (jQuery._data(cur, "events") || {})[event.type] && jQuery._data(cur, "handle"); - if (handle) { - handle.apply(cur, data); - } - - // Native handler - handle = ontype && cur[ontype]; - if (handle && handle.apply && jQuery.acceptData(cur)) { - event.result = handle.apply(cur, data); - if (event.result === false) { - event.preventDefault(); - } - } - } - event.type = type; - - // If nobody prevented the default action, do it now - if (!onlyHandlers && !event.isDefaultPrevented()) { - - if ((!special._default || special._default.apply(eventPath.pop(), data) === false) && jQuery.acceptData(elem)) { - - // Call a native DOM method on the target with the same name name as the event. - // Can't use an .isFunction() check here because IE6/7 fails that test. - // Don't do default actions on window, that's where global variables be (#6170) - if (ontype && elem[type] && !jQuery.isWindow(elem)) { - - // Don't re-trigger an onFOO event when we call its FOO() method - tmp = elem[ontype]; - - if (tmp) { - elem[ontype] = null; - } - - // Prevent re-triggering of the same event, since we already bubbled it above - jQuery.event.triggered = type; - try { - elem[type](); - } catch (e) { - // IE<9 dies on focus/blur to hidden element (#1486,#12518) - // only reproducible on winXP IE8 native, not IE9 in IE8 mode - } - jQuery.event.triggered = undefined; - - if (tmp) { - elem[ontype] = tmp; - } - } - } - } - - return event.result; - }, - - dispatch: function(event) { - - // Make a writable jQuery.Event from the native event object - event = jQuery.event.fix(event); - - var i, ret, handleObj, matched, j, - handlerQueue = [], - args = slice.call(arguments), - handlers = (jQuery._data(this, "events") || {})[event.type] || [], - special = jQuery.event.special[event.type] || {}; - - // Use the fix-ed jQuery.Event rather than the (read-only) native event - args[0] = event; - event.delegateTarget = this; - - // Call the preDispatch hook for the mapped type, and let it bail if desired - if (special.preDispatch && special.preDispatch.call(this, event) === false) { - return; - } - - // Determine handlers - handlerQueue = jQuery.event.handlers.call(this, event, handlers); - - // Run delegates first; they may want to stop propagation beneath us - i = 0; - while ((matched = handlerQueue[i++]) && !event.isPropagationStopped()) { - event.currentTarget = matched.elem; - - j = 0; - while ((handleObj = matched.handlers[j++]) && !event.isImmediatePropagationStopped()) { - - // Triggered event must either 1) have no namespace, or - // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). - if (!event.namespace_re || event.namespace_re.test(handleObj.namespace)) { - - event.handleObj = handleObj; - event.data = handleObj.data; - - ret = ((jQuery.event.special[handleObj.origType] || {}).handle || handleObj.handler) - .apply(matched.elem, args); - - if (ret !== undefined) { - if ((event.result = ret) === false) { - event.preventDefault(); - event.stopPropagation(); - } - } - } - } - } - - // Call the postDispatch hook for the mapped type - if (special.postDispatch) { - special.postDispatch.call(this, event); - } - - return event.result; - }, - - handlers: function(event, handlers) { - var sel, handleObj, matches, i, - handlerQueue = [], - delegateCount = handlers.delegateCount, - cur = event.target; - - // Find delegate handlers - // Black-hole SVG instance trees (#13180) - // Avoid non-left-click bubbling in Firefox (#3861) - if (delegateCount && cur.nodeType && (!event.button || event.type !== "click")) { - - /* jshint eqeqeq: false */ - for (; cur != this; cur = cur.parentNode || this) { - /* jshint eqeqeq: true */ - - // Don't check non-elements (#13208) - // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) - if (cur.nodeType === 1 && (cur.disabled !== true || event.type !== "click")) { - matches = []; - for (i = 0; i < delegateCount; i++) { - handleObj = handlers[i]; - - // Don't conflict with Object.prototype properties (#13203) - sel = handleObj.selector + " "; - - if (matches[sel] === undefined) { - matches[sel] = handleObj.needsContext ? jQuery(sel, this).index(cur) >= 0 : jQuery.find(sel, this, null, [cur]).length; - } - if (matches[sel]) { - matches.push(handleObj); - } - } - if (matches.length) { - handlerQueue.push({ - elem: cur, - handlers: matches - }); - } - } - } - } - - // Add the remaining (directly-bound) handlers - if (delegateCount < handlers.length) { - handlerQueue.push({ - elem: this, - handlers: handlers.slice(delegateCount) - }); - } - - return handlerQueue; - }, - - fix: function(event) { - if (event[jQuery.expando]) { - return event; - } - - // Create a writable copy of the event object and normalize some properties - var i, prop, copy, - type = event.type, - originalEvent = event, - fixHook = this.fixHooks[type]; - - if (!fixHook) { - this.fixHooks[type] = fixHook = rmouseEvent.test(type) ? this.mouseHooks : rkeyEvent.test(type) ? this.keyHooks : {}; - } - copy = fixHook.props ? this.props.concat(fixHook.props) : this.props; - - event = new jQuery.Event(originalEvent); - - i = copy.length; - while (i--) { - prop = copy[i]; - event[prop] = originalEvent[prop]; - } - - // Support: IE<9 - // Fix target property (#1925) - if (!event.target) { - event.target = originalEvent.srcElement || document; - } - - // Support: Chrome 23+, Safari? - // Target should not be a text node (#504, #13143) - if (event.target.nodeType === 3) { - event.target = event.target.parentNode; - } - - // Support: IE<9 - // For mouse/key events, metaKey==false if it's undefined (#3368, #11328) - event.metaKey = !! event.metaKey; - - return fixHook.filter ? fixHook.filter(event, originalEvent) : event; - }, - - // Includes some event props shared by KeyEvent and MouseEvent - props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), - - fixHooks: {}, - - keyHooks: { - props: "char charCode key keyCode".split(" "), - filter: function(event, original) { - - // Add which for key events - if (event.which == null) { - event.which = original.charCode != null ? original.charCode : original.keyCode; - } - - return event; - } - }, - - mouseHooks: { - props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "), - filter: function(event, original) { - var body, eventDoc, doc, - button = original.button, - fromElement = original.fromElement; - - // Calculate pageX/Y if missing and clientX/Y available - if (event.pageX == null && original.clientX != null) { - eventDoc = event.target.ownerDocument || document; - doc = eventDoc.documentElement; - body = eventDoc.body; - - event.pageX = original.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0); - event.pageY = original.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0); - } - - // Add relatedTarget, if necessary - if (!event.relatedTarget && fromElement) { - event.relatedTarget = fromElement === event.target ? original.toElement : fromElement; - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - // Note: button is not normalized, so don't use it - if (!event.which && button !== undefined) { - event.which = (button & 1 ? 1 : (button & 2 ? 3 : (button & 4 ? 2 : 0))); - } - - return event; - } - }, - - special: { - load: { - // Prevent triggered image.load events from bubbling to window.load - noBubble: true - }, - focus: { - // Fire native event if possible so blur/focus sequence is correct - trigger: function() { - if (this !== safeActiveElement() && this.focus) { - try { - this.focus(); - return false; - } catch (e) { - // Support: IE<9 - // If we error on focus to hidden element (#1486, #12518), - // let .trigger() run the handlers - } - } - }, - delegateType: "focusin" - }, - blur: { - trigger: function() { - if (this === safeActiveElement() && this.blur) { - this.blur(); - return false; - } - }, - delegateType: "focusout" - }, - click: { - // For checkbox, fire native event so checked state will be right - trigger: function() { - if (jQuery.nodeName(this, "input") && this.type === "checkbox" && this.click) { - this.click(); - return false; - } - }, - - // For cross-browser consistency, don't fire native .click() on links - _default: function(event) { - return jQuery.nodeName(event.target, "a"); - } - }, - - beforeunload: { - postDispatch: function(event) { - - // Support: Firefox 20+ - // Firefox doesn't alert if the returnValue field is not set. - if (event.result !== undefined && event.originalEvent) { - event.originalEvent.returnValue = event.result; - } - } - } - }, - - simulate: function(type, elem, event, bubble) { - // Piggyback on a donor event to simulate a different one. - // Fake originalEvent to avoid donor's stopPropagation, but if the - // simulated event prevents default then we do the same on the donor. - var e = jQuery.extend( - new jQuery.Event(), - event, { - type: type, - isSimulated: true, - originalEvent: {} - }); - if (bubble) { - jQuery.event.trigger(e, null, elem); - } else { - jQuery.event.dispatch.call(elem, e); - } - if (e.isDefaultPrevented()) { - event.preventDefault(); - } - } - }; - - jQuery.removeEvent = document.removeEventListener ? function(elem, type, handle) { - if (elem.removeEventListener) { - elem.removeEventListener(type, handle, false); - } - } : function(elem, type, handle) { - var name = "on" + type; - - if (elem.detachEvent) { - - // #8545, #7054, preventing memory leaks for custom events in IE6-8 - // detachEvent needed property on element, by name of that event, to properly expose it to GC - if (typeof elem[name] === strundefined) { - elem[name] = null; - } - - elem.detachEvent(name, handle); - } - }; - - jQuery.Event = function(src, props) { - // Allow instantiation without the 'new' keyword - if (!(this instanceof jQuery.Event)) { - return new jQuery.Event(src, props); - } - - // Event object - if (src && src.type) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = src.defaultPrevented || src.defaultPrevented === undefined && - // Support: IE < 9, Android < 4.0 - src.returnValue === false ? returnTrue : returnFalse; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if (props) { - jQuery.extend(this, props); - } - - // Create a timestamp if incoming event doesn't have one - this.timeStamp = src && src.timeStamp || jQuery.now(); - - // Mark it as fixed - this[jQuery.expando] = true; - }; - - // jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding - // http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html - jQuery.Event.prototype = { - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse, - - preventDefault: function() { - var e = this.originalEvent; - - this.isDefaultPrevented = returnTrue; - if (!e) { - return; - } - - // If preventDefault exists, run it on the original event - if (e.preventDefault) { - e.preventDefault(); - - // Support: IE - // Otherwise set the returnValue property of the original event to false - } else { - e.returnValue = false; - } - }, - stopPropagation: function() { - var e = this.originalEvent; - - this.isPropagationStopped = returnTrue; - if (!e) { - return; - } - // If stopPropagation exists, run it on the original event - if (e.stopPropagation) { - e.stopPropagation(); - } - - // Support: IE - // Set the cancelBubble property of the original event to true - e.cancelBubble = true; - }, - stopImmediatePropagation: function() { - var e = this.originalEvent; - - this.isImmediatePropagationStopped = returnTrue; - - if (e && e.stopImmediatePropagation) { - e.stopImmediatePropagation(); - } - - this.stopPropagation(); - } - }; - - // Create mouseenter/leave events using mouseover/out and event-time checks - jQuery.each({ - mouseenter: "mouseover", - mouseleave: "mouseout", - pointerenter: "pointerover", - pointerleave: "pointerout" - }, function(orig, fix) { - jQuery.event.special[orig] = { - delegateType: fix, - bindType: fix, - - handle: function(event) { - var ret, - target = this, - related = event.relatedTarget, - handleObj = event.handleObj; - - // For mousenter/leave call the handler if related is outside the target. - // NB: No relatedTarget if the mouse left/entered the browser window - if (!related || (related !== target && !jQuery.contains(target, related))) { - event.type = handleObj.origType; - ret = handleObj.handler.apply(this, arguments); - event.type = fix; - } - return ret; - } - }; - }); - - // IE submit delegation - if (!support.submitBubbles) { - - jQuery.event.special.submit = { - setup: function() { - // Only need this for delegated form submit events - if (jQuery.nodeName(this, "form")) { - return false; - } - - // Lazy-add a submit handler when a descendant form may potentially be submitted - jQuery.event.add(this, "click._submit keypress._submit", function(e) { - // Node name check avoids a VML-related crash in IE (#9807) - var elem = e.target, - form = jQuery.nodeName(elem, "input") || jQuery.nodeName(elem, "button") ? elem.form : undefined; - if (form && !jQuery._data(form, "submitBubbles")) { - jQuery.event.add(form, "submit._submit", function(event) { - event._submit_bubble = true; - }); - jQuery._data(form, "submitBubbles", true); - } - }); - // return undefined since we don't need an event listener - }, - - postDispatch: function(event) { - // If form was submitted by the user, bubble the event up the tree - if (event._submit_bubble) { - delete event._submit_bubble; - if (this.parentNode && !event.isTrigger) { - jQuery.event.simulate("submit", this.parentNode, event, true); - } - } - }, - - teardown: function() { - // Only need this for delegated form submit events - if (jQuery.nodeName(this, "form")) { - return false; - } - - // Remove delegated handlers; cleanData eventually reaps submit handlers attached above - jQuery.event.remove(this, "._submit"); - } - }; - } - - // IE change delegation and checkbox/radio fix - if (!support.changeBubbles) { - - jQuery.event.special.change = { - - setup: function() { - - if (rformElems.test(this.nodeName)) { - // IE doesn't fire change on a check/radio until blur; trigger it on click - // after a propertychange. Eat the blur-change in special.change.handle. - // This still fires onchange a second time for check/radio after blur. - if (this.type === "checkbox" || this.type === "radio") { - jQuery.event.add(this, "propertychange._change", function(event) { - if (event.originalEvent.propertyName === "checked") { - this._just_changed = true; - } - }); - jQuery.event.add(this, "click._change", function(event) { - if (this._just_changed && !event.isTrigger) { - this._just_changed = false; - } - // Allow triggered, simulated change events (#11500) - jQuery.event.simulate("change", this, event, true); - }); - } - return false; - } - // Delegated event; lazy-add a change handler on descendant inputs - jQuery.event.add(this, "beforeactivate._change", function(e) { - var elem = e.target; - - if (rformElems.test(elem.nodeName) && !jQuery._data(elem, "changeBubbles")) { - jQuery.event.add(elem, "change._change", function(event) { - if (this.parentNode && !event.isSimulated && !event.isTrigger) { - jQuery.event.simulate("change", this.parentNode, event, true); - } - }); - jQuery._data(elem, "changeBubbles", true); - } - }); - }, - - handle: function(event) { - var elem = event.target; - - // Swallow native change events from checkbox/radio, we already triggered them above - if (this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox")) { - return event.handleObj.handler.apply(this, arguments); - } - }, - - teardown: function() { - jQuery.event.remove(this, "._change"); - - return !rformElems.test(this.nodeName); - } - }; - } - - // Create "bubbling" focus and blur events - if (!support.focusinBubbles) { - jQuery.each({ - focus: "focusin", - blur: "focusout" - }, function(orig, fix) { - - // Attach a single capturing handler on the document while someone wants focusin/focusout - var handler = function(event) { - jQuery.event.simulate(fix, event.target, jQuery.event.fix(event), true); - }; - - jQuery.event.special[fix] = { - setup: function() { - var doc = this.ownerDocument || this, - attaches = jQuery._data(doc, fix); - - if (!attaches) { - doc.addEventListener(orig, handler, true); - } - jQuery._data(doc, fix, (attaches || 0) + 1); - }, - teardown: function() { - var doc = this.ownerDocument || this, - attaches = jQuery._data(doc, fix) - 1; - - if (!attaches) { - doc.removeEventListener(orig, handler, true); - jQuery._removeData(doc, fix); - } else { - jQuery._data(doc, fix, attaches); - } - } - }; - }); - } - - jQuery.fn.extend({ - - on: function(types, selector, data, fn, /*INTERNAL*/ one) { - var type, origFn; - - // Types can be a map of types/handlers - if (typeof types === "object") { - // ( types-Object, selector, data ) - if (typeof selector !== "string") { - // ( types-Object, data ) - data = data || selector; - selector = undefined; - } - for (type in types) { - this.on(type, selector, data, types[type], one); - } - return this; - } - - if (data == null && fn == null) { - // ( types, fn ) - fn = selector; - data = selector = undefined; - } else if (fn == null) { - if (typeof selector === "string") { - // ( types, selector, fn ) - fn = data; - data = undefined; - } else { - // ( types, data, fn ) - fn = data; - data = selector; - selector = undefined; - } - } - if (fn === false) { - fn = returnFalse; - } else if (!fn) { - return this; - } - - if (one === 1) { - origFn = fn; - fn = function(event) { - // Can use an empty set, since event contains the info - jQuery().off(event); - return origFn.apply(this, arguments); - }; - // Use same guid so caller can remove using origFn - fn.guid = origFn.guid || (origFn.guid = jQuery.guid++); - } - return this.each(function() { - jQuery.event.add(this, types, fn, data, selector); - }); - }, - one: function(types, selector, data, fn) { - return this.on(types, selector, data, fn, 1); - }, - off: function(types, selector, fn) { - var handleObj, type; - if (types && types.preventDefault && types.handleObj) { - // ( event ) dispatched jQuery.Event - handleObj = types.handleObj; - jQuery(types.delegateTarget).off( - handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, - handleObj.selector, - handleObj.handler); - return this; - } - if (typeof types === "object") { - // ( types-object [, selector] ) - for (type in types) { - this.off(type, selector, types[type]); - } - return this; - } - if (selector === false || typeof selector === "function") { - // ( types [, fn] ) - fn = selector; - selector = undefined; - } - if (fn === false) { - fn = returnFalse; - } - return this.each(function() { - jQuery.event.remove(this, types, fn, selector); - }); - }, - - trigger: function(type, data) { - return this.each(function() { - jQuery.event.trigger(type, data, this); - }); - }, - triggerHandler: function(type, data) { - var elem = this[0]; - if (elem) { - return jQuery.event.trigger(type, data, elem, true); - } - } - }); - - - function createSafeFragment(document) { - var list = nodeNames.split("|"), - safeFrag = document.createDocumentFragment(); - - if (safeFrag.createElement) { - while (list.length) { - safeFrag.createElement( - list.pop()); - } - } - return safeFrag; - } - - var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" + "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", - rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g, - rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"), - rleadingWhitespace = /^\s+/, - rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, - rtagName = /<([\w:]+)/, - rtbody = /\s*$/g, - - // We have to close these tags to support XHTML (#13200) - wrapMap = { - option: [1, ""], - legend: [1, "
", "
"], - area: [1, "", ""], - param: [1, "", ""], - thead: [1, "", "
"], - tr: [2, "", "
"], - col: [2, "", "
"], - td: [3, "", "
"], - - // IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags, - // unless wrapped in a div with non-breaking characters in front of it. - _default: support.htmlSerialize ? [0, "", ""] : [1, "X
", "
"] - }, - safeFragment = createSafeFragment(document), - fragmentDiv = safeFragment.appendChild(document.createElement("div")); - - wrapMap.optgroup = wrapMap.option; - wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; - wrapMap.th = wrapMap.td; - - function getAll(context, tag) { - var elems, elem, - i = 0, - found = typeof context.getElementsByTagName !== strundefined ? context.getElementsByTagName(tag || "*") : typeof context.querySelectorAll !== strundefined ? context.querySelectorAll(tag || "*") : undefined; - - if (!found) { - for (found = [], elems = context.childNodes || context; - (elem = elems[i]) != null; i++) { - if (!tag || jQuery.nodeName(elem, tag)) { - found.push(elem); - } else { - jQuery.merge(found, getAll(elem, tag)); - } - } - } - - return tag === undefined || tag && jQuery.nodeName(context, tag) ? jQuery.merge([context], found) : found; - } - - // Used in buildFragment, fixes the defaultChecked property - function fixDefaultChecked(elem) { - if (rcheckableType.test(elem.type)) { - elem.defaultChecked = elem.checked; - } - } - - // Support: IE<8 - // Manipulating tables requires a tbody - function manipulationTarget(elem, content) { - return jQuery.nodeName(elem, "table") && jQuery.nodeName(content.nodeType !== 11 ? content : content.firstChild, "tr") ? - - elem.getElementsByTagName("tbody")[0] || elem.appendChild(elem.ownerDocument.createElement("tbody")) : elem; - } - - // Replace/restore the type attribute of script elements for safe DOM manipulation - function disableScript(elem) { - elem.type = (jQuery.find.attr(elem, "type") !== null) + "/" + elem.type; - return elem; - } - - function restoreScript(elem) { - var match = rscriptTypeMasked.exec(elem.type); - if (match) { - elem.type = match[1]; - } else { - elem.removeAttribute("type"); - } - return elem; - } - - // Mark scripts as having already been evaluated - function setGlobalEval(elems, refElements) { - var elem, - i = 0; - for (; - (elem = elems[i]) != null; i++) { - jQuery._data(elem, "globalEval", !refElements || jQuery._data(refElements[i], "globalEval")); - } - } - - function cloneCopyEvent(src, dest) { - - if (dest.nodeType !== 1 || !jQuery.hasData(src)) { - return; - } - - var type, i, l, - oldData = jQuery._data(src), - curData = jQuery._data(dest, oldData), - events = oldData.events; - - if (events) { - delete curData.handle; - curData.events = {}; - - for (type in events) { - for (i = 0, l = events[type].length; i < l; i++) { - jQuery.event.add(dest, type, events[type][i]); - } - } - } - - // make the cloned public data object a copy from the original - if (curData.data) { - curData.data = jQuery.extend({}, curData.data); - } - } - - function fixCloneNodeIssues(src, dest) { - var nodeName, e, data; - - // We do not need to do anything for non-Elements - if (dest.nodeType !== 1) { - return; - } - - nodeName = dest.nodeName.toLowerCase(); - - // IE6-8 copies events bound via attachEvent when using cloneNode. - if (!support.noCloneEvent && dest[jQuery.expando]) { - data = jQuery._data(dest); - - for (e in data.events) { - jQuery.removeEvent(dest, e, data.handle); - } - - // Event data gets referenced instead of copied if the expando gets copied too - dest.removeAttribute(jQuery.expando); - } - - // IE blanks contents when cloning scripts, and tries to evaluate newly-set text - if (nodeName === "script" && dest.text !== src.text) { - disableScript(dest).text = src.text; - restoreScript(dest); - - // IE6-10 improperly clones children of object elements using classid. - // IE10 throws NoModificationAllowedError if parent is null, #12132. - } else if (nodeName === "object") { - if (dest.parentNode) { - dest.outerHTML = src.outerHTML; - } - - // This path appears unavoidable for IE9. When cloning an object - // element in IE9, the outerHTML strategy above is not sufficient. - // If the src has innerHTML and the destination does not, - // copy the src.innerHTML into the dest.innerHTML. #10324 - if (support.html5Clone && (src.innerHTML && !jQuery.trim(dest.innerHTML))) { - dest.innerHTML = src.innerHTML; - } - - } else if (nodeName === "input" && rcheckableType.test(src.type)) { - // IE6-8 fails to persist the checked state of a cloned checkbox - // or radio button. Worse, IE6-7 fail to give the cloned element - // a checked appearance if the defaultChecked value isn't also set - - dest.defaultChecked = dest.checked = src.checked; - - // IE6-7 get confused and end up setting the value of a cloned - // checkbox/radio button to an empty string instead of "on" - if (dest.value !== src.value) { - dest.value = src.value; - } - - // IE6-8 fails to return the selected option to the default selected - // state when cloning options - } else if (nodeName === "option") { - dest.defaultSelected = dest.selected = src.defaultSelected; - - // IE6-8 fails to set the defaultValue to the correct value when - // cloning other types of input fields - } else if (nodeName === "input" || nodeName === "textarea") { - dest.defaultValue = src.defaultValue; - } - } - - jQuery.extend({ - clone: function(elem, dataAndEvents, deepDataAndEvents) { - var destElements, node, clone, i, srcElements, - inPage = jQuery.contains(elem.ownerDocument, elem); - - if (support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test("<" + elem.nodeName + ">")) { - clone = elem.cloneNode(true); - - // IE<=8 does not properly clone detached, unknown element nodes - } else { - fragmentDiv.innerHTML = elem.outerHTML; - fragmentDiv.removeChild(clone = fragmentDiv.firstChild); - } - - if ((!support.noCloneEvent || !support.noCloneChecked) && (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem)) { - - // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 - destElements = getAll(clone); - srcElements = getAll(elem); - - // Fix all IE cloning issues - for (i = 0; - (node = srcElements[i]) != null; ++i) { - // Ensure that the destination node is not null; Fixes #9587 - if (destElements[i]) { - fixCloneNodeIssues(node, destElements[i]); - } - } - } - - // Copy the events from the original to the clone - if (dataAndEvents) { - if (deepDataAndEvents) { - srcElements = srcElements || getAll(elem); - destElements = destElements || getAll(clone); - - for (i = 0; - (node = srcElements[i]) != null; i++) { - cloneCopyEvent(node, destElements[i]); - } - } else { - cloneCopyEvent(elem, clone); - } - } - - // Preserve script evaluation history - destElements = getAll(clone, "script"); - if (destElements.length > 0) { - setGlobalEval(destElements, !inPage && getAll(elem, "script")); - } - - destElements = srcElements = node = null; - - // Return the cloned set - return clone; - }, - - buildFragment: function(elems, context, scripts, selection) { - var j, elem, contains, - tmp, tag, tbody, wrap, - l = elems.length, - - // Ensure a safe fragment - safe = createSafeFragment(context), - - nodes = [], - i = 0; - - for (; i < l; i++) { - elem = elems[i]; - - if (elem || elem === 0) { - - // Add nodes directly - if (jQuery.type(elem) === "object") { - jQuery.merge(nodes, elem.nodeType ? [elem] : elem); - - // Convert non-html into a text node - } else if (!rhtml.test(elem)) { - nodes.push(context.createTextNode(elem)); - - // Convert html into DOM nodes - } else { - tmp = tmp || safe.appendChild(context.createElement("div")); - - // Deserialize a standard representation - tag = (rtagName.exec(elem) || ["", ""])[1].toLowerCase(); - wrap = wrapMap[tag] || wrapMap._default; - - tmp.innerHTML = wrap[1] + elem.replace(rxhtmlTag, "<$1>") + wrap[2]; - - // Descend through wrappers to the right content - j = wrap[0]; - while (j--) { - tmp = tmp.lastChild; - } - - // Manually add leading whitespace removed by IE - if (!support.leadingWhitespace && rleadingWhitespace.test(elem)) { - nodes.push(context.createTextNode(rleadingWhitespace.exec(elem)[0])); - } - - // Remove IE's autoinserted from table fragments - if (!support.tbody) { - - // String was a , *may* have spurious - elem = tag === "table" && !rtbody.test(elem) ? tmp.firstChild : - - // String was a bare or - wrap[1] === "
" && !rtbody.test(elem) ? tmp : 0; - - j = elem && elem.childNodes.length; - while (j--) { - if (jQuery.nodeName((tbody = elem.childNodes[j]), "tbody") && !tbody.childNodes.length) { - elem.removeChild(tbody); - } - } - } - - jQuery.merge(nodes, tmp.childNodes); - - // Fix #12392 for WebKit and IE > 9 - tmp.textContent = ""; - - // Fix #12392 for oldIE - while (tmp.firstChild) { - tmp.removeChild(tmp.firstChild); - } - - // Remember the top-level container for proper cleanup - tmp = safe.lastChild; - } - } - } - - // Fix #11356: Clear elements from fragment - if (tmp) { - safe.removeChild(tmp); - } - - // Reset defaultChecked for any radios and checkboxes - // about to be appended to the DOM in IE 6/7 (#8060) - if (!support.appendChecked) { - jQuery.grep(getAll(nodes, "input"), fixDefaultChecked); - } - - i = 0; - while ((elem = nodes[i++])) { - - // #4087 - If origin and destination elements are the same, and this is - // that element, do not do anything - if (selection && jQuery.inArray(elem, selection) !== -1) { - continue; - } - - contains = jQuery.contains(elem.ownerDocument, elem); - - // Append to fragment - tmp = getAll(safe.appendChild(elem), "script"); - - // Preserve script evaluation history - if (contains) { - setGlobalEval(tmp); - } - - // Capture executables - if (scripts) { - j = 0; - while ((elem = tmp[j++])) { - if (rscriptType.test(elem.type || "")) { - scripts.push(elem); - } - } - } - } - - tmp = null; - - return safe; - }, - - cleanData: function(elems, /* internal */ acceptData) { - var elem, type, id, data, - i = 0, - internalKey = jQuery.expando, - cache = jQuery.cache, - deleteExpando = support.deleteExpando, - special = jQuery.event.special; - - for (; - (elem = elems[i]) != null; i++) { - if (acceptData || jQuery.acceptData(elem)) { - - id = elem[internalKey]; - data = id && cache[id]; - - if (data) { - if (data.events) { - for (type in data.events) { - if (special[type]) { - jQuery.event.remove(elem, type); - - // This is a shortcut to avoid jQuery.event.remove's overhead - } else { - jQuery.removeEvent(elem, type, data.handle); - } - } - } - - // Remove cache only if it was not already removed by jQuery.event.remove - if (cache[id]) { - - delete cache[id]; - - // IE does not allow us to delete expando properties from nodes, - // nor does it have a removeAttribute function on Document nodes; - // we must handle all of these cases - if (deleteExpando) { - delete elem[internalKey]; - - } else if (typeof elem.removeAttribute !== strundefined) { - elem.removeAttribute(internalKey); - - } else { - elem[internalKey] = null; - } - - deletedIds.push(id); - } - } - } - } - } - }); - - jQuery.fn.extend({ - text: function(value) { - return access(this, function(value) { - return value === undefined ? jQuery.text(this) : this.empty().append((this[0] && this[0].ownerDocument || document).createTextNode(value)); - }, null, value, arguments.length); - }, - - append: function() { - return this.domManip(arguments, function(elem) { - if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) { - var target = manipulationTarget(this, elem); - target.appendChild(elem); - } - }); - }, - - prepend: function() { - return this.domManip(arguments, function(elem) { - if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) { - var target = manipulationTarget(this, elem); - target.insertBefore(elem, target.firstChild); - } - }); - }, - - before: function() { - return this.domManip(arguments, function(elem) { - if (this.parentNode) { - this.parentNode.insertBefore(elem, this); - } - }); - }, - - after: function() { - return this.domManip(arguments, function(elem) { - if (this.parentNode) { - this.parentNode.insertBefore(elem, this.nextSibling); - } - }); - }, - - remove: function(selector, keepData /* Internal Use Only */ ) { - var elem, - elems = selector ? jQuery.filter(selector, this) : this, - i = 0; - - for (; - (elem = elems[i]) != null; i++) { - - if (!keepData && elem.nodeType === 1) { - jQuery.cleanData(getAll(elem)); - } - - if (elem.parentNode) { - if (keepData && jQuery.contains(elem.ownerDocument, elem)) { - setGlobalEval(getAll(elem, "script")); - } - elem.parentNode.removeChild(elem); - } - } - - return this; - }, - - empty: function() { - var elem, - i = 0; - - for (; - (elem = this[i]) != null; i++) { - // Remove element nodes and prevent memory leaks - if (elem.nodeType === 1) { - jQuery.cleanData(getAll(elem, false)); - } - - // Remove any remaining nodes - while (elem.firstChild) { - elem.removeChild(elem.firstChild); - } - - // If this is a select, ensure that it displays empty (#12336) - // Support: IE<9 - if (elem.options && jQuery.nodeName(elem, "select")) { - elem.options.length = 0; - } - } - - return this; - }, - - clone: function(dataAndEvents, deepDataAndEvents) { - dataAndEvents = dataAndEvents == null ? false : dataAndEvents; - deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; - - return this.map(function() { - return jQuery.clone(this, dataAndEvents, deepDataAndEvents); - }); - }, - - html: function(value) { - return access(this, function(value) { - var elem = this[0] || {}, - i = 0, - l = this.length; - - if (value === undefined) { - return elem.nodeType === 1 ? elem.innerHTML.replace(rinlinejQuery, "") : undefined; - } - - // See if we can take a shortcut and just use innerHTML - if (typeof value === "string" && !rnoInnerhtml.test(value) && (support.htmlSerialize || !rnoshimcache.test(value)) && (support.leadingWhitespace || !rleadingWhitespace.test(value)) && !wrapMap[(rtagName.exec(value) || ["", ""])[1].toLowerCase()]) { - - value = value.replace(rxhtmlTag, "<$1>"); - - try { - for (; i < l; i++) { - // Remove element nodes and prevent memory leaks - elem = this[i] || {}; - if (elem.nodeType === 1) { - jQuery.cleanData(getAll(elem, false)); - elem.innerHTML = value; - } - } - - elem = 0; - - // If using innerHTML throws an exception, use the fallback method - } catch (e) {} - } - - if (elem) { - this.empty().append(value); - } - }, null, value, arguments.length); - }, - - replaceWith: function() { - var arg = arguments[0]; - - // Make the changes, replacing each context element with the new content - this.domManip(arguments, function(elem) { - arg = this.parentNode; - - jQuery.cleanData(getAll(this)); - - if (arg) { - arg.replaceChild(elem, this); - } - }); - - // Force removal if there was no new content (e.g., from empty arguments) - return arg && (arg.length || arg.nodeType) ? this : this.remove(); - }, - - detach: function(selector) { - return this.remove(selector, true); - }, - - domManip: function(args, callback) { - - // Flatten any nested arrays - args = concat.apply([], args); - - var first, node, hasScripts, - scripts, doc, fragment, - i = 0, - l = this.length, - set = this, - iNoClone = l - 1, - value = args[0], - isFunction = jQuery.isFunction(value); - - // We can't cloneNode fragments that contain checked, in WebKit - if (isFunction || (l > 1 && typeof value === "string" && !support.checkClone && rchecked.test(value))) { - return this.each(function(index) { - var self = set.eq(index); - if (isFunction) { - args[0] = value.call(this, index, self.html()); - } - self.domManip(args, callback); - }); - } - - if (l) { - fragment = jQuery.buildFragment(args, this[0].ownerDocument, false, this); - first = fragment.firstChild; - - if (fragment.childNodes.length === 1) { - fragment = first; - } - - if (first) { - scripts = jQuery.map(getAll(fragment, "script"), disableScript); - hasScripts = scripts.length; - - // Use the original fragment for the last item instead of the first because it can end up - // being emptied incorrectly in certain situations (#8070). - for (; i < l; i++) { - node = fragment; - - if (i !== iNoClone) { - node = jQuery.clone(node, true, true); - - // Keep references to cloned scripts for later restoration - if (hasScripts) { - jQuery.merge(scripts, getAll(node, "script")); - } - } - - callback.call(this[i], node, i); - } - - if (hasScripts) { - doc = scripts[scripts.length - 1].ownerDocument; - - // Reenable scripts - jQuery.map(scripts, restoreScript); - - // Evaluate executable scripts on first document insertion - for (i = 0; i < hasScripts; i++) { - node = scripts[i]; - if (rscriptType.test(node.type || "") && !jQuery._data(node, "globalEval") && jQuery.contains(doc, node)) { - - if (node.src) { - // Optional AJAX dependency, but won't run scripts if not present - if (jQuery._evalUrl) { - jQuery._evalUrl(node.src); - } - } else { - jQuery.globalEval((node.text || node.textContent || node.innerHTML || "").replace(rcleanScript, "")); - } - } - } - } - - // Fix #11809: Avoid leaking memory - fragment = first = null; - } - } - - return this; - } - }); - - jQuery.each({ - appendTo: "append", - prependTo: "prepend", - insertBefore: "before", - insertAfter: "after", - replaceAll: "replaceWith" - }, function(name, original) { - jQuery.fn[name] = function(selector) { - var elems, - i = 0, - ret = [], - insert = jQuery(selector), - last = insert.length - 1; - - for (; i <= last; i++) { - elems = i === last ? this : this.clone(true); - jQuery(insert[i])[original](elems); - - // Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get() - push.apply(ret, elems.get()); - } - - return this.pushStack(ret); - }; - }); - - - var iframe, - elemdisplay = {}; - - /** - * Retrieve the actual display of a element - * @param {String} name nodeName of the element - * @param {Object} doc Document object - */ - // Called only from within defaultDisplay - function actualDisplay(name, doc) { - var style, - elem = jQuery(doc.createElement(name)).appendTo(doc.body), - - // getDefaultComputedStyle might be reliably used only on attached element - display = window.getDefaultComputedStyle && (style = window.getDefaultComputedStyle(elem[0])) ? - - // Use of this method is a temporary fix (more like optmization) until something better comes along, - // since it was removed from specification and supported only in FF - style.display : jQuery.css(elem[0], "display"); - - // We don't have any data stored on the element, - // so use "detach" method as fast way to get rid of the element - elem.detach(); - - return display; - } - - /** - * Try to determine the default display value of an element - * @param {String} nodeName - */ - function defaultDisplay(nodeName) { - var doc = document, - display = elemdisplay[nodeName]; - - if (!display) { - display = actualDisplay(nodeName, doc); - - // If the simple way fails, read from inside an iframe - if (display === "none" || !display) { - - // Use the already-created iframe if possible - iframe = (iframe || jQuery("